写点什么

一站式接口测试服务体系建设

用户头像
DrawDe朱
关注
发布于: 2020 年 11 月 07 日
一站式接口测试服务体系建设

前言

接口测试目前已成为所有测试人员必不可少的技能,随着技术中台微服务化的趋势,团队内部开始加强接口测试的培训与指导,但在技术转型的过程中,还是有部分的功能测试人员没有代码基础,所以需要打造一个配置化接口测试平台,以降低自动化测试的门槛,提高接口测试的效率。



我们从原有基于RF的自动化测试框架扩展为重接口轻UI的自动化测试平台,本文将介绍我们团队对于接口一体化自动化测试平台的理解,欢迎大家交流。

 

背景

1.     传统功能测试人员不具备代码能力,通过原框架关键字编写用例需要具备一定的编程思想。

2.     原RF框架提供了丰富的关键字,但学习成本较高,主要为UI自动化测试所设计。

3.     原RF框架在支持大批量的接口测试场景覆盖,大批量接口字段验证方面不够友好,编写方式过于繁杂。

4.     开源工具和框架案例可读性较差,管理困难,人员变动交接成本高,应更多吸收开源工具的设计思想。

5.     接口开发规范性问题,如参数定义不清晰,错误码不统一等,需要更高效的接口规范测试手段。

 

基本功能

平台为了适应原RF框架结构,能够保留已有自动化脚本编写方式的同时,扩展新的接口配置化编写方式,并且原有平台已具备项目管理,用户管理,权限管理,统计报表等公共模块,可直接复用,新的配置化接口测试模块包含以下基础功能。

 

接口管理:可管理所有接口的基本信息,包括接口名,URL,请求方法,请求头,请求体等信息,其中URL对应系统地址应拆分到全局配置管理中,请求头和请求体中的具体测试数据可参数化以变量名${var}的格式配置。

 

工程版本:针对各项目的服务工程及提交版本进行版本号管理,所有新建接口必须关联到对应的工程及版本中。

 

前置后置:前置可以用于接口测试前的数据准备,或者系统登录等行为,而后置可用于测试数据恢复,操作主要包含接口调用和数据库SQL执行,同样可以调用接口管理中维护的接口,使用配置管理中数据库连接方面的配置进行SQL的执行,此模块用于维护所有公共的前置后置步骤。

 

接口用例:此模块就能基于上面的已创建公共信息自有组合真正的接口测试用例,包括单接口测试与多接口的复杂场景。

 

单接口测试用例可以针对每一个接口配置前置与后置步骤,对每一个接口添加测试断言,在各步骤中填写针对该接口的测试数据,不同步骤中的返回数据都可以通过定义返回变量${result}格式进行数据值传递。

了单接口测试外,还可以组合多个接口测试场景,不同接口层的上下串联关系同样可以通过定义接口的返回变量进行数据的传递,以适应多接口复杂场景的测试。

无论是单接口还是多接口场景,全都支持接口调试功能,可直接对测试数据和断言进行验证,确保各步骤的正确性。

 

接口任务:这里的任务就相当于一个接口测试用例集,可以配置需要执行的接口测试用例,并同样可以选择公共前置步骤进行配置,相当于整个测试用例集的前置,执行完成后可查看具体的测试报告,测试报告包含每一个接口调用的请求头,请求体,返回头和返回体,及断言日志。

 

全局配置:每一组全局配置都是针对具体的工程与版本,便于针对不同的测试环境进行切换,各组配置包含四类配置信息,Oracle,MySQL,系统环境,测试数据,测试数据配置在使用时同样通过配置名称变量${global}格式进行引用。

 

效能实践

除了接口测试方面的基本功能外,平台依据各项目组在接口自动化应用实践过程中的痛点,开发了相应的特色功能,以提升接口自动化测试效能。

 

基于源码的接口扫描:从接口测试的源头项目工程代码获取接口信息,利用JAVA反射的原理对Spring框架代码进行扫描,该工具类集成到持续集成流水线中,在代码提交时触发扫描以获取JSON格式的项目接口规范,可直接导入自动化测试平台生成对应的接口信息。

 

Swagger接口规范导入:除了从源码扫描获取接口信息外,团队主推基于Swagger的接口规范,在要求开发定义Swagger注解的基础上,利用Swagger接口规范格式导入自动化测试平台生成接口信息,根据开发版本间不同的Swagger规范差异可反向推倒出变动的接口以便于对应接口用例的调整。

 

探索测试任务:通过以上两种方式,再加上原本手动添加的方式创建完接口,我们便可以基于接口模型进行探索测试,探索测试将依据接口的参数规范包括参数类型,是否必填,取值范围,枚举值,错误码自动生成正常和异常测试场景,空值,边界值,枚举值等测试场景,利用规则生成算法达到接口爆炸测试效果,以验证接口开发的规范性。在此过程中,测试人员可预先通过接口抓包方式,手动导入抓包HAR文件作为正常测试场景数据补充,使探索任务的接口基准数据更准确,探索更精准。

 

多执行机并行执行:原平台各项目可以分配多台执行机进行脚本运行,在新的接口用例模式下,接口测试任务以用例为维度分解到多执行机并行运行,执行机执行完一条用例就从任务队列中取下一条进行执行,提高脚本运行效率。

 

用例开放接口服务:原RF平台已创建很多自动化测试用例,通过开放接口服务的方式,使原有自动化脚本的执行可以通过接口的方式进行调用,可用于测试数据准备,串联测试场景等不同用途。对应配置化的接口用例来说,同样可以利用开放接口服务方式达到相同目标。

 

接口字段批量验证:在某些接口返回字段较多的情况下,对每个字段添加断言是件非常痛苦的事情,通过记录接口所有返回字段结构与数据,对前后两次请求的结果进行比对,即可验证大批量接口返回字段的正确性。

 

基于以上基本功能与效能实践,一体化接口测试服务体系整体流程图如下:





总结

通过配置化接口平台的打造,降低了测试人员对编码技术能力的要求,多站在一线测试用户的角度去考虑如何设计好工具平台,技术不一定需要很复杂,能够真正提升测试效能的设计才是好的设计。本平台适合于大型测试团队的推广使用,达到接口统一管理的目标,我们要保持持续创新的思维,不断改善和提高平台的能力,后续改进计划包括以下几点。

 

1.     开放OpenAPI形式对接外部平台,如持续集成平台。

2.     拉取线上使用的接口列表,比对平台已创建和测试的接口,以了解覆盖盲点。

3.     提供Chrome插件,可以过滤显示符合条件的XHR请求,直接导入抓包请求数据到平台,维护接口用例的自动化。

4.     断点续跑和重试机制,对于失败用例可按条件重复执行。

5.     日志精准定位,依赖服务调用链路,查询到接口失败的准确原因。



发布于: 2020 年 11 月 07 日阅读数: 67
用户头像

DrawDe朱

关注

还未添加个人签名 2018.11.16 加入

还未添加个人简介

评论

发布
暂无评论
一站式接口测试服务体系建设