Каков наилучший способ проведения испытаний селена в конвейере AWS CI / CD? - PullRequest
0 голосов
/ 22 февраля 2019

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

http://www.testautomationguru.com/selenium-webdriver-how-to-run-automated-tests-inside-a-docker-container/

https://www.pawangaria.com/post/docker/how-to-use-docker-with-webdriver/

https://aws.amazon.com/blogs/devops/using-aws-codepipeline-aws-codebuild-and-aws-lambda-for-serverless-automated-ui-testing/

https://dzone.com/articles/qa-automation-pipeline-learn-how-to-build-your-own-1

Что я должен делатьесли веб-приложение, над которым работают разработчики, развернуто через конвейер, мне придется запустить тест на селен по конвейеру, чтобы проверить, правильно ли развернуто веб-приложение.(Здесь мне нужно кое-что прояснить, что является лучшим способом для достижения этой цели)

Я создал проект maven со сценариями selenium для проверки содержимого в веб-приложении, пока что я использовал фиктивный URL вскрипты, вот проект maven

https://github.com/nimeshdilshan96/pipeline-script-test.git

Это то, что я делал до сих пор,

  • У меня есть контейнер докераработает на моем локальном ПК (это образ докера, который я использовал https://hub.docker.com/r/selenium/standalone-chrome)
  • У меня есть проект maven, который запускает тесты на контейнере докера

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

  • Каков наилучший способ выполнить тесты селена на конвейере CI / CD?
  • Должен липроект maven запускается отдельно или внутри контейнера Docker?
  • Должен ли Docker-контейнер действовать только как среда, в которой выполняются тесты?

Любая помощь будет признательна, спасибо заранее:)

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Я использовал два подхода:

  1. настроить Docker с набором тестов и выполнить локальную отладку.Затем разверните Dockerfile, используя «docker» образ AWS CodeBuild.

  2. CodeBuild может использовать изображение «selenium» https://github.com/awslabs/serverless-automated-ui-testing/blob/master/automated-ui-testing.yaml#L480, вместо Dockerfile, вы предоставляете инструкции в codebuild.yml.

В обоихВ некоторых случаях CodePipeline состоит из 4 шагов:

  • захват исходного кода (код и тесты)
  • сборка проекта (с использованием кода)
  • развертывание тест-проекта
  • запустить селен (с использованием тестов)

Каждый шаг производит вывод, который используется на следующем шаге.Шаг развертывания генерирует URL, который может использовать селен.В моем случае «deploy» развертывал стек CloudFormation, но он также мог копировать необходимые файлы в корзину S3 или использовать какой-то другой подход.

Мои настройки были похожи, но намного проще, чем: https://aws.amazon.com/blogs/devops/using-aws-codepipeline-aws-codebuild-and-aws-lambda-for-serverless-automated-ui-testing/.

Испытания

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

Пример docker-compose:

version: '2'
services:
  hub:
    image: selenium/hub:3.3.1
    ports: 
      - "4444:4444"
  chrome:
    image: selenium/node-chrome:3.3.1
    links: 
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      DBUS_SESSION_BUS_ADDRESS: /dev/null

  firefox:
    image: selenium/node-firefox:3.3.1
    links:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444

  phantomjs:
    image: selenium/node-phantomjs:3.3.1
    links:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      PHANTOMJS_OPTS: "--ignore-ssl-errors=true"

  b3-test:
    build: .
    volumes: 
      - ./logs:/app/survey-tests/logs
      - ./screenshots:/app/survey-tests/screenshots
    environment:
      - BTEST_DRIVER=REMOTE
      - BTEST_REMOTE=http://hub:4444/wd/hub
0 голосов
/ 23 февраля 2019

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

Сокращение времени выполнения теста является ключевым для групп разработчиков программного обеспечения, которые желаютдля реализации частых подходов к доставке (таких как непрерывная интеграция и доставка)

Сначала мы поймем, что инструментами CI / CD являются Jenkins, Bamboo или Team City.С другой стороны, мы можем использовать Selenium Grid & Docker

, используя Selenium Grid, , для выполнения нескольких параллельных или распределенных тестовых случаев.одновременное использование нескольких машин, что сокращает время выполнения с нескольких дней до нескольких часов.

Docker очень помогает в настройке тестовых лабораторий с использованием Grid за очень простые и простые шаги, помогая устранить все сложности иСпециализация Docker:

Гораздо быстрее начать работу с использованием готовых контейнеров, чем пытаться настроить Selenium с нуля.Вам не нужно устанавливать Java # победы.

Вам не нужно устанавливать все необходимые браузеры.Возможно, вы не хотите устанавливать Firefox или хотите протестировать его с определенной более старой сборкой Chrome или с определенным плагином или возможностями?

CI / CD Tools: Jenkins против TeamCity vs. Bamboo

Что такое Jenkins?

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

Что такое Bamboo?

Bamboo - это CI / CD-сервер от Atlassian.Как и другие CI / CD-серверы, Bamboo позволяет разработчикам автоматически создавать, интегрировать и тестировать исходный код, а затем подготавливать приложение к развертыванию.Bamboo также без проблем работает с другими инструментами Atlassian, такими как Jira

Что такое TeamCity?

TeamCity - это еще один коммерческий сервер CI / CD, на этот раз от фирмы JetBrains.Он известен своей невероятно простой настройкой и красивым пользовательским интерфейсом.

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

...