今天我分享的主题是“从小作坊到工厂:什么是 Selenium Grid?如何搭建 Selenium Grid?”。
从今天开始,我们就要一起进入测试基础架构这个新的系列了。我将用四篇文章的篇幅,从 0 到 1,为你深入剖析大型互联网企业的测试基础架构设计,以及其原始驱动力,和你探讨测试执行环境设计、测试报告平台设计以及测试基础架构与 CI/CD 的集成等内容。当然,在这其中还会涉及到很多具有前瞻性的设计创新。
虽说测试基础架构是资深测试开发人员的必备技能,但此时你可能还并不清楚测试基础架构到底指的是什么?没关系,当你阅读完这个系列的文章之后,相信你一定可以对测试基础架构,以及其关键设计有一个清晰、全面的认识。
所以,今天我就先和你分享一下,我眼中的测试基础架构到底是指什么?
什么是测试基础架构?
测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此,我们也把测试基础架构称之为广义的测试执行环境。通常来讲,测试基础架构主要包括以下内容:
- 执行测试的机器;
- 测试用例代码仓库;
- 发起测试执行的 Jenkins Job;
- 统一的测试执行平台;
- 测试用例执行过程中依赖的测试服务,比如提供测试数据的统一测试数据平台、提供测试全局配置的配置服务、生成测试报告的服务等;
- …
由于测试基础架构的核心是围绕测试执行展开的,所以我们今天就先来重点讨论一下“执行测试的机器”部分。
这部分内容的展开,我会从早期最简单的方法谈起,然后探讨这个方法在实际执行中的弊端,并由此引出我们今天讨论的主角:Selenium Grid。
先试想一下:你要在一个典型测试场景中,基于某种浏览器去执行 Web 应用的 GUI 测试。这时,你首先要做的就是找到相应的机器,并确保上面已经安装了所需的浏览器。如果这台机器上,还没有安装所需浏览器的话,你需要先安装这个浏览器。一切准备就绪后,你就可以使用这台机器执行测试了。
如果你要执行的测试只需要覆盖一种浏览器的话,那就很简单了,你只要事先准备好一批专门的机器或者虚拟机,然后安装好所需的浏览器就可以了。同时,如果测试用例的数量也不是很多的话,你需要的这批机器或者虚拟机的数量也不会很多。执行测试时,你只要将需要使用的那台机器的地址提供给测试用例就可以了。
其实,这种模式就是典型的“小作坊”模式。“小作坊”模式的特点就是,人工维护一批数量不多(通常在 30 台以内)的执行测试的机器,然后按需使用。
对于小团队来讲,“小作坊”模式的问题并不大。但是,随着测试覆盖率要求的提升,以及测试用例数量的增加,这种“小作坊”模式的弊端就逐渐显现,并被不断放大了。其中,最主要问题体现在以下四个方面:
-
当 Web 应用需要进行不同浏览器的兼容性测试时,首先你需要准备很多台机器或者虚拟机,并安装所需的不同浏览器;然后,你要为这些机器建立一个列表,用于记录各台机器安装了什么浏览器;最后,你在执行测试时,需要先查看机器列表以选择合适的测试执行机。
-
当 Web 应用需要进行同一浏览器的不同版本的兼容性测试时,你同样需要准备很多安装有同一浏览器的不同版本的测试执行机,并为这些机器建立列表,记录各台机器安装的浏览器版本号,然后执行测试时先查看列表以选择合适的测试执行机。
-
测试执行机的机器名或者 IP 发生变化,以及需要新增或者减少测试机时