我被分配了将我开发的自动化测试集成到AWS CI / CD管道的任务,现在我正在研究如何实现此任务一段时间。经过研究后,我发现很多人都使用了诸如Jenkins / Docker之类的工具来完成此任务,即使在进行了所有研究之后,我仍然对实现此目标的最佳方法感到困惑,但其中一些文档我发现了,
https://www.pawangaria.com/post/docker/how-to-use-docker-with-webdriver/
https://dzone.com/articles/qa-automation-pipeline-learn-how-to-build-your-own-1
我应该做的是,一旦开发人员正在处理的Web应用程序通过管道部署,我将不得不通过管道运行硒测试,以检查Web应用程序是否正确部署。 (这是我需要澄清实现此目标的最佳方法的地方)
我用硒脚本构建了一个maven项目,以检查Web应用程序上的内容,因为现在我已经在脚本中使用了虚拟网址,这是maven项目
https://github.com/nimeshdilshan96/pipeline-script-test.git
这是我到目前为止所做的,
在这一点上,我真的很困惑,坚持应该做什么,这是我在寻找答案的一些问题,
任何帮助将不胜感激,在此先感谢:)
答案 0 :(得分:1)
理解问题陈述后,很明显,您正在寻找CI / CD工具以及测试用例的并行实现,以减少执行时间。
减少测试执行时间对于希望实施频繁交付方法(例如持续集成和交付)的软件开发团队而言至关重要。
首先,我们将了解CI / CD工具是Jenkins,Bamboo或Team City。另一方面,实现并行或分布式测试用例执行的不同方法是使用Selenium Grid和Docker
使用 Selenium Grid ,可以在多台计算机上并行运行多个测试,从而将执行时间从数天缩短至数小时。
Docker 在非常简单的步骤中为使用Grid设置测试实验室提供了很多帮助,同时帮助消除了所有复杂性和Docker Specialties。
使用预制容器启动和运行比尝试从头开始设置Selenium要快得多。您不需要安装Java #winning。
您不需要安装所有必需的浏览器。也许您不想安装Firefox或不想使用特定的较旧版本的Chrome或具有特定插件或功能的版本进行测试?
CI / CD工具:詹金斯vs. TeamCity vs. Bamboo
什么是詹金斯?
Jenkins是当今市场上最受欢迎的开源CI / CD工具。 Jenkins允许开发人员在将代码提交到源存储库后立即自动构建,集成和测试代码。这使开发人员可以迅速发现错误,并最终更快地进行部署。
什么是竹子?
Bamboo是Atlassian的CI / CD服务器。与其他CI / CD服务器一样,Bamboo允许开发人员自动构建,集成和测试源代码,然后为部署做好准备。 Bamboo还可以与Atlassian的其他工具(例如Jira)无缝配合使用
什么是TeamCity?
TeamCity是另一台商用CI / CD服务器,这次来自JetBrains公司。它以其极其简单的设置和精美的用户界面而闻名。
因此,请根据您的应用程序进行测试,并测试依赖项和要求以及最终要实现的目标-您的目标。 首先进行设计和方法方面的工作,然后再进行实施。
答案 1 :(得分:1)
我使用了两种方法:
使用测试套件设置Docker并在本地进行调试。然后使用AWS CodeBuild的“ docker”映像部署Dockerfile。
CodeBuild可以使用“硒”映像https://github.com/awslabs/serverless-automated-ui-testing/blob/master/automated-ui-testing.yaml#L480,而不是Dockerfile,您可以在codebuild.yml中提供说明。
在两种情况下,CodePipeline均包含4个步骤:
每个步骤都会产生输出,供下一步使用。部署步骤生成硒可以使用的URL。在我的情况下,“部署”正在部署CloudFormation堆栈,但它也可以将必要的文件复制到S3存储桶或使用其他方法。
最大的问题是获得硒,浏览器和WebDriver的正确组合。关于如何执行有不同的指南。尝试适合您的方法,所有实现都是混乱的,但是我认为Docker更可靠。
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