КОНТЕЙНЕРИЗАЦИЯ НА ПРИМЕРЕ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ: ПРЕИМУЩЕСТВА И НЕДОСТАТКИ

Рубрика конференции: Секция 7. Информационные технологии
DOI статьи: 10.32743/2587862X.2023.5.67.357500
Библиографическое описание
Шевчук В.И. КОНТЕЙНЕРИЗАЦИЯ НА ПРИМЕРЕ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ: ПРЕИМУЩЕСТВА И НЕДОСТАТКИ / В.И. Шевчук // Технические науки: проблемы и решения: сб. ст. по материалам LXXII Международной научно-практической конференции «Технические науки: проблемы и решения». – № 5(67). – М., Изд. «Интернаука», 2023. DOI:10.32743/2587862X.2023.5.67.357500

КОНТЕЙНЕРИЗАЦИЯ НА ПРИМЕРЕ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ: ПРЕИМУЩЕСТВА И НЕДОСТАТКИ

Шевчук Виталий Иванович

инженер по контролю качества программного обеспечения, международная компания-разработчик программного обеспечения «Yucca Digital»,

Беларусь, г. Витебск

 

CONTAINERIZATION BY THE EXAMPLE OF SOFTWARE TESTING: ADVANTAGES AND DISADVANTAGES

Vital Shauchuk

Software quality assurance engineer, international software company «Yucca Digital»,

Belarus, Vitebsk

 

АННОТАЦИЯ

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

ABSTRACT

The article considers advantages and disadvantages of using containerization in software testing. It analyses peculiarities of working with containers in different operating systems and on different hardware environments, as well as possible problems and solutions when using containerization in testing. The article is based on the author’s experience and literature review on the topic.

 

Ключевые слова: тестирование, контейнеризация, виртуализация, автоматизация, гипервизор, докер контейнер.

Keywords: testing, containerization, virtualization, automation, hypervisor, docker container.

Введение

Контейнеризация — это виртуализация на уровне операционной системы или виртуализация на уровне приложений через многочисленные сетевые ресурсы, реализованная таким образом, чтобы программные приложения могли работать в изолированных пользовательских пространствах, называемых контейнерами, в любой облачной или необлачной среде, независимо от типа или поставщика [3].

Контейнеры — это абстракция на уровне приложений, которая упаковывает код и зависимости вместе. Несколько контейнеров могут работать на одной машине и совместно использовать ядро операционной системы с другими контейнерами, каждый из которых работает как изолированный процесс в пользовательском пространстве [2].

Принцип работы контейнера и виртуальной машины

Следует различать контейнеры (рис. 1) и виртуальные машины (рис. 2). Несмотря на то, что они имеют схожие преимущества изоляции ресурсов и распределения, но работают по-разному. Виртуальные машины являются абстракцией физического оборудования, превращающие один сервер во множество серверов. Гипервизор позволяет нескольким виртуальным машинам работать на одной машине [4]. Каждая виртуальная машина включает в себя полную копию операционной системы, приложения, необходимые двоичные файлы и библиотеки – занимающие десятки гигабайт. Таким образом виртуальные машины как правило занимают больше ресурсов и медленнее загружаются. Контейнеры же виртуализируют операционную систему вместо оборудования, следственно занимают меньше места, чем виртуальные машины (образы контейнеров, как правило, десятки мегабайт по размеру), могут обрабатывать больше приложений и требуют меньше ресурсов и операционных систем [2].

 

Рисунок 1. Принцип работы контейнера на примере Docker

 

Рисунок 2. Принцип работы виртуальной машины

 

Преимущества контейнеризации

Контейнеры повышают производительность и загрузку ресурсов, делясь ресурсами ядра операционной системы, стека ТСР, файловой системы и другими системными ресурсами хост-машины, используя при этом меньшие памяти и процессорного времени [5, c. 4]. В отличие от виртуальных машин, ограничения ресурсов в контейнерах могут быть легко изменены в запущенных экземплярах без перезапуска (рис. 3). И ресурсы, которые не используются в пределах лимита, автоматически делятся с другими контейнерами, запущенными на том же аппаратном узле.

 

Рисунок 3. Масштабирование виртуальной машины и контейнера

 

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

Использование контейнеров позволяет упаковать большинство зависимостей и переменных приложения в один контейнер [1]. Внешние переменные не влияют на работу приложения. Тестирование выполняется на основе переменных, определенных в самом контейнере. Поэтому не требуется тестировать приложение в средах выполнения на разнообразных конфигурациях.

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

Тестировщики программного обеспечения часто проверяют различные версий приложения. Например, они могут тестировать версии приложения для разных операционных систем. Эти версии должны быть основаны на той же кодовой базе, но тестируются и развертываются отдельно. Если для таких проверок используются контейнеры, то они могут облегчить поддержку разнообразных тестовых веток. Это гораздо проще, чем пытаться поддерживать стабильные тестовые среды для множества веток на виртуальной машине или непосредственно на сервере. Изменения в конфигурации сервера могут в свою очередь создать изменения в тестовой среде, если вы не используете контейнеры. Учитывая продвинутую изоляцию контейнеров, различные версии приложений могут работать на одном аппаратном узле, не влияя друг на друга [6, с. 12]. Это, в свою очередь, позволяет запускать автоматизированные тесты для различных сборок приложений и увеличить скорость тестирования в среднем в 3 - 10 раз (рис. 4).

 

Рисунок 4. Время прохождения авто тестов в контейнере (красный) и виртуальной машине (синий)

 

Недостатки контейнеризации

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

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

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

Заключение

Технология контейнеризации имеет ряд преимуществ и недостатков. Контейнеры делают тестирование программного обеспечения более быстром, предсказуемым и легким в управлении. Они занимают меньше места, чем виртуальные машины, могут обрабатывать большее количество приложений и требуют меньше ресурсов и операционных систем. В то же время они могут сделать тестирование программного обеспечения более сложным из-за вариаций аппаратного окружения.

 

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

  1. Официальный сайт Amazon [Электронный ресурс]. URL: https://aws.amazon.com/what-is/containerization/ (дата обращения 2023-05-03).
  2. Официальный сайт Docker [Электронный ресурс]. URL: https://www.docker.com/resources/what-container/ (дата обращения 2023-05-03).
  3. Официальный сайт IBM [Электронный ресурс]. URL: https://www.ibm.com/in-en/cloud/learn/containerization (дата обращения 2023-05-03).
  4. Официальный сайт VMware [Электронный ресурс]. URL: https://www.vmware.com/topics/glossary/content/hypervisor.html (дата обращения 2023-05-03).
  5. Felter, W., Ferreira, A., Rajamony, R., & Rubio, J. An updated performance comparison of virtual machines and linux containers. Technology // IBM Research Report. 2014. С. 3-7.
  6. Turnbull, J. The Docker Book: Containerization is the new virtualization. 2014. С. 12-13