Ответ
Негативный результат (Negative Testing Result) — это ожидаемое и корректное поведение системы при обработке невалидных, ошибочных или граничных входных данных или выполнении операций в нештатных условиях. Цель — подтвердить, что система не ломается, а правильно идентифицирует и обрабатывает ошибки.
Ключевая идея: Негативный результат — это успех теста, а не баг. Он демонстрирует, что механизмы обработки ошибок работают.
| Примеры негативных тестов и их ожидаемых результатов: | Тестовый сценарий (Невалидный ввод) | Ожидаемый негативный результат (Успех теста) |
|---|---|---|
| Ввод букв в поле "Возраст" | Отображение понятного сообщения об ошибке валидации. | |
| Попытка деления на ноль | Возврат ошибки ZeroDivisionError или специального значения (Infinity/NaN). |
|
| Отправка пустого обязательного поля | Блокировка отправки формы с подсветкой проблемного поля. | |
| Передача SQL-инъекции в поле поиска | Безопасная обработка запроса, инъекция не выполняется. | |
| Загрузка файла недопустимого формата | Сообщение "Формат файла не поддерживается". |
Пример кода (Python):
# Функция для тестирования
def process_positive_number(value):
"""Обрабатывает только положительные числа."""
if not isinstance(value, (int, float)):
raise TypeError("Ожидается число.")
if value <= 0:
raise ValueError("Число должно быть положительным.")
return value * 2
# НЕГАТИВНЫЕ ТЕСТ-КЕЙСЫ (ожидается исключение — это успех)
test_cases = [
("abc", TypeError), # Не число
(-5, ValueError), # Отрицательное число
(0, ValueError), # Ноль
(None, TypeError), # None
]
for input_data, expected_exception in test_cases:
try:
result = process_positive_number(input_data)
print(f"ТЕСТ ПРОВАЛЕН для {input_data}. Ожидалось {expected_exception}, но получен результат {result}.")
except expected_exception as e:
print(f"ТЕСТ ПРОЙДЕН для {input_data}. Поймано ожидаемое исключение: {type(e).__name__} - {e}")
except Exception as e:
print(f"ТЕСТ ПРОВАЛЕН для {input_data}. Поймано неожиданное исключение: {type(e).__name__} - {e}")
Отличие от позитивного тестирования:
- Позитивное тестирование: Проверяет, что система делает то, что должна, при корректных данных.
- Негативное тестирование: Проверяет, что система не делает того, чего не должна, и корректно реагирует на ошибки.
Важность: Негативное тестирование критично для обеспечения отказоустойчивости, безопасности и качества пользовательского опыта.