百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

接口自动化测试平台设计-测试用例的分层设计

ccwgpt 2024-10-03 18:47 79 浏览 0 评论

随着自研的测试平台(陨石平台)在企业内部的深入应用,这个过程中既遭遇了测试平台建设过程中普遍存在的共性挑战,也面临了不同企业环境下独特的实施难题。

回顾过去四年的平台建设历程,不断优化平台应用架构和技术架构,以适应不断变化的需求。在此,特撰此系列文章,对平台的发展历程、优化策略进行全面复盘分析,也希望能够给大家在自己的测试平台化建设过程中提供一些参考。

该系列分享,初步规划了十个章节,包含原子性设计、分层设计、参数化设计、数据驱动模式设计、测试环境设计、执行模式设计、执行结果设计等。


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 测试用例的进阶设计要点

针对快速创建相似测试用例的场景,需考虑如下设计:

  • 克隆与复制:支持测试用例的数据驱动、变量定义、前置和后置操作的克隆(复制),以加速测试用例的创建过程。
  • 版本隔离:确保克隆后的测试用例在修改时不会对原用例产生影响,保持版本的独立性。


针对相似操作或测试步骤复用的场景,需考虑如下设计:

  • 步骤克隆:允许用户克隆(复制)测试步骤,减少重复操作。
  • 步骤分享:支持步骤跨用例、跨套件进行分享(复制+移动),促进测试用例的模块化与重用。

当测试步骤较多时,为提升操作的灵活性,需考虑如下设计:

  • 步骤拖拽:允许用户通过拖拽的方式调整测试步骤的顺序,以适应不同的测试场景。

在调试或执行测试时,为提高测试的灵活性和效率,需考虑如下设计:

  • 步骤注释:支持测试步骤的注释(跳过)功能,允许用户在特定情况下跳过某些步骤。
  • 步骤恢复:注释(跳过)的步骤可随时恢复执行,确保测试的完整性和准确性。



对于变量在多个地方定义和引用的场景,需考虑如下设计:

  • 变量追踪:实现变量的可视化追踪功能,帮助用户清晰地了解变量的定义、引用和修改情况。



在进阶设计中,我们特别关注场景化用例的快速组装和操作的便捷性,以提升用户体验和测试效率,需考虑如下设计。

  • 场景化用例的快速编排:用户可通过直观的拖拽操作,从已有的单接口用例或场景化用例中快速选择并拖拽测试步骤到新的场景化用例中。



若您对该系列文章感兴趣,欢迎 关注、点赞、收藏哦。

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: