在 AWS CI/CD 管道中运行硒测试的最佳方法是什么

Nim*_*esh 6 continuous-integration selenium continuous-deployment docker aws-codepipeline

我被分配了一项任务,将我开发的自动化测试集成到 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

我应该做的是,一旦开发人员正在开发的 Web 应用程序通过管道部署,我将必须通过管道运行 selenium 测试,以检查 Web 应用程序是否已正确部署。(这是我需要澄清实现这一目标的最佳方法是什么)

我使用 selenium 脚本构建了一个 Maven 项目来检查 Web 应用程序上的内容,现在我在脚本中使用了虚拟 url,这是 Maven 项目

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

这就是我到目前为止所做的

此时我真的很困惑并且坚持应该做什么,这里有一些我正在寻找答案的问题,

  • 在 CI/CD 管道上运行硒测试的最佳方法是什么?
  • maven项目应该单独运行还是在docker容器内运行?
  • docker 容器是否应该仅充当执行测试的环境?

任何帮助将不胜感激,提前致谢:)

rom*_*nsh 5

我使用了两种方法:

  1. 使用测试套件设置 Docker 并在本地进行调试。然后使用 AWS CodeBuild 的“docker”映像部署 Dockerfile。

  2. CodeBuild 可以使用“selenium”图像https://github.com/awslabs/serverless-automated-ui-testing/blob/master/automated-ui-testing.yaml#L480,而不是在 codebuild.yml 中提供说明的 Dockerfile。

在这两种情况下,CodePipeline 都包含 4 个步骤:

  • 获取源代码(代码和测试)
  • 构建项目(使用代码)
  • 部署测试项目
  • 运行selenium(使用测试)

每个步骤都会产生输出,用于下一步。部署步骤生成 selenium 可以使用的 URL。在我的例子中,“部署”是部署 CloudFormation 堆栈,但它也可以将必要的文件复制到 S3 存储桶或使用其他方法。

我的设置类似,但比以下更简单: https: //aws.amazon.com/blogs/devops/using-aws-codepipeline-aws-codebuild-and-aws-lambda-for-serverless-automated-ui-testing/

挑战

最大的问题是如何正确组合 selenium、浏览器和 webdriver。关于如何操作有不同的指南。尝试一下对你有用的方法,所有的实现都很混乱,但我认为 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
Run Code Online (Sandbox Code Playgroud)


The*_*ety 1

在了解您的问题陈述后,很明显您正在寻找 CI/CD 工具以及测试用例的并行实施以减少执行时间。

\n\n

对于希望实施频繁交付方法(例如持续集成和交付)的软件开发团队来说,减少测试执行时间是关键\xc2\xa0

\n\n

首先我们要了解 CI/CD 工具是 Jenkins、Bamboo 或 Team City。另一方面,我们可以使用 Selenium Grid 和 Docker 来实现并行或分布式测试用例执行的不同方式

\n\n

使用Selenium Grid,可以在多台机器上并行运行多个测试,从而将执行时间从几天缩短到几小时。

\n\n

Docker通过非常简单的步骤使用 Grid 设置测试实验室提供了很大帮助,同时帮助消除所有复杂性,并且 Docker 的特色是

\n\n

使用预制容器来启动和运行比尝试从头开始设置 Selenium 要快得多。您不需要安装 Java #wining。

\n\n

您不需要安装所有必需的浏览器。也许您不想安装 Firefox 或想要使用特定的较旧版本的 Chrome 或具有特定插件或功能的版本进行测试?

\n\n

CI/CD 工具:Jenkins、TeamCity、Bamboo

\n\n

什么是詹金斯?

\n\n

Jenkins\xc2\xa0是当今市场上最流行的开源CI/CD工具。Jenkins 允许开发人员在将代码提交到源存储库后立即自动构建、集成和测试代码。这使得开发人员能够快速发现错误并最终更快地部署。

\n\n

什么是竹子?

\n\n

Bamboo\xc2\xa0 是来自\xc2\xa0Atlassian 的 CI/CD 服务器。与其他 CI/CD 服务器一样,Bamboo 允许开发人员自动构建、集成和测试源代码,然后准备应用程序进行部署。Bamboo 还可以与 Atlassian\xe2\x80\x99s 其他工具(如 Jira\xc2\xa0)无缝协作

\n\n

什么是团队城市?

\n\n

TeamCity\xc2\xa0 是另一个商业 CI/CD 服务器,这次来自 \xc2\xa0JetBrains 公司。它以其极其简单的设置和漂亮的用户界面而闻名。\xc2\xa0

\n\n

因此,请根据您的应用程序和测试依赖性和要求以及您最终想要实现的目标给出一个思考过程 - 您的目标。\n首先研究设计和方法,然后再转向实施。

\n