Тестирование В Openshift: Автоматизированное Тестирование

Это заключительная часть серии из трех частей ( первая статья , вторая статья ), которые посвящены автоматизированному тестированию программных продуктов в Openshift Origin. В этой статье будут рассмотрены аспекты тестирования в контейнерах и особенности построения CI/CD с участием таких продуктов, как:

  1. Openshit Origin — как система для развертывания тестовых сред.
  2. Jenkins — как инструмент непрерывной интеграции.

  3. Testlink похож на систему управления тестированием.

  4. Robot Framework — как фреймворк для написания тестов.

    Для большей репрезентативности я подготовил образ Vagrant, содержащий предварительно настроенную среду из вышеперечисленных продуктов (все объекты и механизмы, перечисленные в этой статье, можно легко проверить).

    Для повышения уровня понимания материала я создал два задания: задание на сборку и задание на тестирование.

    Обе задачи разделены на этапы и подробно описаны.



Быстрый старт:

  1. Скачать образ Vagrant И Vagrantfile


  2. vagrant box add --name viewshift viewshift-1.0.box && vagrant up

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

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

По умолчанию среда запускается в графическом режиме.

Это было сделано для того, чтобы обойти проблему с доступом к продуктам извне.

Настроен автоматический вход пользователя.

Пользовательский Firefox содержит сохраненные закладки и учетные данные для доступа к продуктам.

Системные пользователи user и vagrant имеют неограниченный доступ к sudo. Используемое программное обеспечение:

Имя Версия Реквизиты для входа
Опеншифт 1.5.1 админ:админ
Дженкинс 2.60.1 админ:админ
Тестлинк 1.9.16 админ:админ
Гоги 0.11.19.0609 мерзавец: мерзавец
Мариадб 5.5.52 корень: корень
Плагин OpenShift Pipeline Jenkins 1.0.47 -
Плагин TestLink 3.12 -
Плагин Robot Framework 1.6.4 -
Плагин сценария после сборки 0.17 -
система - корень: корень
система - пользователь: пользователь
система - бродяга: бродяга
ША1: 0992d621809446e570be318067b70fe2b8e786b2 viewshift-1.0.box

Задача сборки:

Задача сборки предполагает создание образа Docker с приложением «curl», которое впоследствии будет участвовать в задаче тестирования.

Примечание: корневой процесс (PID 1) в контейнере руководитель .

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

Принципиальная схема:

Тестирование в Openshift: автоматизированное тестирование

? краны :

  1. Определим переменные, которые будут задействованы в задаче: ПРОЕКТ — название проекта Openshift. Для этого проекта была создана учетная запись ServiceAccount «jenkins», имеющая права администратора в проекте.

    Этот ServiceAccount используется для доступа к проекту из Jenkins (эта учетная запись также используется в задаче тестирования).

    ИМЯ ПРИЛОЖЕНИЯ И ПРИЛОЖЕНИЕ_ВЕРСИЯ — условное имя и версия приложения, которые, тем не менее, фигурируют в нескольких местах: имя и тег полученного Docker-образа, имя запущенного билда и т.д.

  2. После того, как необходимые переменные определены (продумана детализация/различимость задач в проекте), необходимо распределить их по всем YAML-конфигурациям Openshift и другим шагам Jenkins.
  3. На этом этапе создается объект BuildConfig, на основе которого будет создан и выполнен объект Build.
  4. Процесс сборки начинается на основе созданного BuildConfig. В случае успеха полученный образ будет помещен во внутренний реестр Docker.
  5. Все созданные объекты удаляются независимо от успеха сборки.



Задача тестирования:

Под задачей тестирования понимается процесс тестирования приложения «curl», которое взаимодействует с сервисом «nginx» по протоколу HTTP. Мы хотим убедиться, что приложение работает корректно и проходит указанные тесты.

Принципиальная схема:

Тестирование в Openshift: автоматизированное тестирование

? краны :

  1. Определяем параметры, которые будут задействованы в задаче: ПРОЕКТ — название проекта Openshift. ПЛАН ТЕСТИРОВАНИЯ — название плана тестирования в Testlink. Задача завершится неудачно, если указанный план тестирования отсутствует в Testlink. ИМЯ ПРИЛОЖЕНИЯ И ПРИЛОЖЕНИЕ_ВЕРСИЯ — условное имя и версия приложения, аналогичные тем, что указаны в задаче сборки.

    TEST_CMD — переменная, содержащая имя исполняемого файла, который будет запущен внутри контейнера.

    Аргументы командной строки указываются на соответствующем этапе Jenkins. TEST_TIMEOUT — числовое выражение, задающее время ожидания выполнения команды внутри контейнера.

    По истечении этого времени задача Jenkins завершается с ошибкой.

  2. см.

    задачу сборки.

  3. На этом этапе задается конфигурация Testlink, в которой указывается: с каким сервером будет установлено соединение, какой план тестирования будет использоваться (все тесты, назначенные этому плану тестирования, загружаются из плана тестирования для последующего сравнения), под какой платформой было проведено тестирование и т. д. Все это необходимо для последующей публикации пройденных тестов обратно в Testlink и отображения отчета о тестировании непосредственно в Jenkins.
  4. Этот этап предназначен для создания Сервиса.

    Созданные сервисы будут указывать на приложения, которые будут запущены позже.

    Эти сервисы проверяют доступность приложений.

  5. На этом этапе создается Pod для приложения «nginx».

  6. На этом этапе создается Pod для приложения «curl».

    Образ для данного контейнера — это образ, созданный во время задачи сборки.

    В отличие от «nginx», в этот образ добавлен «общий» том данных, который позволит контейнеру взаимодействовать с файловой системой рабочего узла.

  7. После создания всех подов необходимо проверить доступность приложений через ранее опубликованные сервисы.

  8. На этом этапе в поде запускается команда тестирования и далее ожидается завершение этой команды.

  9. После прохождения всех тестов отчет о тестировании копируется в рабочую область задачи для последующего импорта в Testlink.
  10. На этом этапе указывается стратегия (их может быть несколько) сравнения пройденных тестов с тем, что было получено из ранее заданного плана тестирования.

    В этом случае происходит простое сравнение названий тестовых случаев.

    После всех операций в Testlink публикуется отчет о тестировании.

  11. Помимо отчета Teslink в формате Junit, существует отчет о тестировании в формате Robot Framework, который установит статус выполненной задачи на основе пороговых значений пройденных тестов.

  12. На этом этапе все объекты Openshift, созданные в ходе выполнения задачи, удаляются.



Вместе:



Преимущества и недостатки тестирования в контейнерах:

Недостатки:
  1. Только Линукс.

    Так называемое «легкая» виртуализация и, наверное, стоит подождать изменения в ситуации , но пока только Linux.

  2. Версия с одним ядром для всех контейнеров.

    Возможно в пункте 1

  3. Только х86_64. Нет, конечно у вас образ может быть х86, но ядро будет х86_64. Для кого-то это может стать препятствием.

  4. Отсутствие вложенного SELinux ( существуют вложенные группы CGroups ).

  5. Отсутствие полноценного видеоустройства и доступа к экрану.

    Возможно в пункте 1

Плюсы:
  1. Скорость и гибкость запускаемых сред, высокая плотность.

  2. Унифицируйте доставку, переносимость и повторяемость приложений.



Заключение:

Openshift Origin в сочетании с другими инструментами обеспечивает впечатляющую гибкость и эффективность.

Продуманная схема именования проектов/объектов позволяет избежать ошибок при массовом запуске задач тестирования.



Благодарность:

Хочу выразить огромную благодарность сотрудникам Google за создание такой замечательной платформы.

Хочу выразить благодарность сотрудникам Red Hat, которые превратили замечательную платформу в готовый продукт.

Полезные ссылки:

  1. Minikube — быстрый способ начать работу с Kubernetes
  2. Minishift — быстрый способ начать работу с Openshift
  3. Почему встроенный реестр использует IP-адрес вместо полного доменного имени?
Теги: #Openshift #тестирование #Анализ и проектирование систем #Openshift
Вместе с данным постом часто просматривают: