Что такое негативный тест-кейс в тестировании ПО?

Ответ

Негативный тест-кейс — это тест, который проверяет, как система ведет себя при некорректных, неожиданных или недопустимых входных данных или действиях пользователя. Цель — убедиться, что система обрабатывает ошибки корректно, а не ломается.

Почему это важно? Повышает надежность и отказоустойчивость системы, проверяя граничные условия и обработку исключений.

Примеры негативных тест-кейсов:

  • Ввод некорректных данных:
    • Передача строки в поле, ожидающее число.
    • Ввод пароля длиннее максимально допустимого.
    • Загрузка файла недопустимого формата.
  • Нарушение бизнес-логики:
    • Попытка добавить товар с отрицательным количеством в корзину.
    • Ввод даты рождения из будущего.
  • Проверка граничных значений:
    • Ввод пустой строки в обязательное поле.
    • Передача null или undefined в параметры API.

Структура негативного тест-кейса:

  1. Предусловие: Система в определенном состоянии.
  2. Действие: Выполнение некорректной операции.
  3. Ожидаемый результат:
    • Система должна отобразить понятное сообщение об ошибке.
    • Система не должна падать (не должно быть необработанных исключений).
    • Данные не должны быть повреждены.
    • Система должна оставаться в стабильном состоянии.

Пример для API:

POST /api/v1/users
Content-Type: application/json

{
  "email": "not-an-email", // Некорректный формат email
  "age": -5 // Недопустимое отрицательное значение
}

Ожидаемый ответ: Код состояния HTTP 400 Bad Request с телом, содержащим детали ошибки для каждого поля.

Ответ 18+ 🔞

А, так вот ты как, негативные тесты, да? Ну это же самое интересное, блядь! Это когда ты, сука, не как нормальный пользователь, а как самый ебучий распиздяй на планете подходишь к системе и начинаешь её долбить чем попало и как попало. Цель — не сломать, а посмотреть, как она будет орать и плеваться, но при этом не развалится в пизду.

Зачем это, нахуй, нужно? Да чтобы система не была, как та мартышлюшка, которая от одного кривого взгляда накрывается медным тазом. Надо проверить, что она ошибки жуёт, переваривает и выплёвывает внятное «иди нахуй, пользователь», а не падает с дикой ошибкой в логах, от которой у админов волосы дыбом встают.

Примеры, где мы будем выёбываться:

  • Суём не туда, куда просят:
    • В поле «возраст» пишешь «я дед инсайд». Ждём, что система не попытается это в число превратить и не взорвётся.
    • В пароль вбиваешь строку длиннее, чем твоя невезучесть в жизни. Ожидаем, что просто не пропустит, а не отправит в базу полгигабайта текста.
    • Качаешь на аватарку исполняемый файл .exe. Система должна сказать «не, мудила, так не пойдёт», а не запустить его у себя на сервере.
  • Ломаем логику, как дрова:
    • Пытаешься купить минус три айфона. Бизнес-логика должна охуеть и спросить: «Ты мне ещё и денег должен?».
    • Указываешь дату рождения «01.01.3025». Система должна понять, что ты или путешественник во времени, или просто еблан.
  • Долбим по границам, как дятел:
    • Оставляешь все поля пустыми и жмёшь «Отправить». Ждём вменяемой ошибки, а не белого экрана с криком ядра.
    • Шлёшь в API null вместо данных. Он должен ответить по-взрослому, а не сдохнуть молча.

Как это выглядит, когда ты его пишешь:

  1. Предусловие: Система жива, дышит, вроде работает. Всё как обычно.
  2. Действие: Ты совершаешь акт ебанистики. Делаешь то, за что в нормальном мире по рукам бьют.
  3. Ожидаемый результат (здесь главное не проебаться):
    • Система должна выдать понятную ошибку, а не код на клингонском. «Неверный формат почты» — ок. «Internal server error: undefined is not an object» — пиздец.
    • Система не должна упасть в нокаут. Ошибка обработана, исключение поймано, лог написан, жизнь продолжается.
    • Данные не должны быть ебнуты. После твоей выходки база не должна содержать пользователя с возрастом -1 и почтой undefined.
    • Всё должно остаться в рабочем состоянии. Как после шторма — мокро, но корабль на плаву.

Вот, смотри, как мы API потроллим:

POST /api/v1/users
Content-Type: application/json

{
  "email": "ya.ne.pochta", // Это ж не почта, это хуйня какая-то
  "age": -5 // Мне минус пять лет, я из будущего, блядь
}

Что мы ждём в ответ, если разработчики не совсем мудаки: Код состояния 400 Bad Request и тело ответа, где по полям расписано, что мы — ебланы. Типа: {"errors": {"email": "Invalid format", "age": "Must be positive"}. А не 500 Internal Server Error и полная тишина.