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

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

Ответ

Различие лежит в цели тестирования и ожидаемом результате.

Позитивный сценарий (Positive Testing):

  • Цель: Проверить, что система корректно работает при валидных входных данных и ожидаемом поведении пользователя.
  • Ожидаемый результат: Система выполняет целевое действие успешно ("счастливый путь").
  • Пример: Успешная авторизация с правильным логином и паролем.

Негативный сценарий (Negative Testing):

  • Цель: Проверить устойчивость системы и корректность обработки ошибок при невалидных данных или нестандартных/ошибочных действиях.
  • Ожидаемый результат: Система корректно обрабатывает ошибку — выдает понятное сообщение, не падает, сохраняет стабильность.
  • Пример: Попытка авторизации с неправильным паролем, пустыми полями, вводом SQL-инъекции в поле логина.

Пример на Python (pytest):

def login(username: str, password: str) -> bool | str:
    # Упрощенная логика
    if username == "user@test.com" and password == "Secret123":
        return True
    else:
        return "Invalid credentials"

# Позитивный тест
def test_positive_login():
    result = login("user@test.com", "Secret123")
    assert result is True  # Ожидаем успех

# Негативный тест
def test_negative_login_wrong_password():
    result = login("user@test.com", "WrongPass")
    assert result == "Invalid credentials"  # Ожидаем сообщение об ошибке

Вывод: Позитивные тесты проверяют, что система делает то, что должна. Негативные тесты проверяют, что система не ломается и правильно реагирует на то, чего делать не должна.