Что же такое Continuous Integration (коротко CI — произносится как «си-ай») и для чего это нужно тестировщикам? Мне доводилось проводить собеседование на которых тестировщики не могли ответить что это такое, либо даже не слышали о таких системах. Если вы поглядываете в сторону автоматизации, нужно иметь понятие о CI.

Зачем тестировщикам Continuous Integration?

Continuous Integration переводится как Непрерывная Интеграция. В разработке ПО это означает что ваш продукт будет непрерывно проходить итерации сборки, тестирования, деплоя и еще прочие «плюшки». К тому же это одна из основ, если вам нужна полная автоматизация процесса тестирования. С понятием вроде все прозрачно. Теперь как это на практике.

На практике системы непрерывной интеграции реализованы в виде специализированного ПО. Обычно для CI выделяется сервер, либо покупается лицензия для онлайн использования. В качестве сервера может послужить и ваша рабочая машина. После установки(если выбран этот способ) у вас будет доступен веб-интерфейс через который настраивается процесс работы.

Сценариев использования таких систем очень много, но большинство из них проходят по более или менее схожей линии.

  • Сборка новой версии продукта
  • Тестирование новой версии продукта
  • Обработка результатов

Continuous Integration дает как минимум один огроменный плюс для тестировщика. Это автоматизация регрессионного тестирования. С большим проектом приходится постоянно прогонять один и тот же скоуп тестов чтобы быть уверенным в  качестве нового кода. Этот вид тестирования потихоньку начинает вызывать отвращение из-за монотонности и повторов. Так вот CI может взять это на свои плечи и избавить вас от рутины.

Разбираемся с Continuous Integration

Чтобы не тыкать пальцем в небо, я бы предложил посмотреть в сторону 2-х известных продуктов, которые к тому же имеют бесплатную версию. Это Jenkins и TeamCity. Разбираться с CI нужно самостоятельно. Нужно «пощупать» систему руками, чтобы хорошенько в ней разобраться. Поэтому не стесняйтесь и ставьте его локально. Будет немного мучений с первоначальной настройкой, но это окупится хорошим опытом.

Мануалов по установке и настройке достаточно много, поэтому не вижу смысла повторяться здесь. Загуглите: настройка  Jenkins или настройка TeamCity. Пару первых результатов дадут вам исчерпывающий ответ. Если вам нечего запускать на CI, то посмотрите статью автотесты на Codeception и напишите наконец собственные автотесты. Это просто, главное начать.

Настраиваем сценарий билда CI

  1. Начните с самого простого. Например попробуйте автоматически копировать данные из одного места в другое. Постепенно наращивайте процесс автоматизации дополнительными шагами.
  2. Сделайте процесс тестирования коротким. В моем случае шаг прогона тестов длился около часа, при динамичной разработке это слишком много. Никто не будет ждать час, ради результатов тестирования. Удаляйте лишние тесты, сокращайте время, иначе Continuous Integration не будет для вас эффективным
  3. Используйте дополнительные метрики.  Coverage штука очень полезная. Также интересно смотреть на статистику по скорости выполнения тех или иных тестов, интересно посмотреть скорость ответа сервера в новых сборках.
  4. Обрабатывайте результат. Вот в итоге у вас протестирован новый код и вы имеете результаты. Задумайтесь над тем что можно сделать дальше. К примеру отправить «ругательное письмо» разработчику кода, либо создать тикет на имя разработчика в любимом баг-трекере. Можно отправить сообщение в корпоративный чат, создать нотификацию в IDE или даже в Telegram. Да хоть отправляйте все сразу в master-ветку, решать вам!
  5. У вас уже есть полноценный процесс. Пора оптимизировать шаги тестирования. Разбивайте тесты на группы, запускайте их в зависимости от изменений в коде. К примеру интеграционные тесты, не всегда есть смысл их гнать. Можно запускать их только в пред-релизных сборках. Практикуйте ночные билды с полным стеком всех тестов.
  6. Если вам постоянно приходится вмешиваться в процесс билда, значит вы неправильно создали сценарий. Системы CI должны работать как часы и вам не нужно постоянно отвлекаться на ее конфигурацию.

По той же теме: