Многие знакомы с таким неприятным явлением как «моргающие» или flaky тесты. Эти тесты один раз проходят успешно, а второй раз могут упасть на одном из шагов. Самым неприятным является то, что при отладке и попытке найти проблему они снова могут отлично проходить. В результате, на них тратится много времени и часто команда разработки начинает видеть красные билды на CI без особой причины.
Рекомендуемым поведением по отношению к flaky тестам является изоляция в карантин с последующим разбирательством. Но это не всегда хорошая стратегия. Для модульных и интеграционных тестов она ещё неплохо сработает, а вот для крупных e2e или системных тестов один такой тестовый сценарий может покрывать целый длинный бизнес флоу и без него в системе появится отличная лазейка для дефектов.
Поэтому для одного из клиентов мы разработали немного другой подход. Flaky тест помечается специальной аннотацией Flaky, на которую повешен специальный обработчик на уровне управления запуском тестов. И если он падает, то вся информация с дополнительным контекстом попадает в отдельный отчёт, а сам тест перезапускается конфигурируемое количество раз. В результате, мы получаем больше информации для диагностики проблемы и не валим сборки на ровном месте благодаря повторному запуску.
#тестирование #testing