40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
什么是测试执行环境?
狭义的测试执行环境,单单指测试执行的机器或者集群。
广义的测试执行环境,除了包含具体执行测试的测试执行机以外,还包括测试执行的机器或者集群的创建与维护、测试执行集群的容量规划、测试发起的控制、测试用例的组织以及测试用例的版本控制等等。
一般情况下,中大型企业在测试基础架构上的投入,主要是为了解决以下这几方面的问题:
-
简化测试的执行过程。我们不用每次执行测试时,都必须先去准备测试执行机,因为测试执行机的获取就像日常获取水电一样方便了。
-
最大化测试执行机器的资源利用率,使得大量的测试执行机可以以服务的形式为公司层面的各个项目团队提供测试执行的能力。
-
提供大量测试用例的并发执行能力,使得我们可以在有限的时间内执行更多的测试用例。
-
提供测试用例的版本控制机制,使得测试执行的时候可以根据实际被测系统的软件版本自动选择对应的测试用例版本。
-
提供友好的用户界面,便于测试的统一管理、执行与结果展示。
-
提供了与 CI/CD 流水线的统一集成机制,从而可以很方便地在 CI/CD 流水线中发起测试调用。
高效的测试基础架构应该是:
-
保证对使用者的“透明性”;
-
需要具备对维护者而言的“易维护性”;
-
做到对大量测试用例并发执行的“可扩展性”;
-
兼顾移动 App 对测试执行环境的需求。
小企业采用的 Appium + OpenSTF + Selenium Gird 的方案。
早期的测试基础架构
1.自动化测试开发人员在本地机器开发和调试测试用例。
2.将开发的测试用例代码,Push 到代码仓库。
3.在 Jenkins 中建立一个 Job,用于发起测试的执行。
存在问题:
-
每次通过 Jenkins Job 发起测试时,你都需要填写测试用例需要在哪台测试执行机上执行。
-
每次通过 Jenkins Job 发起测试时,需要确认测试执行机是否处于可用状态。
-
需要知道远端测试执行机的 IP 、名字、数量的变动情况。
经典的测试基础架构
解决了以下问题:
-
每次发起测试时,就不再需要指定具体的测试执行机器了,只要提供固定的 Selenium Hub 地址就行,然后 Selenium Hub 就会自动帮你选择合适的测试执行机。
-
Selenium Grid 中 Node 的数量可以按需添加,所以整体的测试执行任务比较重时,可以增加 Grid 中 Node 的数量。
-
Selenium 还支持测试用例的并发执行,可以有效缩短整体的测试执行时间。
存在问题:
随着测试用例数量的继续增加,传统的 Selenium Grid 方案在集群扩容、集群 Node 维护等方面遇到了瓶颈,并且 Jenkins Job 也因为测试用例的增加变得臃肿不堪。
来源于 极客时间 茹炳晟 软件测试52讲