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

Запахи тестов: рефакторинг без потери пойманных багов

senior~30 мин

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

Ника · фронтенд, #qa-antrakt

Редактор попросил поменять «Место 14Б уже в корзине» на «Место 14Б уже выбрано». Поменяла строку, упало 14 тестов. Я же ничего не сломала?

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

А у меня наоборот. Вчера по ошибке поставил сбор 8% вместо 7%, нашёл сам в логах. Ни один тест не покраснел.

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

Это одна болезнь с двумя симптомами. Тесты корзины пахнут: одни падают без бага, другие молчат при баге. Дальше блока J без этого не пойдём.

Весь блок мы чинили то, что делает набор ненадёжным снаружи: время, порядок, соседей, скорость, код без тестов. Остался последний источник, сами тесты. Тест это код, и он стареет так же: копипаста, магические числа, проверки, которые ничего не проверяют. У этих болезней есть имена, Джерард Месарош собрал их в каталог «запахов тестов» в книге «xUnit Test Patterns». Сегодня разберём главные и научимся рефакторить тесты так, чтобы они не потеряли ни одного пойманного бага.

Сигнализация, которая орёт от кошки

У соседа машина с сигнализацией, которая воет от каждой кошки, от грузовика за окном и от дождя. Через неделю сосед перестаёт выходить на вой. Через месяц выключает её совсем. А однажды ночью сигнализация молчит, когда машину правда вскрывают: датчик удара висел на проводе и ничего не чувствовал.

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

урок из курса

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

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