【问题标题】:How do I create a Bluemix automated test node that runs a Selenium script?如何创建运行 Selenium 脚本的 Bluemix 自动化测试节点?
【发布时间】:2017-09-23 04:19:47
【问题描述】:
我想在 Bluemix 持续交付工具链管道中插入一个自动化测试阶段。测试阶段应该使用 Selenium Webdriver 和脚本运行 UI 测试。制作这样一个舞台的好方法是什么?
我在 https://hub.jazz.net/docs/deploy/ 上查看了 Bluemix 构建和部署教程,但它没有介绍如何构建一个测试节点并执行调用 Selenium 脚本的作业。
我在较新的 Toolchain 文档中也找不到此类信息。
我访问了 Sauce-labs 站点,看看这是否是在 Bluemix 中构建自动化测试节点的最佳方式,看起来这可能是一种方法,但我想看看我是否可以在没有的情况下直接在 BlueMix 中构建舞台使用单独的服务。
【问题讨论】:
标签:
selenium-webdriver
automated-tests
ibm-cloud
devops-services
【解决方案1】:
我们的测试框架团队最近在这个主题上花了一些时间。
我们从管道运行 UI 测试的问题是我们没有任何适用于所有环境的 Selenium 解决方案。 Saucelabs 适用于公共 bluemix 环境,但无法访问内部(围绕使用 Sauce Connect 的限制)。我们设置了一个 selenium 网格,但 V1 管道无法访问它。
我们的 POC 使用 Jenkins 构建 Docker 映像并将其上传到 Bluemix 映像存储库。
Docker 镜像包含:
- 基础镜像 selenium/standalone-chrome 提供 Selenium 服务器和 Chrome 浏览器
- 所需工具:Ant、Git、Java
- 从我们的测试存储库中获取和构建二进制文件。
构建该映像是为了利用相对基本的脚本(用于驱动 testng 的 ant)从管道运行我们的自定义测试解决方案。
(在管道中运行 docker 镜像)
cf ic run --name ${CONTAINER_NAME}_${BUILD_NUMBER} ${IMAGE_NAME}
(您想发送到测试脚本的任何其他内容)
优点和缺点
- + 所有源都包含并内置在映像中 => 如果您依赖克隆测试框架、构建相关 jar 文件等,可以更快地执行测试。
- + 每个图像都包含它自己的 Selenium 服务器 => 不受其他测试的干扰
- - 管道中 IBM 容器支持的初始化时间