Критерии хорошего тест-кейса
1. Атомарность – проверяет ровно одно условие, функциональность или сценарий. Смешивание проверок усложняет локализацию дефекта. 2. Воспроизводимость – любой другой инженер (даже без контекста) должен выполнить тест-кейс и получить тот же результат. Это требует абсолютной конкретики: «нажать кнопку «Сохранить»», а не «сохранить данные». 3. Полнота, но без избыточности – наличие всех обязательных полей: · Уникальный ID · Название (суть проверки) · Предусловия (состояние системы, данные, окружение) · Шаги (с указанием данных и действий) · Ожидаемый результат (что именно должно произойти после каждого шага) · Постусловия (если требуется очистка или возврат системы) 4. Однозначность – нет двусмысленных формулировок («проверить, что всё работает», «быстро загружается»). Используйте точные критерии: «время отклика < 2 секунд», «поле ввода отображается с рамкой зелёного цвета». 5. Актуальность – соответствует текущей версии продукта и требованиям. Устаревшие тест-кейсы удаляются или обновляются. 6. Независимость – не должен требовать обязательного выполнения других тест-кейсов перед собой (если иное не оговорено в предусловиях). При последовательных проверках – явно указывать зависимости. 7. Практическая ценность – покрывает рискованные, граничные, негативные сценарии, а не только счастливый путь. Баг чаще находят там, где ожидается исключение. 8. Пригодность для автоматизации (если нужно) – отсутствие привязки к GUI там, где это не критично; использование стабильных локаторов; минимум случайных действий («подождать 3 секунды» → лучше ожидание элемента). 9. Классифицируемость – наличие атрибутов: приоритет (Smoke / High / Medium / Low), тип (позитивный/негативный/на совместимость/производительность и т.д.), связанные требования. 10. Поддерживаемость – лёгкость внесения изменений. Это достигается модульностью, отсутствием копирования одинаковых шагов (используйте предусловия или общие шаги).
Пример плохого тест-кейса:
«Зайти на сайт и проверить логин».
Хороший:
ID: LOG-01 Название: Позитивная проверка входа с валидным email/паролем Предусловия: Браузер Chrome 120, чистая сессия, пользователь test@example.com зарегистрирован с паролем Qwerty123 Шаги:
1. Открыть страницу /login 2. В поле «Email» ввести test@example.com 3. В поле «Пароль» ввести Qwerty123 4. Нажать кнопку «Войти» Ожидаемый результат:
· Происходит редирект на /dashboard · В правом верхнем углу отображается «test@example.com» · URL содержит /dashboard Постусловия: Нажать «Выйти», чтобы разлогинить сессию.
Соблюдение этих критериев делает тест-кейс эффективным инструментом.
· 21.04
Хороший список. Добавлю от себя критерий который часто упускают: тест должен падать по одной конкретной причине. Если тест красный — разработчик должен сразу понять где именно сломалось, без дебаггинга. Это требует хорошего naming + одного assert на тест (или логически связанных assertов). Ещё важно: тест не должен зависеть от порядка запуска. В проектах где тесты стали медленными и нестабильными — почти всегда из-за shared mutable state между тестами. Изоляция — основа надёжного тест-сьюта.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 21.04
Вы правы) данный подход поддерживает аббревиатура FIRST, согласно которой тесты должны быть изолированными, быстрыми, и автоматными и тд )) так же все assert важно хранит в самом тесте)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 22.04
А я ассерты выношу отдельно 🤔 А потом просто в тесте вызываю функцию с ассертами и туда передаю данные полученные в ответе
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 23.04
Возможна потеря детализации в отчёте об ошибках, pytest переписывает assert‑выражения внутри тестовых функций, чтобы показывать разницу между ожидаемым и фактическим значениями, если assert спрятан в отдельной функции, эта магия не срабатывает — при падении вы увидишь только AssertionError без подробностей) но твой подход технически возможен) на скриншоте “идеальный” вариант, с точки зрения атомарности теста, одно действие = одна проверка))
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён