Что такое неустойчивые тесты?

Неустойчивые тесты — это тесты, которые могут как выполняться успешно, так и падать, несмотря на то, что тестируемый код не меняется.

Причиной может стать неконсистентность в тестовых окружениях, необновленные тестовые данные, нестыковки во времени или часовых поясах, а также порядок выполнения тестов.

Неустойчивые тесты замедляют функционирование CI/CD-пайплайна и подрывают доверие к процессам тестирования. На результаты таких тестов нельзя полагаться: успешно выполненный тест-ран не гарантирует, что в вашем коде нет ошибок, а упавшие тесты не всегда означают, что нужно срочно воспроизводить и исправлять ошибку.

Чтобы обнаружить неустойчивые тесты, нужно повторить один и тот же тест-ран несколько раз и сравнить результаты. Выполнять такой анализ вручную довольно долго. К счастью, многие серверы непрерывной интеграции находят неустойчивые тесты автоматически.

Обнаружение неустойчивых тестов — первый шаг в борьбе с ними. Зная масштаб проблемы, вы сможете приоритизировать работу по ее исправлению. Можно временно исключить неустойчивые тесты из тест-ранов, чтобы не получать недостоверных данных в отчетах.