gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:06:08 27 4
gpt4 key购买 nike

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

这是我迄今为止所做的,

  • 我在本地 PC 上运行了一个 docker 容器(这是我使用的 docker 镜像 https://hub.docker.com/r/selenium/standalone-chrome)
  • 我有在 docker 容器上运行测试的 maven 项目

  • 在这一点上我真的很困惑并坚持应该做什么,这里有一些我正在寻找答案的问题,
  • 在 CI/CD 管道上运行 Selenium 测试的最佳方法是什么?
  • Maven 项目应该单独运行还是在 docker 容器中运行?
  • docker 容器是否应该只作为执行测试的环境?

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

    最佳答案

    我使用了两种方法:

  • 使用测试套件设置 Docker 并在本地进行调试。然后使用 AWS CodeBuild 的“docker”镜像部署 Dockerfile。
  • CodeBuild 可以使用“ Selenium ”图像 https://github.com/awslabs/serverless-automated-ui-testing/blob/master/automated-ui-testing.yaml#L480 , 而不是 Dockerfile 您在 codebuild.yml 中提供说明。

  • 在这两种情况下,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

    关于selenium - 在 AWS CI/CD 管道中运行 selenium 测试的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822954/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com