← Назад к вопросам

Какая разница между позитивным и негативным тестированием?

1.3 Junior🔥 251 комментариев
#Теория тестирования#Техники тест-дизайна

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Позитивное vs Негативное тестирование

Это две фундаментальные стратегии тестирования, которые обеспечивают полное покрытие и отлавливают разные типы дефектов.

Позитивное тестирование (Positive Testing)

Определение: Проверка, что приложение работает как ожидается при корректных входных данных и нормальных условиях.

Цель:

  • Убедиться, что функция работает по спецификации
  • Нормальный пользовательский сценарий
  • "Счастливый путь" (Happy Path)

Примеры для формы регистрации:

Тест: Регистрация с корректными данными
Данные:
  Email: user@example.com
  Password: SecurePass123!
  Confirm Password: SecurePass123!
  Terms: Checked

Ожидаемый результат: Пользователь успешно зарегистрирован, перенаправлен на dashboard
Тест: Вход с правильными учётными данными
Данные:
  Email: user@example.com
  Password: SecurePass123!

Ожидаемый результат: Пользователь залогинен, видит свои данные
Тест: Добавление товара в корзину
Действие: Нажать "Add to Cart"
Ожидаемый результат: Товар добавлен, счётчик корзины увеличился

Негативное тестирование (Negative Testing)

Определение: Проверка, что приложение корректно обрабатывает ошибки при неправильных входных данных или исключительных ситуациях.

Цель:

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

Примеры для формы регистрации:

Тест: Регистрация с пустым email
Данные:
  Email: [пусто]
  Password: SecurePass123!
  Confirm Password: SecurePass123!

Ожидаемый результат: Показана ошибка "Email is required", регистрация не выполнена
Тест: Регистрация с некорректным email
Данные:
  Email: user@domain (без .com)
  Password: SecurePass123!

Ожидаемый результат: Ошибка "Invalid email format"
Тест: Вход с неправильным паролем
Данные:
  Email: user@example.com
  Password: WrongPassword

Ожидаемый результат: Ошибка "Invalid credentials", пользователь НЕ залогинен
Тест: Пароли не совпадают при регистрации
Данные:
  Password: SecurePass123!
  Confirm Password: DifferentPass456!

Ожидаемый результат: Ошибка "Passwords do not match"
Тест: Регистрация с очень длинным email
Данные:
  Email: verylongemailaddress@verylongdomainname.com...(1000+ символов)

Ожидаемый результат: Ошибка валидации или максимальная длина ограничена
Тест: Добавление в корзину при отсутствии товара (удалён другим пользователем)
Действие: Нажать "Add to Cart" для товара, который только что кончился
Ожидаемый результат: Понятная ошибка "Item out of stock", не молчаливое падение

Таблица сравнения

АспектПозитивноеНегативное
Входные данныеКорректныеНекорректные
СценарийНормальное использованиеИсключительные ситуации
ЦельФункциональностьОбработка ошибок
ПримерыВалидные данныеПусто, спецсимволы, граница
ОжидаемоеУспехGraceful failure
Покрытие"Счастливый путь"Все остальное

Практический процесс тестирования

Этап 1: Позитивное тестирование

  • Убеждаемся, что функция работает
  • Тестируем "счастливый путь"
  • Если падает — критичный баг

Этап 2: Негативное тестирование

  • Пытаемся сломать функцию
  • Отправляем плохие данные
  • Проверяем обработку ошибок

Этап 3: Пограничное тестирование (Boundary)

  • Значения на границах: 0, -1, max value, пустая строка

Примеры из реальной жизни

Позитивное:

  • Купить товар с корректной карточкой
  • Залогиниться с правильным паролем
  • Скачать файл с сервера

Негативное:

  • Попытка купить с неполными данными
  • Вход с несуществующей почтой
  • Скачивание несуществующего файла
  • SQL injection попытка в поле поиска
  • XSS попытка в комментарии

Почему оба важны

Только позитивное = опасно:

  • Не знаем, как приложение обрабатывает ошибки
  • Пользователь может столкнуться с крашем
  • Безопасность под вопросом

Только негативное = недостаточно:

  • Знаем, как система падает, но не знаем, работает ли нормально
  • Напрасные разработки

Вывод

Полное тестирование требует ОБОИХ подходов. Позитивное проверяет функционал, негативное обеспечивает надежность и безопасность приложения.