Критерии приёмки: когда «готово» значит одно и то же
Как зафиксировать поведение системы, чтобы аналитик, разработчик и тестировщик поняли его одинаково.
Зачем они нужны
Возьмём требование из прошлого модуля:
Требование говорит что делать, но не говорит, как проверить, что сделано верно. Отдай его двум разработчикам — получишь два разных калькулятора. Один округлит до целых, другой до копеек. Один при инфляции выше ставки покажет минус, другой про этот случай не подумает.
Формат «Дано / Когда / Тогда»
Мировой стандарт записи — три строки. В оригинале это язык Gherkin («Given / When / Then», читается «геркин»).
Пример на калькуляторе
Требование одно, а сценариев к нему несколько.
Когда: вводит сумму 100 000 ₽, ставку 12%, инфляцию 8%
Тогда: система показывает реальную доходность ≈ 3,7% годовых и реальную сумму ≈ 103 700 ₽
Когда: вводит ставку 6% и инфляцию 9%
Тогда: реальная доходность отрицательная (−2,75%), число подсвечено красным как предупреждение
Когда: оставляет поле «инфляция» пустым
Тогда: расчёт не запускается, под полем подсказка «введите инфляцию»
Две ошибки, на которых легко попасться
Ошибка 1. Расплывчатый результат
«Система сравнивает оба значения» — это как запрещённое «правильно» из модуля 1. Тестировщик спросит: сравнивает — это как? Делаем наблюдаемым: показывает разницу в рублях и выделяет более выгодный вариант.
Ошибка 2. Внутренняя кухня в «Тогда»
«Доход по инвестпродукту тянется из базы данных» — это как система устроена внутри, а пользователь этого не видит. Критерий описывает поведение чёрного ящика: только наблюдаемое снаружи. Откуда берётся доходность — отдельное требование про источник данных, в сценарий оно не входит.
Стало: «показывает реальный доход по вкладу и по инвестпродукту за 12 месяцев с учётом инфляции, выделяет более выгодный вариант и разницу между ними в рублях».
По второму варианту тест пишется без единого уточняющего вопроса.