随着自研的测试平台(陨石平台)在企业内部的深入应用,这个过程中既遭遇了测试平台建设过程中普遍存在的共性挑战,也面临了不同企业环境下独特的实施难题。
回顾过去四年的平台建设历程,不断优化平台应用架构和技术架构,以适应不断变化的需求。在此,特撰此系列文章,对平台的发展历程、优化策略进行全面复盘分析,也希望能够给大家在自己的测试平台化建设过程中提供一些参考。
该系列分享,初步规划了十个章节,包含原子性设计、分层设计、参数化设计、数据驱动模式设计、测试环境设计、执行模式设计、执行结果设计等。
2.1 测试分层的概念
在设计接口测试用例时,我们经常会遇到以下挑战:
- 认证Token的传递:多个被测接口在测试时均需在请求头中包含特定的认证Token。
- 测试数据的准备与清理:在测试接口之前需要预置测试数据,并在测试完成后清除这些数据,以确保测试环境的不会干扰执行结果。
为应对此类挑战,我们引入了一种策略,允许用户在测试执行前后执行一些特定的操作。这些操作在测试执行前进行的,我们称之为“测试前置操作”;而在测试执行后进行的,我们则称之为“测试后置操作”。
然而,如果每次在接口测试之前都单独添加如“获取Token”这样的前置操作,不仅效率低下,而且极易导致冗余和错误。为解决这一问题,我们尝试在测试用例之上抽象出一个层级——测试套件。在这一层级中,我们可以统一地管理和执行前置、后置操作,从而极大地提高测试效率和准确性。
通过上述讨论,我们相对清晰地界定了测试套件、测试用例的概念,并明确了测试前置操作、测试步骤、测试后置操作在测试流程中的位置和作用。
2.2 基础设计要点
2.2 测试套件的分层设计要点
在接口测试自动化的实践中,测试用例的分层设计主要体现在测试套件与测试用例的层次结构上。测试套件作为具有共同特性的测试用例集合,其设计旨在提高测试的组织性和执行效率。
2.2.1 测试套件的设计要点
在测试套件中可以进行套件的前、后置操作,“操作” 包含一个步骤或多个操作步骤,这里的“步骤”就是上一篇文章(用例的原子性设计)中讲的最小执行单元,具体设计要点如下:
- 套件前置操作:在套件内所有测试用例执行之前自动执行的操作,用于准备测试环境或获取必要的资源(如,认证Token)。
- 套件后置操作:在套件内所有测试用例执行之后自动执行的操作,用于清理测试环境或释放资源。
- 异常处理逻辑:预设在套件操作执行异常时的应急处理方案,确保测试的稳定性和可恢复性。
在测试套件中除了包含前、后置操作,同样也需要考虑支持套件级别的变量定义。具体设计要点如下:
- 变量类型:支持定义多种类型的变量,如整型、浮点型、字符串等,以满足不同测试场景的需求。
- 变量作用域:确保套件间变量的隔离性,同时允许在套件内部定义的变量在其所属的所有测试用例中被引用。
- 变量引用优先级:明确变量引用的优先级规则,解决同名变量在不同层级(套件、用例、步骤)间的冲突问题。
在进阶的设计中,测试套件中也会包含数据驱动,具体说明如下:
- 数据参数化:支持通过Excel等文件形式导入参数化数据,驱动测试用例的执行。参数化的变量名应与测试脚本中的变量名相对应。
- 参数化范围:参数化数据可以应用于测试用例的请求参数中,也可以用于验证响应结果的期望值。
在测试套件与测试套件之间也需要考虑相互的联系,具体说明如下:
- 执行优先级:支持设置测试套件的执行顺序,确保依赖关系明确且执行顺序可控,避免因依赖关系导致的测试失败。
2.2.1 测试用例的设计要点
在测试用例中,同样可以进行用例的前、后置操作,操作包含一个步骤或多个操作步骤,这里的步骤同样是上一篇文章(用例的原子性设计)中讲的最小执行单元。对于测试用例中的操作与步骤,我们强调其作为最小执行单元的重要性。它们不仅包含测试执行与验证的关键内容,如条件判断、请求基础信息、响应体校验信息、变量提取等,还涵盖了时间等待、数据库操作、自定义脚本等高级功能。具体说明如下:
- 用例前置操作:在测试用例执行之前,确保执行必要的初始化操作,如环境准备、数据预置等,以确保测试的准确性和可靠性。
- 用例测试步骤:明确每个测试步骤的详细执行过程,包括条件判断、请求发起、响应验证等,确保测试流程清晰可追踪。
- 用例后置操作:在测试用例执行后,执行必要的清理操作,如数据清除、环境恢复等,以保持测试环境的整洁和稳定。
- 异常处理:预设异常处理逻辑,确保在测试过程中遇到异常情况时能够迅速响应,避免测试中断或结果失真。
在测试用例中除了包含前、后置操作,同样也需要考虑支持用例级别的变量定义。具体说明如下:
- 变量类型:支持多种类型的变量定义,如整型、浮点型、字符串等,以满足不同测试场景的需求。
- 变量作用域:确保每个测试用例中的变量定义具有明确的作用域,实现用例间的变量隔离。
- 变量引用优先级:明确变量引用的优先级规则,解决同名变量在不同层级(如套件、用例)间的冲突问题。
在高级设计中,还需引入数据驱动的概念。通过Excel等文件形式,我们可以轻松地对参数化值进行罗列,并驱动测试用例的执行。这些参数化值既可以应用于请求参数中,也可以用于验证响应结果的期望值。
在测试用例与测试用例之间也需要考虑相互的联系,具体说明如下:
- 执行优先级:允许用户设置测试用例的执行顺序,确保测试流程的可控性和高效性。
- 标签设置:支持对测试用例进行标签化管理,方便后续通过标签选择性地执行测试用例。
- 状态管理:提供用例状态设置功能,如发布、未发布、评审、未评审等,以满足不同测试阶段的管理需求。
2.3 进阶设计要点
在进阶设计中,专注于提升用户体验和操作的流畅性,以减少重复操作、缩短操作路径,并增强系统的易用性。
2.3.1 测试套件的进阶设计要点
2.3.1 测试套件的进阶设计
针对快速创建相似测试套件的场景,需考虑如下设计:
- 克隆功能:允许用户克隆(复制)测试套件的变量定义、前置和后置操作,以便快速创建新的测试套件。
- 选择性克隆:用户可以选择性地克隆测试套件中的特定用例,以满足不同的测试需求。
- 版本控制:克隆后的套件和用例修改时,应确保原套件和用例的版本保持不变,避免相互干扰。
2.3.2 测试用例的进阶设计要点
针对快速创建相似测试用例的场景,需考虑如下设计:
- 克隆与复制:支持测试用例的数据驱动、变量定义、前置和后置操作的克隆(复制),以加速测试用例的创建过程。
- 版本隔离:确保克隆后的测试用例在修改时不会对原用例产生影响,保持版本的独立性。
针对相似操作或测试步骤复用的场景,需考虑如下设计:
- 步骤克隆:允许用户克隆(复制)测试步骤,减少重复操作。
- 步骤分享:支持步骤跨用例、跨套件进行分享(复制+移动),促进测试用例的模块化与重用。
当测试步骤较多时,为提升操作的灵活性,需考虑如下设计:
- 步骤拖拽:允许用户通过拖拽的方式调整测试步骤的顺序,以适应不同的测试场景。
在调试或执行测试时,为提高测试的灵活性和效率,需考虑如下设计:
- 步骤注释:支持测试步骤的注释(跳过)功能,允许用户在特定情况下跳过某些步骤。
- 步骤恢复:注释(跳过)的步骤可随时恢复执行,确保测试的完整性和准确性。
对于变量在多个地方定义和引用的场景,需考虑如下设计:
- 变量追踪:实现变量的可视化追踪功能,帮助用户清晰地了解变量的定义、引用和修改情况。
在进阶设计中,我们特别关注场景化用例的快速组装和操作的便捷性,以提升用户体验和测试效率,需考虑如下设计。
- 场景化用例的快速编排:用户可通过直观的拖拽操作,从已有的单接口用例或场景化用例中快速选择并拖拽测试步骤到新的场景化用例中。
若您对该系列文章感兴趣,欢迎 关注、点赞、收藏哦。
本文暂时没有评论,来添加一个吧(●'◡'●)