Пока нет оценок.
Пожалуйста, подождите...

Если смотреть в дословном переводе, то CI (от англ. continuous integration) – непрерывный процесс интеграции чего-то. Подразумевается интеграция отдельных частей программного кода ПО. Чем больше раз мы собираем программный код в одно целое и тестируем, может ли он собраться вообще, и выполняются ли автотесты, тем лучше!

С помощью CI можно легко перевести процесс ручного тестирования в автоматизированные проверки. Его используют некоторые группы разработчиков, которые создают не только программный код, но еще и автотесты. О нем иногда спрашивают на собеседованиях — хотя бы просто узнать, понимает ли собеседник что это такое. И, конечно же, о нем должен знать любой уважающий себя тестировщик программного обеспечения.

Далее в статье речь пойдет об основных понятиях и базовом предназначении CI. Мы разберем, как устроен CI и какие задачи выполняет!

Понятие CI на примере

CI – это уникальная сборка, внедрение и проверка программного обеспечения без привлечения человеческих ресурсов. Чтобы было более понятно, разберем простой пример.

Давайте представим, что у нас есть два программиста – Джон и Лиза, а также тестировщик Пол.

Лиза создает программный код и добавляет его внутрь системы контроля версий. Это своего рода хранилище для программного кода – особое место, где должны сохраняться все текущие изменения. Их в любой нужный момент можно проанализировать на то, какие изменения и при каких условиях в него вносили.

Потом Джон завершает работу со своей частью кода. И также сохраняет его внутри системы контроля версий.
Но это очень простой исходный код – просто набор нужных файлов со специальным расширением .java или другим подобным.

Для того, чтобы Лиза могла проверить все изменения, придется:

  • Собрать текущий вариант программы из исходного кода;
  • Запустить его внутри тестовой машины.

Сборка варианта программы – это процесс, когда разработчики из набора нескольких файлов создают один нужный файл.
Выполнить подобную сборку можно самостоятельно, но это очень длительный процесс: всегда придется помнить, в каком порядке его нужно запускать, какие файлы имеют зависимость друг от друга, нет ли ошибки в созданной команде или что-то другое.

Для подобного рода целей, как правило, используют определенный инструмент. Если имеем дело с файлами java, то это может быть Ant, Maven или Grable. На основе сборщика пользователь может всего один раз настроить общий процесс сборки, а затем просто запускать все по 1 команде.

Человеческий фактор

Все, что было описано выше, это своего рода полуавтоматизация. Без человека никак, так как только тестировщик или программист должен вводить нужные команды и собирать тестовые сборки мануально.

Представим, что данным процессом занимаются исключительно программисты. Когда Лиза попросила сборку на тестирование, Джон выполняет процесс обновления версии из репозитория и мануально собирает новую тестовую версию.

Однако следует помнить, что собрать вариант программы не означает, что мы точно получим ее для тестирования. Этот вариант же нужно как-то запустить! Эти задачи выполняет сервер приложения: jetty, apache, wildfly и многие другие.

Но это снова-таки – полуавтоматизация, так как программист должен скопировать тестовый архив на стенд и подключить службу. Это делается несколькими людьми, а значит опять человеческий фактор.

А вот если убрать из этой цепочки человека, то мы, наконец, получаем настоящий CI, продукт, который автоматизирует процесс проверки. Он самостоятельно забирает все текущие изменения из репозитория!

Когда CI получит изменения, он самостоятельно запускает всю сборку текущего варианта программы и автоматические тесты. Если в сборке произошел сбой, система самостоятельно создает электронное письмо всем нужным лицам:

  1. Менеджеру проекта;
  2. Программисту, который вносил изменения;
  3. Другим: кому будет настроен доступ, тот и получит уведомления.

Если сборка пройдет корректно, CI автоматически разворачивает программу на тестовой машине. И в итоге Лиза может спокойно проверять новую версию сборки!

Таким образом

Система CI – это определенный программный продукт, который следит за вашей системой управления версиями, и при малейших изменениях там автоматически собирает их и проводит автотесты (разумеется, после того, как их напишут специалисты). В случае неудачи она дает об этом знать всем заинтересованным лицам.

Оставить комментарий