Грамотное версионирование и интеграция автотестов критичны для обеспечения соответствия проверки актуальному состоянию проекта.
История вопроса
Автотесты поначалу часто вели отдельно от основного проекта, что приводило к несовместимостям и проблемам поддержки. Развитие нескольких веток, частые релизы ПО и тестов — породили необходимость общей системы контроля версий.
Проблема
Без версионирования и согласованной интеграции возникают:
Решение
Современный подход:
# Общий подход: git checkout -b feature/new_login # Фича и тесты разрабатываются и тестируются вместе # После ревью мерджатся вместе в основную ветку
Ключевые особенности:
Можно ли тесты хранить в отдельном (от кода проекта) репозитории?
Да, но тогда сложнее поддерживать актуальность тестов, требуется manual sync, есть риск "забыть" обновить что-то при релизе или багфиксе.
Должны ли тесты сразу покрывать весь новый функционал при создании PR?
Идеально — да, практически часто покрывают MVP/основные сценарии в первом PR, а сложные кейсы — отдельными задачами. Главное, чтобы критичный функционал был сразу покрыт.
Можно ли откатывать только тестовые изменения без отката кода?
Если тесты и код вместе в одной ветке — да, можно откатывать ревизии. Но лучше избегать "отката" тестов без кода: это ухудшает качество проверки.
Проект с отдельным репозиторием автотестов. После релиза программисты "забыли" обновить тесты — тесты падали, проходили неактуальные проверки, баги ловили на проде.
Плюсы:
Минусы:
Тесты и код проекта ведутся в одной git-ветке: при любом новом pull request обязательно обновляются автотесты для добавленного кода. Все изменения проходят code review и автоматические проверки.
Плюсы:
Минусы: