Flaky-тесты — это тесты, которые падают недетерминированно, то есть без реальных изменений в коде. Они подрывают доверие к тестовому набору, заставляют разработчиков перезапускать пайплайны и игнорировать реальные падения. Даже 1-2% flaky-тестов могут существенно замедлить весь процесс разработки и деплоя.
Доля тестов с недетерминированным результатом. Google: 16% тестов склонны к флакам.
УСИЛИВАЕТСЯ: В монорепах изменения затрагивают больше зависимых проектов, запуская больше тестов. Шанс наткнуться на чужой флаки-тест растёт экспоненциально, что подрывает доверие к CI и парализует работу очереди на мерж.
Косвенное усиление: исправление флака в распределённой команде занимает сутки вместо минут, так как разработчик не может мгновенно перезапустить тест или уточнить причину падения у автора.
Нестабильные тесты масштабируются экспоненциально.
Разработчики группируют изменения в крупные PR, чтобы реже сталкиваться с нестабильными тестами.
Перезапуски занимают ресурсы пайплайна, умножая время CI в 2–3 раза.
Один упавший нестабильный тест сбрасывает все PR в очереди каскадом.
Перезапуски + крупные PR + задержки в очереди накапливаются на всех этапах пайплайна.
Ложные падения создают фрустрацию и подрывают доверие к CI.
Подорванное доверие → игнорирование падений → баги доходят до прода.
Команды отключают нестабильные тесты, создавая постоянные пробелы в покрытии.
Каждый flaky сбой требует перезапуска. При 16% flakiness (Google) большинство PR ловят хотя бы один flake.
Большие тесты: 14% flaky vs маленькие: 0.5%.
Меньше тестов запускается = меньше возможностей для нестабильных падений на PR.