Определение: Поверхностная проверка стабильности сборки перед началом глубокого тестирования.
Ключевые характеристики:
Пример сценария:
Feature: Smoke Test для интернет-магазина
Scenario: Основной поток покупки
Given Пользователь открыл главную страницу
When Добавляет товар в корзину
And Переходит к оформлению заказа
Then Система позволяет ввести платежные данные
Когда выполняется:
Определение: Узконаправленная проверка исправленных дефектов или конкретной функциональности.
Ключевые характеристики:
Пример сценария:
def test_fixed_login_sanity():
# Проверка только что исправленного бага с логином
result = login("user@test.com", "new_password!")
assert result.status == SUCCESS
assert result.session.is_valid()
Когда выполняется:
Критерий | Smoke Testing | Sanity Testing |
---|---|---|
Цель | Проверить стабильность сборки | Убедиться в работоспособности конкретных изменений |
Глубина | Поверхностная | Умеренная |
Объем | Широкий (основные функции) | Узкий (конкретные изменения) |
Время | 15-30 минут | 1-2 часа |
Частота | После каждой сборки | По необходимости |
Автоматизация | Часто автоматизировано | Чаще ручное |
Smoke тест для API:
// Проверка доступности основных эндпоинтов
describe('API Smoke Test', () => {
['/users', '/products', '/orders'].forEach(endpoint => {
it(`GET ${endpoint} returns 200`, async () => {
const res = await request(app).get(endpoint);
expect(res.statusCode).toBe(200);
});
});
});
Sanity тест для исправления:
// Проверка только что исправленного бага с кодировкой
@Test
public void testFixedEncodingSanity() {
String response = api.getProductDescription(123);
assertFalse(response.contains("’")); // Проверка на отсутствие артефактов кодировки
}
Используйте Smoke когда нужно:
Применяйте Sanity когда нужно:
Smoke — это "быстрая проверка жизнеспособности":
Sanity — это "точечная проверка разумности":
Оптимальная стратегия: