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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 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开始,自动化地触发并执行完整的应用构建、测试、和更新流程。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
4天前
|
Web App开发 数据采集 测试技术
五分钟轻松掌握 Python 自动化测试 Selenium
本文主要介绍了 Selenium 相关内容,主要涉及 Selenium 知识面,从开始的 Python 小案例,到后面的 API 全面了解,以及 Selenium 的常用功能,到最后的 XPATH 以及爬虫的认知。这些内容已经能够全面,且具有实践性。
|
7天前
|
Web App开发 IDE 测试技术
天呐!当揭开 Selenium 自动化测试框架的神秘面纱,设计与实现令人瞠目!
【8月更文挑战第12天】Selenium 是一强大自动化测试框架,用于Web应用测试。它含WebDriver、IDE和Grid等工具,支持Chrome、Firefox等浏览器。可通过编程模拟用户交互验证应用功能。例如使用Python结合Selenium WebDriver编写自动化测试脚本,实现打开网页、操作元素及断言等功能。还可结合测试框架和Selenium Grid提升测试效率和并行执行能力。
19 1
|
15天前
|
Web App开发 人工智能 测试技术
探索自动化测试的高效之路:以Selenium为例
【8月更文挑战第4天】在软件开发周期中,测试阶段扮演着至关重要的角色。自动化测试作为提高测试效率和准确性的有效手段,已逐渐成为开发流程中的标配。本文将通过介绍Selenium这一流行的自动化测试工具,探讨如何构建高效的自动化测试框架,并通过实际代码示例,揭示其在提升软件质量与开发效率方面的巨大潜力。
|
17天前
|
Web App开发 Java 测试技术
自动化测试中的神器:Selenium WebDriver
【8月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘航船,而Selenium WebDriver则是这艘航船上的强力引擎。本文将带你领略Selenium WebDriver的魅力,从安装到实战应用,一步步揭开其神秘的面纱,让你在自动化测试的旅程上乘风破浪。
18 1
|
13天前
|
分布式计算 大数据 Hadoop
最快方式搭建docker大数据 测试集群
【8月更文挑战第5天】快速搭建Docker大数据测试集群可采用预构建镜像与Compose文件、利用云服务如AWS的ECS、自动化工具如Ansible或参考在线教程。只需简单配置如内存分配及路径,运行`docker-compose up`即可启动含NameNode、DataNode等组件的Hadoop集群。根据需求与资源选择合适方法。
|
18天前
|
Web App开发 JavaScript 前端开发
探索自动化测试:以Selenium为例
【8月更文挑战第1天】在软件开发的海洋中,自动化测试如同一艘航船,它能够带领我们高效地穿梭于代码的波涛之中。本文将揭开自动化测试的神秘面纱,通过一个具体的例子—使用Selenium进行Web应用测试—来展示其魅力所在。我们将从搭建环境开始,逐步深入到编写测试用例,最后实现测试的自动化执行。这不仅是一次技术的探险,更是对效率和质量双重追求的体现。那么,让我们一起启航,去发现自动化测试的力量吧!
|
19天前
|
Web App开发 Java 测试技术
探索自动化测试的利器:Selenium WebDriver
【7月更文挑战第31天】在软件开发的海洋中,自动化测试如同指南针,为质量保驾护航。本文将深入介绍Selenium WebDriver这一强大的自动化测试工具,通过实际代码示例,揭示其在提高测试效率与准确性方面的巨大潜力。
14 0
|
19天前
|
Web App开发 测试技术 API
自动化测试的利器:Selenium WebDriver
【7月更文挑战第31天】在当今软件开发周期不断缩短的背景下,自动化测试已成为确保软件质量不可或缺的一环。Selenium WebDriver作为一款流行的自动化测试工具,以其灵活性和强大的功能受到广大开发者的喜爱。本文将深入探讨Selenium WebDriver的核心组件、工作原理以及如何通过代码示例进行基本的网页自动化操作。我们将通过实践来揭示Selenium WebDriver如何在提高测试效率的同时,保证软件产品的质量标准。
17 0
|
19天前
|
安全 测试技术 网络安全
网络安全的盾牌:漏洞管理、加密技术和安全意识自动化测试中的神器:Selenium WebDriver
【7月更文挑战第31天】在数字化浪潮中,信息安全成为保护个人隐私和商业秘密不可或缺的一环。本文将探讨网络安全中的常见漏洞,介绍加密技术的基础原理,并强调培养良好的安全意识的重要性。通过实际代码示例,我们将展示如何在现实世界中应用这些概念来提高系统的安全性。 【7月更文挑战第31天】在软件开发的广阔天地中,自动化测试以其高效、准确的特点,成为了提升软件质量的关键一环。Selenium WebDriver,作为自动化测试领域的佼佼者,不仅简化了测试流程,还提升了测试效率。本文将深入探讨Selenium WebDriver的核心组件和工作原理,并通过实际代码示例,展示其在自动化测试中的应用价值。无
30 0
|
19天前
|
Web App开发 前端开发 测试技术
自动化测试框架的设计与实现:以Selenium为例##
【7月更文挑战第31天】 在软件测试领域,自动化测试已成为提高产品质量、效率和可靠性的关键手段。本文将深入探讨如何设计并实现一个有效的自动化测试框架,并以流行的Selenium工具为例,展示其在实际项目中的应用。我们将通过具体代码示例,了解框架的搭建步骤、关键技术点以及如何克服常见挑战,旨在为读者提供一个清晰的指南,从而能够自行构建和维护自己的自动化测试系统。 ##
13 0