Исторически, при увеличении количества автотестов на проектах проявлялись проблемы: тесты путались, превышали лимиты времени на выполнение, сложно было понять, что за что отвечает. Более того, рос риск возникновения зависимостей между разными частями тестовой системы и замедления общей работы пайплайнов.
Проблема возникает, когда количество тестов растёт быстрее, чем обеспечивается архитектурная поддержка тестовой инфраструктуры. Без масштабируемых решений тесты становятся медленными, сложными в поддержке, усложняется поиск и локализация дефектов, а также быстро растёт технический долг.
Решение заключается во внедрении специальных стратегий:
Ключевые особенности:
Можно ли сделать все тесты только интеграционными, чтобы покрыть больше кода сразу?
Нет, такой подход снижает локализацию дефектов и ведёт к высокой стоимости поддержки, а также к замедлению выполнения регресса.
Означает ли масштабируемость автотестов только их ускорение?
Масштабируемость — это и архитектура, и поддерживаемость, и ускорение, и гибкая инфраструктура. Ускорение — лишь следствие хорошо спроектированной крупной системы.
Как правильно масштабировать тесты для команд, работающих в разных часовых поясах?
Важно предусмотреть возможность локального запуска и независимости тестовых сред, иначе будут «конфликты» между задачами команд.
В компании появилось сразу несколько команд, которые добавляли новые автотесты в одну папку, не согласуя свои изменения. Через несколько недель автотесты стали падать из-за нестыковок в данных и зависимостей, время запуска превысило 2 часа.
Плюсы:
Минусы:
В одной из команд сделали модульную структуру, ввели раздельный CI по областям кода, повысили стабильность, внедрили автоматические алерты о неэффективных тестах.
Плюсы:
Минусы: