Тимур · бэкенд, #qa-antrakt
По карте рисков возвраты у вас в красной зоне, понял. Сел писать тест на правило «отменённое событие возвращает и сбор» и застрял: чтобы дойти до этой строки,
refund_orderидёт в базу, в часы, в «ПлатиМ» и в почту. Получилось пять моков на одну проверку. Может, возвраты и правда проще проверять e2e?
Вера Ланская · лид QA, #qa-antrakt
Пять моков на одну ветку говорят не про тесты, а про код. Покажи Тимуру, где у «Антракта» порты, и разрежь возврат так, чтобы правила проверялись без единого мока. А e2e на возврат оставь один, если он вообще нужен.
В прошлом уроке ты разложил риски «Антракта» и для каждого выбрал уровень теста. Часто ответ «юнит-тест», а написать его не получается: код устроен так, что до правила не добраться без подмены половины мира. Тогда проверка уползает наверх, в медленный и хрупкий тест, и стратегия ломается не на бумаге, а в коде. С обработчиком вебхука «ПлатиМ» из карты рисков та же беда, до него дойдём в уроке 89. Сегодня разберём механизм на возврате: как устройство кода решает, сколько моков понадобится тесту.
С двумя идеями ты уже встречался. В уроке 41 было функциональное ядро и оболочка, в уроке 44 порты и адаптеры на примере почты. Там это были приёмы для одной функции. Здесь соберём из них карту всего приложения.
Звуковой пульт
У звукорежиссёра концертного зала есть пульт. На нём гнёзда: входы и выходы стандартной формы. Во вход можно воткнуть микрофон певца, ноутбук с фонограммой или генератор тестового тона. Из выхода звук идёт в колонки зала, в мониторы на сцене или в наушники самого режиссёра. Пульту всё равно, что воткнуто: он знает только форму гнезда.
Поэтому саундчек делают днём, без зрителей и без певца. Во вход генератор тона, на выход наушники. Если пульт исправно смешивает и усиливает, это видно за минуту. А если бы микрофон был впаян в пульт, проверять пришлось бы только вечером, с певцом, полным залом и всеми колонками сразу.
Код, в котором база, часы и платёжный шлюз впаяны внутрь, проверяется только вечером: в e2e, со всем стендом. Код с гнёздами проверяется днём.
урок из курса
Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.