Интересный вопрос и то, над чем я работал последние пару месяцев для моего нынешнего работодателя. По сути, мы отправляем товар в виде докеров с манифестами. При написании тестов e2e я хочу, чтобы продукт работал как можно ближе к среде заказчика.
По сути, для решения этой проблемы мы создали сценарии, которые взаимодействуют с нашим стандартным облачным провайдером (GCloud) для создания кластера, развернитепродукта, а затем запустите тесты на него.
Для крупных поставщиков облачных услуг это не сложная задача, но может занять много времени. Есть несколько вещей, которые мы узнали о сложном способе помнить при разработке тестов.
- Параллельность, это может показаться очевидным, но подумайте о количестве параллельных сборок, которые может выполнить ваш CI.
- Задержка из облака, не думайте, что вы получите мгновенный ответ на каждую команду, которую вы выполняете в облаке. Также подумайте о тайм-аутах. Если вы предлагаете продукт с множеством пакетов и сервисов, каково приемлемое время запуска?
- Ошибки, приводящие к сбоям сборки, это интересно. Мы видели ошибки в сборке из-за сетевых ошибок при обмене данными с нашим тестовым развертыванием. Они почти всегда переходные. Лучше всего избегать таких ситуаций, которые приводят к сбою сборки.
Одна вещь, на которую стоит обратить внимание, это то, что GitLab предоставляет некоторую документацию о том, как создавать и тестировать образы в своем конвейере CI.