Раздел 43 · Автотестирование с нуля

Архитектура и тестируемость: порты, ядро и скромная оболочка

middle~40 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Тимур · бэкенд, #qa-antrakt

По карте рисков возвраты у вас в красной зоне, понял. Сел писать тест на правило «отменённое событие возвращает и сбор» и застрял: чтобы дойти до этой строки, refund_order идёт в базу, в часы, в «ПлатиМ» и в почту. Получилось пять моков на одну проверку. Может, возвраты и правда проще проверять e2e?

Вера Ланская · лид QA, #qa-antrakt

Пять моков на одну ветку говорят не про тесты, а про код. Покажи Тимуру, где у «Антракта» порты, и разрежь возврат так, чтобы правила проверялись без единого мока. А e2e на возврат оставь один, если он вообще нужен.

В прошлом уроке ты разложил риски «Антракта» и для каждого выбрал уровень теста. Часто ответ «юнит-тест», а написать его не получается: код устроен так, что до правила не добраться без подмены половины мира. Тогда проверка уползает наверх, в медленный и хрупкий тест, и стратегия ломается не на бумаге, а в коде. С обработчиком вебхука «ПлатиМ» из карты рисков та же беда, до него дойдём в уроке 89. Сегодня разберём механизм на возврате: как устройство кода решает, сколько моков понадобится тесту.

С двумя идеями ты уже встречался. В уроке 41 было функциональное ядро и оболочка, в уроке 44 порты и адаптеры на примере почты. Там это были приёмы для одной функции. Здесь соберём из них карту всего приложения.

Звуковой пульт

У звукорежиссёра концертного зала есть пульт. На нём гнёзда: входы и выходы стандартной формы. Во вход можно воткнуть микрофон певца, ноутбук с фонограммой или генератор тестового тона. Из выхода звук идёт в колонки зала, в мониторы на сцене или в наушники самого режиссёра. Пульту всё равно, что воткнуто: он знает только форму гнезда.

Поэтому саундчек делают днём, без зрителей и без певца. Во вход генератор тона, на выход наушники. Если пульт исправно смешивает и усиливает, это видно за минуту. А если бы микрофон был впаян в пульт, проверять пришлось бы только вечером, с певцом, полным залом и всеми колонками сразу.

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

урок из курса

Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.