В то время как здорово, чтобы сохранить свой CI/CD процесс Быстро, во многих случаях вам даже не нужно запускать все тесты, чтобы получить необходимые вам отзывы.
Модульные тесты работают самые быстрые, потому что они тестируют очень маленький кусочек кода в полной изоляции от остальной части системы. Например, они обычно не касаются базы данных.
Модульные тесты касаются фундаментальной бизнес -логики и являются самыми многочисленными, как обычно изображено в Тестовая пирамида Диаграмма:
Отказ в модульных тестах является признаком фундаментальной проблемы, которая делает оставшиеся оставшиеся высокоуровневые и продолжительные тесты нерелевантными.
По этим причинам проекты с тестовыми люксами, которые работают за что -либо дольше, чем минута, должны расставить приоритеты в модульных тестах в Процесс непрерывной интеграции (CI) Анкет
Как использовать трубопроводы для первого запуска быстрых тестов
Классическая настройка CI — разделить все тесты на параллельные задания:
При таком подходе общее время сборки CI определяется продолжительностью самой медленной параллельной работы. Например:
- Если некоторые модульные тесты провалились менее чем за минуту,
- Но одна из заданий с тестами пользовательского интерфейса работает в течение 6 минут,
- Затем вам нужно подождать 6 минут, чтобы получить отчет о сбоях на модульные тесты.
Модульные тесты, которые проваливаются, обычно проводят некоторые тесты на более высоком уровне. Однако в этом случае Результаты тестов более высокого уровня не имеют значения И запуск их — пустая трата времени и ресурсов.
Лучший подход — использовать настраиваемый CI/CD трубопроводы . Таким образом, вы можете настроить последовательные блоки однократных или параллельных заданий. Как только один блок выходит из строя, трубопровод останавливается.
Эта стратегия позволяет разработчикам получать отзывы о тривиальных ошибках за считанные секунды. Это также побуждает всех членов команды понять влияние отдельных тестов на производительность по мере роста базы кода.
Больше советов для быстрой обратной связи
Есть дополнительная тактика, которую вы можете использовать с помощью системы CI, чтобы получить быструю обратную связь:
- Условное выполнение этапа Позволяет вам отложить запуск определенных частей вашей сборки на нужный момент. Например, вы можете настроить свой CI для запуска подмножества сквозных тестов, только если один из связанных компонентов был изменен.
- Неудачная стратегия дает вам мгновенную обратную связь, когда работа не сработает. CI останавливает все работы в настоящее время в процессе работы, как только одна из заданий потерпела неудачу. Этот подход особенно полезен при выполнении параллельных заданий с переменной продолжительностью.
- Автоматическая отмена сборок в очереди Может помочь в ситуациях, когда вы продвигаете некоторые изменения, только чтобы понять, что вы пропустили что -то маленькое, поэтому вы немедленно выдвигаете новую ревизию, но затем нужно ждать вдвое дольше для обратной связи. С таким подходом вы получаете отзывы о изменениях, которые имеют значение, пропуская все промежуточные.
Тот же принцип применяется к этапам в трубопроводе доставки. Например, если вы работаете Тесты на дым после развертывания Вы хотите как можно быстрее обнаружить проблемы.
Каков ваш подход к быстрому обратной связи? Дай мне знать в комментариях. Счастливого здания!
Оригинал: «https://dev.to/semaphore/in-ci-run-fast-and-fundamental-tests-first-10dk»