Ответ
Негативный тест-кейс — это тест, который проверяет, как система ведет себя при некорректных, неожиданных или недопустимых входных данных или действиях пользователя. Цель — убедиться, что система обрабатывает ошибки корректно, а не ломается.
Почему это важно? Повышает надежность и отказоустойчивость системы, проверяя граничные условия и обработку исключений.
Примеры негативных тест-кейсов:
- Ввод некорректных данных:
- Передача строки в поле, ожидающее число.
- Ввод пароля длиннее максимально допустимого.
- Загрузка файла недопустимого формата.
- Нарушение бизнес-логики:
- Попытка добавить товар с отрицательным количеством в корзину.
- Ввод даты рождения из будущего.
- Проверка граничных значений:
- Ввод пустой строки в обязательное поле.
- Передача
nullилиundefinedв параметры API.
Структура негативного тест-кейса:
- Предусловие: Система в определенном состоянии.
- Действие: Выполнение некорректной операции.
- Ожидаемый результат:
- Система должна отобразить понятное сообщение об ошибке.
- Система не должна падать (не должно быть необработанных исключений).
- Данные не должны быть повреждены.
- Система должна оставаться в стабильном состоянии.
Пример для 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вместо данных. Он должен ответить по-взрослому, а не сдохнуть молча.
Как это выглядит, когда ты его пишешь:
- Предусловие: Система жива, дышит, вроде работает. Всё как обычно.
- Действие: Ты совершаешь акт ебанистики. Делаешь то, за что в нормальном мире по рукам бьют.
- Ожидаемый результат (здесь главное не проебаться):
- Система должна выдать понятную ошибку, а не код на клингонском. «Неверный формат почты» — ок. «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 и полная тишина.