Ответ
Позитивное (positive) и негативное (negative) тестирование — это две взаимодополняющие техники тест-дизайна, которые проверяют систему на корректных и некорректных данных соответственно.
| Критерий | Позитивное тестирование | Негативное тестирование |
|---|---|---|
| Цель | Проверить, что система работает как ожидается на валидных входных данных. | Проверить, что система корректно обрабатывает ошибки на невалидных входных данных. |
| Данные | Данные, соответствующие спецификации (happy path). | Данные вне спецификации: неверный тип, формат, граничные значения, пустые значения. |
| Ожидаемый результат | Успешное выполнение функции. | Предсказуемый отказ: сообщение об ошибке, исключение, значение по умолчанию. |
Пример на Python:
def validate_age(age: str) -> bool:
# Функция ожидает строку с числом от 0 до 150
try:
age_int = int(age)
return 0 <= age_int <= 150
except ValueError:
return False
# ПОЗИТИВНЫЙ тест (валидные данные)
assert validate_age("30") == True # Ожидаем успех
# НЕГАТИВНЫЙ тест (невалидные данные)
assert validate_age("abc") == False # Не число
assert validate_age("-5") == False # Ниже границы
assert validate_age("200") == False # Выше границы
Зачем разделять? Это обеспечивает полное покрытие требований, выявляет уязвимости в обработке ошибок и повышает общую надёжность и отказоустойчивость системы.