首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在AWS CI/CD管道中运行selenium测试的最佳方式是什么

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

Stack Overflow用户
提问于 2019-02-22 16:31:40
回答 2查看 9.2K关注 0票数 4

我被分配了一项任务,将我开发的自动化测试集成到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镜像,并且有一个在docker容器上运行测试的maven项目

在这一点上,我真的很困惑和卡住了应该做什么,这里是一些问题,我正在寻找答案,

在单独运行或在docker container?

  • Should中运行maven项目的CI/CD上运行selenium测试的最佳方式是什么?
  • docker容器仅用作执行测试的环境?

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

EN

回答 2

Stack Overflow用户

发布于 2019-05-22 06:08:28

我使用了两种方法:

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

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

  • grab源代码(代码和测试)
  • 构建项目(使用代码)
  • 部署selenium (使用测试)

每一步都会产生输出,用于下一步。部署步骤生成selenium可以使用的URL。在我的例子中,"deploy“是部署一个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:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-02-23 11:25:58

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

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

首先,我们应该理解CI/CD工具是Jenkins、或Team City。另一方面,我们实现并行或分布式测试用例执行的不同方式是使用Selenium Grid & Docker

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

Docker 在使用网格以非常简单的步骤设置测试实验室方面提供了很大帮助,同时帮助消除了所有复杂性,Docker专业包括

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

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

竹子CI/CD工具: Jenkins vs. TeamCity vs.

什么是Jenkins?

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

什么是竹子?

竹子服务器是一台来自亚特兰大的CI/CD服务器。就像其他CI/CD服务器一样,竹子允许开发人员自动构建、集成和测试源代码,然后为部署准备应用程序。竹子还可以与Atlassian的其他工具(如Jira)无缝协作。

什么是TeamCity?

TeamCity是另一种商业CI/CD服务器,这次来自JetBrains公司。它以其令人难以置信的简单设置和漂亮的用户界面而闻名。

因此,请根据您的应用程序和测试依赖项&需求,以及您在一天结束时想要实现的目标,给出一个思考过程。首先在设计和方法上工作,然后请转向实施。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54822954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档