Рубрики
Без рубрики

Трубопровод автоматизации тестов непрерывной доставки – часть первая

Привет, меня зовут Диллан, я решил начать документировать некоторые из моих работ. Вы можете найти этот пост в моем W … Tagged Docker, Python, Testing, DevOps.

Привет, меня зовут Диллан, я решил начать документировать некоторые из моих работ. Вы можете найти этот пост на моем сайте. Этот конкретный пост является первой из трех отдельных статей.

Веб-сайт

Исходный код

Давайте перечислим именно то, что собиралось покрыть

  • [] Постройте тестовую инфраструктуру с помощью Docker и селена
  • [] Создайте Python Test Suite, чтобы работать против каждого контейнера
  • [] Настройка сервера Centos и регистрацию Gitlab-Runner
  • [] На push Run gitlab ci для создания контейнеров и выполнения тестов,
  • [] Создайте инфраструктуру и проберите тесты на Дженкинсе, запускаемых из Gitlab

Почему мы используем селенс сетку и докер?

Каждый контейнер представляет отдельный браузер и операционную систему. Идея состоит в том, чтобы все автоматизированные тесты централизованы в одном контейнере. Этот контейнер будет работать и выполнять тесты непосредственно против Хаб Анкет Хаб является центром управления для всех других узлов. Когда контейнер в концентраторе запускается, он запустит заданные тесты по каждому узлу/контейнеру.

Эта технология может помочь нам объединить время, сравнить поведение в нескольких браузерах и операционных системах и обеспечить более высокий уровень охвата кода для изменений фронта. Итак, как мы собираемся его использовать?

Используется для создания изображения для нашего тестового контейнера

FROM python:3.6

ADD . /uitests

WORKDIR /uitests

RUN pip install -r requirements.txt

RUN chmod +x wait-for-it.sh

Используется для стягивания изображения для каждого браузера и создания контейнеров для концентраторов и узлов

Мы определяем сеть, в которой мы также включаем изображение наших тестов из DockerFile

version: '2'
services:

  selenium_hub:
    container_name: selenium_hub
    image: selenium/hub
    networks:
      cao_ui_prodchecks: {}
    ports:
      - "4444"

  firefoxnode:
    container_name: firefox_node
    image: selenium/node-firefox
    networks:
      cao_ui_prodchecks: {}
    environment:
      - HUB_PORT_4444_TCP_ADDR=selenium_hub
      - HUB_PORT_4444_TCP_PORT=4444
    depends_on:
      - selenium_hub
    ports:
      - 5554

  chromenode:
    container_name: chrome_node
    image: selenium/node-chrome
    networks:
      cao_ui_prodchecks: {}
    environment:
      - HUB_PORT_4444_TCP_ADDR=selenium_hub
      - HUB_PORT_4444_TCP_PORT=4444
    depends_on:
      - selenium_hub
    ports:
      - 5555

  robottests:
    container_name: robottests
    command: /bin/sleep infinity
    networks:
      cao_ui_prodchecks: {}
    depends_on:
      - selenium_hub
    build: .
    volumes:
      - ./reports:/cao_ui_tests/reports

networks:
  cao_ui_prodchecks:
    driver: bridge

Dockerfile скопирует все папки Репозиторий Анкет Нажмите Repository, чтобы просмотреть конфигурацию проекта. Я решил использовать RobotFramework для быстрого примера.

# Build robot tests
docker build -t robottests:1 .

# Launch services 
docker-compose up -d

# execute tests
docker-compose exec robottests scripts/wait_for_it.sh -t 15 selenium_hub:4444 -- robot -A run_tests.robot

Вы должны увидеть все услуги запуска!

Creating network "cao_ui_prodchecks_cao_ui_prodchecks" with driver "bridge"
Creating selenium_hub ... done
Creating robottests ... done
Creating firefox_node ... done
Creating chrome_node ... done

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

  • Hub Selenium – управляет доставкой выполнения тестирования каждому узлу
  • Узел Firefox – Test Suite выполняется против браузера Firefox
  • Chrome Node – Test Suite выполняется против браузера Chrome
  • Тестовый контейнер – Dockerized Automated Test Suites

Давайте выполним тестовый контейнер. Примечание. Команда указана в раскрывающемся списке выше ^.

docker exec robottests scripts/wait_for_it.sh -t 15 selenium_hub:4444 -- robot -A run_tests.robot
wait_for_it.sh: waiting 15 seconds for selenium_hub:4444
wait_for_it.sh: selenium_hub:4444 is available after 0 seconds
==============================================================================
UI Prod Tests                                                                 
==============================================================================
UI Prod Tests.Login Page                                                      
==============================================================================
Authentication | PASS |
-----------------------------------------------------------------------------------
UI Prod Tests.Login Page | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
UI Prod Tests | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Debug: /cao_ui_tests/reports/debug.logenv
Output: /cao_ui_tests/reports/output.xml
Log: /cao_ui_tests/reports/log.html
Report: /cao_ui_tests/reports/report.html

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

wait_for_it.sh: waiting 15 seconds for selenium_hub:4444
wait_for_it.sh: selenium_hub:4444 is available after 0 seconds

Это сценарий оболочки, который жизненно важен для выполнения и расположен в каталоге сценариев Репозиторий Анкет

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

wat-for-it.sh Скрипт предоставляет вам возможность ждать, пока служба будет встать, но не готово

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

  • [X] Создайте тестовую инфраструктуру с Docker и SeleniumGrid
  • [X] Создайте Python Test Suite, чтобы работать против каждого контейнера
  • [] Настройка сервера Centos и регистрацию Gitlab-Runner
  • [] На push Run gitlab ci для создания контейнеров и выполнения тестов,
  • [] Создайте инфраструктуру и проберите тесты на Дженкинсе, запускаемых из Gitlab

В следующем посте мы обсудим настройку сервера CentOS для запуска наших тестов CI, которые будут создавать нашу инфраструктуру и запустить наши тестовые комплексы и изменения кода в наших автоматических тестах. Дженкинс будет вытащить из репозитория, поэтому важно убедиться, что мы не добавляем нарушающие изменения в нашу кодовую базу.

Оригинал: “https://dev.to/teaglebuilt/continuous-delivery-test-automation-pipeline-part-one-2dab”