40 | 从小工到专家:聊聊测试执行环境的架构设计(上)

什么是测试执行环境?

狭义的测试执行环境,单单指测试执行的机器或者集群。架构

广义的测试执行环境,除了包含具体执行测试的测试执行机之外,还包括测试执行的机器或者集群的建立与维护、测试执行集群的容量规划、测试发起的控制、测试用例的组织以及测试用例的版本控制等等。并发

通常状况下,中大型企业在测试基础架构上的投入,主要是为了解决如下这几方面的问题:测试

  • 简化测试的执行过程。咱们不用每次执行测试时,都必须先去准备测试执行机,由于测试执行机的获取就像平常获取水电同样方便了。版本控制

  • 最大化测试执行机器的资源利用率,使得大量的测试执行机能够以服务的形式为公司层面的各个项目团队提供测试执行的能力。调试

  • 提供大量测试用例的并发执行能力,使得咱们能够在有限的时间内执行更多的测试用例。blog

  • 提供测试用例的版本控制机制,使得测试执行的时候能够根据实际被测系统的软件版本自动选择对应的测试用例版本。资源

  • 提供友好的用户界面,便于测试的统一管理、执行与结果展现。开发

  • 提供了与 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讲

相关文章
相关标签/搜索