В чем разница между позитивным и негативным тестированием?

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

Ответ

Позитивное и негативное тестирование — это два взаимодополняющих подхода, отличающихся целью и типом входных данных.

Критерий Позитивное тестирование Негативное тестирование
Цель Проверить, что система корректно выполняет заявленные функции при валидных данных. Проверить, что система корректно обрабатывает ошибки и не ломается при невалидных данных или действиях.
Фокус Проверка «пути успеха» (happy path). Проверка граничных условий, исключений и нестандартного поведения.
Входные данные Данные, соответствующие спецификации. Данные вне спецификации: пустые значения, неверные форматы, превышение лимитов.

Примеры:

  • Позитивный тест для функции логина: Ввод зарегистрированного email и правильного пароля должен приводить к успешной авторизации.

    # Pytest пример позитивного теста
    def test_positive_login(valid_user_credentials):
        result = authenticate(valid_user_credentials)
        assert result.is_success() == True
        assert result.get_session() is not None
  • Негативный тест для функции логина: Ввод неправильного пароля должен возвращать понятную ошибку без создания сессии.

    # Pytest пример негативного теста
    def test_negative_login_wrong_password(valid_username):
        result = authenticate(username=valid_username, password="wrong")
        assert result.is_success() == False
        assert "Invalid credentials" in result.get_error_message()
        assert result.get_session() is None  # Важно: сессия не создана

Вывод: Позитивное тестирование подтверждает, что система работает. Негативное тестирование подтверждает, что система стабильна и защищена от ошибочных сценариев. Оба типа необходимы для всесторонней проверки.