Главная
АИ #6 (136)
Статьи журнала АИ #6 (136)
Эффективность использования CI/CD-инструментов в автоматизированном тестировании

10.5281/zenodo.15641767

Эффективность использования CI/CD-инструментов в автоматизированном тестировании

8 февраля 2023

Рубрика

Информационные технологии

Ключевые слова

CI/CD
автоматизированное тестирование
производительность пайплайна
инструменты непрерывной интеграции
автоматизация тестирования
безопасность

Аннотация статьи

Статья посвящена исследованию эффективности применения CI/CD-подходов в автоматизированном тестировании. Проанализированы ключевые инструменты, охарактеризованы этапы CI/CD-пайплайна, особенности интеграции с системами тестирования, а также оценена производительность решений по таким критериям, как время сборки, поддержка Docker/Kubernetes, параллельность задач и простота настройки. На основе сравнительного анализа предложены рекомендации по выбору инструментов в зависимости от задач и ресурсов команд. Особое внимание уделено вопросам безопасности пайплайнов и роли CI/CD в повышении качества программного обеспечения.

Текст статьи

Актуальность исследования

В условиях стремительного развития цифровых технологий и усиления конкуренции на рынке программного обеспечения возрастает необходимость в ускорении процессов разработки при сохранении высокого уровня качества продуктов. Методологии DevOps и практики CI/CD (Continuous Integration / Continuous Delivery) становятся ключевыми инструментами для достижения этих целей, обеспечивая автоматизацию процессов интеграции, тестирования и развертывания приложений.

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

Таким образом, исследование эффективности использования CI/CD-инструментов в автоматизированном тестировании является актуальным и востребованным, поскольку позволяет выявить лучшие практики, определить факторы успеха и предложить рекомендации для оптимизации процессов обеспечения качества в современных условиях разработки программного обеспечения.

Цель исследования

Целью данного исследования является анализ эффективности применения CI/CD-инструментов в автоматизированном тестировании программного обеспечения.

Материалы и методы исследования

В качестве основных материалов в исследовании использованы: официальная документация CI/CD-инструментов, аналитические отчёты и публикации, сравнительные обзоры с технических платформ.

Методы исследования включали: контент-анализ открытых источников и технической документации, сравнение параметров работы CI/CD-инструментов, синтез результатов практических тестов из открытых бенчмарков и технических блогов, классификация инструментов по критерию адаптивности, производительности и уровня автоматизации.

Результаты исследования

Важной составляющей реформирования информационной системы является внедрение электронных информационных систем, позволяющих автоматизировать все основные процессы, связанные с работой предприятий, и обеспечивающих обмен информацией, которые поддерживают возможности интеграции с другими системами и приложениями [1, с. 35-40].

Непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) представляют собой культуру, набор принципов и практик, которые позволяют разработчикам чаще и надежнее развертывать изменения программного обеспечения.

CI/CD – это одна из DevOps-практик. Она также относится и к agile-практикам: автоматизация развертывания позволяет разработчикам сосредоточиться на реализации бизнес-требований, на качестве кода и безопасности [4].

В основе методологии CI/CD лежат следующие принципы:

  • Автоматизация процессов: максимальное использование автоматических инструментов для сборки, тестирования и развертывания кода.
  • Непрерывность: постоянное внедрение изменений и обновлений, что позволяет быстро реагировать на изменения требований и исправлять ошибки.
  • Обратная связь: оперативное получение информации о результатах сборки и тестирования, что способствует быстрому выявлению и устранению проблем.
  • Контроль качества: внедрение автоматизированных тестов на различных этапах разработки для обеспечения стабильности и надежности программного продукта.

Эти принципы способствуют созданию эффективного и надежного процесса разработки программного обеспечения.

Применение CI/CD позволяет ускорить процесс разработки, повысить качество программного обеспечения и снизить риски, связанные с развертыванием новых версий приложений.

Рассмотрим подробнее функции CI/CD-пайплайна [2]:

  1. Регулярная интеграция кода в центральный репозиторий. Это помогает быстро находить и устранять конфликты и ошибки, а также улучшает общее качество кода.
  2. Автоматический запуск тестов разных типов, таких как модульные, интеграционные и функциональные. Автоматизированное тестирование позволяет выявлять проблемы на ранних этапах разработки.
  3. Автоматическая сборка программного обеспечения и его упаковка в пакеты или контейнеры. Это обеспечивает создание релизов приложения и подготовку его к развертыванию.
  4. Автоматическая доставка или развертывание приложения в тестовые, стейджинговые или рабочие среды после успешного прохождения тестов. Это позволяет быстро и надежно предоставлять новые функции и изменения пользователям. Для автоматической доставки кода часто используют GitLab CI/CD.
  5. Сбор метрик и логов приложения, а также создание отчетов о прохождении тестов. Это помогает получать обратную связь о работе приложения, его стабильности и производительности.

Автоматизированное тестирование – важная часть любого CI/CD-процесса. Внедрение разных типов тестов поможет вашей команде поддерживать высокое качество кода при масштабировании вашего приложения [3].

Оно включает в себя различные виды тестирования:

  • Модульное тестирование (Unit Testing): проверка отдельных компонентов или функций программы.
  • Интеграционное тестирование (Integration Testing): проверка взаимодействия между различными модулями или компонентами системы.
  • Системное тестирование (System Testing): полная проверка всей системы на соответствие требованиям.
  • Регрессионное тестирование (Regression Testing): проверка того, что новые изменения не нарушили существующую функциональность.
  • Тестирование производительности (Performance Testing): оценка скорости и стабильности работы приложения под различными нагрузками.

Интеграция автоматизированного тестирования в CI/CD позволяет оперативно выявлять и устранять ошибки, повышая надежность и качество программного продукта.

Типичный CI/CD-пайплайн состоит из этих этапов: сборка (build), модульное тестирование (unit testing), интеграционное тестирование (integration testing), развертывание в тестовой среде (staging deployment), приемочное тестирование (acceptance testing) и, наконец, развертывание в продуктивной среде (production deployment) (рис.).

image.png

Рис. Этапы CI/CD pipeline

Существует множество инструментов, поддерживающих процессы CI/CD и автоматизированного тестирования (табл. 1):

Таблица 1

Сравнение инструментов CI/CD и автоматизированного тестирования

Инструмент

Тип хостинга

Языки и платформы

Ключевые особенности

Лицензия/Стоимость

Jenkins

Самостоятельный

Java, Python, Ruby, .NET и др.

Плагин-архитектура (1500+ плагинов), Docker/K8s, гибкая настройка пайплайнов

Бесплатный (Open Source)

GitLab CI/CD

Облако/On-Premise

Все основные (через Runner)

Встроенная CI в GitLab, Auto DevOps, поддержка Kubernetes, переменные, секреты

Бесплатно/Enterprise

CircleCI

Облако/Самостоятельный

Linux, macOS, Windows

Параллелизм, быстрая сборка, интеграция с Docker, SSH-доступ в пайплайне

Бесплатно/Платные тарифы

Travis CI

Облако/Самостоятельный

30+ языков

YAML-конфигурация, простая интеграция с GitHub, ограниченные возможности кастомизации

Бесплатно (Open Source) / Платно

Bamboo (Atlassian)

Самостоятельный

Java, Python, PHP, .NET и др.

Интеграция с Jira, Bitbucket, поддержка Docker и планирования задач

Платная

TeamCity

Облако/On-Premise

Java, .NET, Kotlin, Python и др.

Гибкая настройка, мониторинг агентов, автоматическая генерация сборок

Бесплатно (до 100 билдов)

GitHub Actions

Облако

Все, что поддерживается GitHub

Матричные сборки, интеграция с GitHub, Secrets, Docker и YAML-файлы

Бесплатно/Платно

Azure DevOps

Облако/On-Premise

.NET, Java, Python и др.

Интеграция с Azure, планы тестов, отчеты, release management

Бесплатно/Enterprise

Buddy

Облако/On-Premise

Node.js, PHP, Python, Ruby и др.

Визуальный редактор пайплайнов, интеграции с Git, Docker, Slack, Kubernetes

Бесплатно/Платно

Semaphore

Облако

Ruby, Java, Node.js, Python и др.

Высокая скорость выполнения, SSH-доступ, кэширование и поддержка CI/CD для Docker

Бесплатно/Платно

 

  1. Jenkins: Мощный и гибкий инструмент с обширной экосистемой плагинов. Требует значительных усилий по настройке и обслуживанию. Рекомендуется для команд с опытными DevOps-инженерами.
  2. GitLab CI/CD: Интегрированное решение с широкими возможностями и поддержкой Kubernetes. Подходит для команд, использующих GitLab как основную платформу разработки.
  3. CircleCI: Облачный сервис с высокой скоростью сборки и поддержкой параллельных задач. Идеален для проектов, требующих быстрого CI/CD-процесса.
  4. Travis CI: Простой в использовании инструмент, хорошо интегрируется с GitHub. Однако имеет ограничения в поддержке современных технологий, таких как Kubernetes.
  5. Bamboo: Инструмент от Atlassian с глубокой интеграцией с Jira и Bitbucket. Подходит для организаций, использующих экосистему Atlassian.
  6. TeamCity: Мощный инструмент с поддержкой различных языков и платформ. Требует определенных усилий по настройке, но предоставляет широкие возможности для кастомизации.
  7. GitHub Actions: Интегрированное решение для пользователей GitHub. Обеспечивает простую настройку и высокую скорость выполнения задач.
  8. Azure DevOps: Комплексное решение от Microsoft с поддержкой всего цикла разработки. Идеально подходит для команд, работающих в экосистеме Microsoft.
  9. Buddy: Инструмент с визуальным редактором пайплайнов, упрощающий настройку CI/CD-процессов. Подходит для небольших команд и стартапов.
  10. Semaphore: Облачный сервис с высокой скоростью выполнения задач и поддержкой современных технологий. Рекомендуется для команд, стремящихся к быстрому и эффективному CI/CD.

Внедрение CI/CD способствует повышению качества программного обеспечения за счет:

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

Сравнение популярных CI/CD-инструментов по ключевым параметрам представлено в таблице 2. Время сборки может варьироваться в зависимости от сложности проекта и конфигурации пайплайна.

Таблица 2

Сравнительный анализ производительности инструментов

Инструмент

Время сборки (мин)

Поддержка Docker

Поддержка Kubernetes

Интеграция с GitHub

Простота настройки

Поддержка параллельных сборок

Jenkins

5–10

Да

Да

Да

Средняя

Да

GitLab CI/CD

4–8

Да

Да

Да

Высокая

Да

CircleCI

3–7

Да

Да

Да

Высокая

Да

Travis CI

6–12

Да

Нет

Да

Высокая

Ограниченная

Bamboo

5–9

Да

Да

Да

Средняя

Да

TeamCity

4–8

Да

Да

Да

Средняя

Да

GitHub Actions

3–6

Да

Да

Да

Высокая

Да

Azure DevOps

4–7

Да

Да

Да

Высокая

Да

Buddy

2–5

Да

Да

Да

Высокая

Да

Semaphore

2–4

Да

Да

Да

Высокая

Да

Интеграция CI/CD-инструментов с системами автоматизированного тестирования повышает эффективность процессов обеспечения качества. Это позволяет автоматически запускать тесты на разных этапах пайплайна (процесса сборки и развёртывания) и получать отчёты о результатах.

Ниже рассмотрим примеры такой интеграции на примере GitLab CI/CD и Jenkins, а также упомянем другие инструменты:

1. GitLab CI/CD.

GitLab CI/CD поддерживает автоматический запуск тестов при каждом коммите. Результаты тестов отправляются в инструмент управления тестированием, например TestRail, что позволяет отслеживать ход процесса и анализировать ошибки.

Также GitLab CI/CD позволяет добавлять в пайплайн этапы нагрузочного тестирования с помощью сервисов, например Yandex Load Testing.

2. Jenkins.

Jenkins поддерживает интеграцию с различными системами тестирования, такими как JUnit, TestNG, Selenium и другими. Для интеграции с конкретной системой тестирования может потребоваться установка соответствующего плагина.

Например, при интеграции с JUnit в настройках проекта добавляется шаг сборки для выполнения тестов, а результаты тестирования становятся доступны на странице проекта в Jenkins.

Для интеграции CI/CD и тестирования также используются, например:

  • Позволяет настраивать пайплайны с помощью простых конфигурационных файлов и поддерживает параллельную обработку задач.
  • Travis CI. Облачная CI/CD-система, которая интегрируется с GitHub и позволяет автоматизировать тестирование и развёртывание приложений.
  • Обеспечивает глубокую интеграцию с другими продуктами Atlassian, поддерживает работу с различными языками и платформами.

С ростом автоматизации процессов разработки и развертывания возрастает необходимость обеспечения безопасности в CI/CD-пайплайнах. Отчет StepSecurity за 2022 год отмечает увеличение числа инцидентов, связанных с безопасностью в CI/CD, включая утечки секретов и уязвимости в сторонних компонентах.

В связи с этим, инструменты, такие как GitLab CI/CD и Azure DevOps, предлагают встроенные функции для сканирования уязвимостей и управления секретами, что способствует повышению безопасности процессов разработки и развертывания.

Выбор подходящего CI/CD-инструмента зависит от множества факторов, включая размер команды, используемые технологии, требования к безопасности и бюджету. Ниже представлены рекомендации по выбору инструмента в зависимости от специфики проекта:

  • Для небольших команд и стартапов: GitHub Actions и Buddy предлагают простую настройку и интеграцию с популярными сервисами, что делает их идеальными для небольших проектов.
  • Для средних и крупных команд: GitLab CI/CD и Azure DevOps предоставляют комплексные решения с широкими возможностями интеграции и управления, подходящие для более сложных проектов.
  • Для проектов с особыми требованиями к кастомизации: Jenkins и TeamCity обеспечивают высокую гибкость и настраиваемость, что позволяет адаптировать пайплайны под специфические нужды проекта.

Выводы

Внедрение CI/CD-инструментов в автоматизированное тестирование обеспечивает повышение стабильности и скорости доставки программного продукта. Наиболее эффективными по совокупности параметров (время сборки, простота конфигурации, безопасность, поддержка тестов) оказались инструменты GitLab CI/CD, GitHub Actions и CircleCI. Jenkins и TeamCity остаются предпочтительными для команд, которым необходима высокая гибкость настройки.

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

Таким образом, CI/CD-инструменты становятся неотъемлемой частью стратегии обеспечения качества ПО. Их грамотное применение в связке с автоматизированным тестированием позволяет создавать устойчивые, масштабируемые и безопасные процессы разработки, соответствующие вызовам современной цифровой экономики.

Список литературы

  1. Рахматуллин Т.Г. Сравнительный анализ Apache Kafka и RabbitMQ // Актуальные исследования. – 2022. – № 49(128). – Ч. I. – С. 35-40. – URL: https://apni.ru/article/5144-sravnitelnij-analiz-apache-kafka-i-rabbitmq.
  2. CI/CD – что это и как работает непрерывная интеграция и доставка в DevOps – 64 символа. [Электронный ресурс]. – Режим доступа: https://selectel.ru/blog/what-is-ci-cd/ (2020 г.).
  3. Какие бывают виды тестирования? | Руководство по CI/CD в TeamCity. [Электронный ресурс]. – Режим доступа: https://www.jetbrains.com/ru-ru/teamcity/ci-cd-guide/faq/types-of-testing/.
  4. Что такое CI/CD? Разбираемся с непрерывной интеграцией и непрерывной поставкой / Хабр. [Электронный ресурс]. – Режим доступа: https://habr.com/ru/companies/otus/articles/515078/ (2020 г.).

Поделиться

Шепель А.. Эффективность использования CI/CD-инструментов в автоматизированном тестировании // Актуальные исследования. 2023. №6 (136). URL: https://apni.ru/article/5592-effektivnost-ispolzovaniya-ci-cd-instrumentov-v-avtomatizirovannom-testirovanii

Обнаружили грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики)? Напишите письмо в редакцию журнала: info@apni.ru

Похожие статьи

Другие статьи из раздела «Информационные технологии»

Все статьи выпуска
Актуальные исследования

#24 (259)

Прием материалов

14 июня - 20 июня

осталось 7 дней

Размещение PDF-версии журнала

25 июня

Размещение электронной версии статьи

сразу после оплаты

Рассылка печатных экземпляров

9 июля