Docker与Web自动化测试:一键创建Selenium Grid集群

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker的容器技术的优秀特性,例如秒级启动、应用隔离、良好的可移植性等,可以在DevOps中大显身手,并推动持续集成,持续交付等理念落地。今天我们就将结合Selenium Grid来介绍Docker在自动化测试中的使用场景。

Docker的容器技术的优秀特性,例如秒级启动、应用隔离、良好的可移植性等,可以在DevOps中大显身手,并推动持续集成,持续交付等理念落地。今天我们就将结合Selenium Grid来介绍Docker在自动化测试中的使用场景。

Selenium Grid 简介

Selenium 是针对Web应用的自动化测试框架和工具集合,支持多种浏览器和编程语言。Selenium的测试用例直接运行在浏览器中,并模拟用户的操作。

Selenium Grid是一个分布式Web测试工具,可以将测试透明地分发到多个主机上,并行地执行。Selenium Grid架构中包含两个主要角色:Hub是中心点控制节点,而Node是Selenium的工作节点,它们注册到Hub上,并会操作浏览器执行由Hub下发的自动测试用例。

14583886947794

以传统的方式部署分布式Selenium Grid集群有一定的技术难度。而且一个浏览器在操作系统上只能安装一个版本且只能有一个运行实例。比如为了针对不同版本的Chrome进行测试,需要将指定版本的Chrome浏览器安装到不同物理机或虚拟机上,这样要耗费大量时间和机器成本来准备测试环境。

在去年Selenium Conf 2015上,Marek Jastrzebaki介绍并演示了利用Docker技术来部署Selenium Grid的示例,可以优雅地解决上述问题。

让我们也尝试一下Docker带给我们不同的测试体验吧 :-)

利用阿里容器服务搭建自动测试环境

我们将在阿里容器服务上面搭建Selenium Grid的示例,并运行自动化测试用例。

下面的DockerCompose模板描述了一个Selenium Grid集群的部署方式:它会创建一组容器,其中包含1个Selenium Hub容器,3个Firefox Node和3个Chrome Node。这里所有的Docker镜像可以从 https://github.com/denverdino/docker-selenium 获得,它们在Selenium官方镜像基础上,修复了节点和Hub容器在重新启动后的一些问题。这些修改稍后会提交社区。

hub:
  image: registry.aliyuncs.com/denverdino/selenium-hub
  ports:
    - 4444:4444
  labels:
    aliyun.routing.port_4444: http://selenium/
firefox:
  image: registry.aliyuncs.com/denverdino/selenium-node-firefox
  links:
    - hub
  labels: 
    aliyun.scale: "3"
chrome:
  image: registry.aliyuncs.com/denverdino/selenium-node-chrome
  links:
    - hub
  labels: 
    aliyun.scale: "3"

注:你可以利用Docker Compose在本地Docker环境上测试上述脚本,但是需要手工伸缩节点。

在阿里云容器服务上部署完成之后,很快我们就可以看到容器应用所包含的所有容器都已经启动成功。

14583894550228

我们可以通过点击hub服务来获得Grid Console的访问信息。

14583980964870

点击访问端点后,在浏览器中可以看到,Selenium Grid的控制台里已经有6个节点就绪,其中3个是Firefox节点,3个是Chrome节点。

14583981369820

下面我们来运行Web测试。我提供了一个非常简单的测试示例:利用Python的Selenium bindings和nose并行测试框架,它会并行地调用Firefox和Chrome在百度和云栖社区上搜索和docker相关的内容。

为了简化使用,我也提供Docker镜像来调用Selenium测试脚本。详见 https://github.com/denverdino/docker-selenium/tree/master/test

我们选择之前Selenium测试应用,点击配置变更后将docker-compose模板更新为如下内容。它会添加test service来调用hub分发执行测试用例。

hub:
  image: registry.aliyuncs.com/denverdino/selenium-hub
  ports:
    - 4444:4444
  labels:
    aliyun.routing.port_4444: http://selenium/
firefox:
  image: registry.aliyuncs.com/denverdino/selenium-node-firefox
  links:
    - hub
  labels: 
    aliyun.scale: "3"
chrome:
  image: registry.aliyuncs.com/denverdino/selenium-node-chrome
  links:
    - hub
  labels: 
    aliyun.scale: "3"
test:
  image: registry.aliyuncs.com/denverdino/selenium-test
  links:
    - hub
    - firefox
    - chrome

14584321377231
注意:修改应用配置后,需要更新应用版本便于追踪。

变更配置完成后过几十秒钟,我们发现“test”服务已经停止运行,在日志中我们可以看到所有自动化测试已经执行完毕。

14584322685740

总结

通过Docker可以大大简化Selenium Grid分布式测试的部署,削减机器资源消耗,减少配置虚拟机所花的时间,极大的提高了测试效率。

Docker和测试领域还可以有很多结合点:比如利用Docker镜像良好的可移植性,我们可以在开发、测试、生产环节中保证一致性;利用容器编排,我们可以低成本、快速的构建集成测试环境,来对应用进行有效验证,等等。

以后我们还会介绍如何利用阿里云容器服务把DevOps过程串联起来,让开发者简单从一个简单的git commit开始,自动化地触发并执行完整的应用构建、测试、和更新流程。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
人工智能 测试技术 芯片
AMD Ryzen AI Max+ 395四机并联:大语言模型集群推理深度测试
本文介绍了使用四块Framework主板构建AI推理集群的过程,并基于AMD Ryzen AI Max+ 395处理器进行大语言模型推理性能测试,重点评估其并行推理能力及集群表现。
193 0
AMD Ryzen AI Max+ 395四机并联:大语言模型集群推理深度测试
|
11月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
488 8
|
12月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
471 5
|
8月前
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
369 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
8月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
204 19
|
10月前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
1288 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
7月前
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
352 3
|
10月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
276 31
Selenium IDE:Web自动化测试的得力助手
|
10月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
573 17
Selenium:强大的 Web 自动化测试工具
|
11月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
425 4