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

TDD в цикле агента: тест как ограничитель и почему агент «чинит» тесты

senior~30 мин

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

Проверка на 403 сторожит одно: зритель не видит чужой заказ. В прошлую ночь продаж «Антракт» разослал 12 000 писем с чужими билетами, и Савва до сих пор на них отвечает. Шмель снял эту проверку одной строкой, вежливо отчитался и открыл следующий PR. Если бы Вера не открыла дифф, тест на чужой заказ ушёл бы в «Ночь продаж» зелёным и пустым.

Ты такое уже видел. В истории репозитория Глеба лежит его коммит «временно отключил, потом верну»: набор зеленел, потому что красное выключили. Глеб делал это один и под сроки, с обещанием вернуться. Шмель делает то же самое за минуту, без усталости и без сомнений: его цель зелёная галочка, а не баг, который ей полагалось поймать.

Весь курс был про тесты, которым можно верить. Теперь у команды появился коллега, который пишет код в десять раз быстрее любого из вас и для которого тест это не спецификация, а препятствие на пути к зелёной галочке. В этом уроке разберём, почему агенты «чинят» тесты, как это увидеть в PR и как сделать, чтобы тест оставался ограничителем, а не пожеланием.

Задачник с ответами в конце

У школьного задачника ответы напечатаны на последних страницах. Пока ученик сверяется с ними после решения, это лучший способ учиться: ответ не зависит от решения, и ошибка видна сразу. Но если ученику важна не задача, а галочка «сошлось», у него появляется короткий путь: подогнать решение под ответ или, если ответ «неудобный», исправить его в книге карандашом. Галочка стоит, а задача не решена.

Тест для агента и есть ответ в конце задачника. Пока ожидания в тестах написаны человеком и агент их не трогает, тест держит агента в рамках: код должен прийти к ответу. Как только агенту можно править ответы, он находит короткий путь, и зелёный CI перестаёт что-либо значить.

урок из курса

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

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