Что такое sanity-тестирование и как оно отличается от smoke-тестирования?

«Что такое sanity-тестирование и как оно отличается от smoke-тестирования?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Sanity-тестирование (здравомыслия) — это узконаправленная, неглубокая проверка конкретной функции или исправления после сборки, чтобы убедиться, что внесенные изменения работают как задумано, без критических дефектов. Его цель — подтвердить «работоспособность» конкретной области, а не всей системы.

Ключевые отличия от Smoke-тестирования: Критерий Smoke-тестирование Sanity-тестирование
Цель Проверить стабильность сборки для дальнейшего тестирования. Проверить корректность работы конкретного исправления или функции.
Глубина Поверхностное, охватывает основные сквозные сценарии. Узкое и сфокусированное на измененной области.
Объем Широкий, охватывает ключевые модули системы. Очень ограниченный, только затронутые изменениями компоненты.
Когда проводится Сразу после получения новой сборки. После smoke-тестов, когда нужно проверить конкретный багфикс или фичу.

Пример сценария sanity-теста после исправления бага в форме логина:

def test_login_sanity_after_fix():
    # 1. Основной хэппи-путь
    assert login("valid_user", "correct_password") == SUCCESS

    # 2. Проверка конкретного исправленного бага: блокировка после N попыток
    for _ in range(MAX_ATTEMPTS - 1):
        assert login("valid_user", "wrong_password") == INVALID_CREDENTIALS
    # N-ая попытка должна вызвать блокировку
    assert login("valid_user", "wrong_password") == ACCOUNT_LOCKED

    # 3. Смежная базовая функция: кнопка "Забыли пароль?"
    assert is_clickable("forgot_password_link") == True

Sanity-тестирование — это быстрая проверка «логичности» изменений, а не полная регрессия.