场景接口测试平台搭建实践
作者|刘琳琳
背 景
在持续的业务测试中,接口用例会逐步沉淀形成一定规模。RD自测或者QA测试时,RD要执行冒烟级别接口测试用例进行冒烟测试,QA要执行接口测试用例测试新需求、回归老业务。在需要执行用例时,要去接口用例工程中反复查找相关用例进行执行。如何更高效的管理和使用接口用例?通过平台化,降低管理成本和执行成本,即根据业务场景、用例类型等维度进行分类管理,可视化执行。
平台介绍
1、新增工程: 配置接口用例的工程
(1)配置名称:对用例分类的描述,一个测试用例工程可以新增多个配置,通过配置名称区分;
(2)测试代码路径:测试用例@Test代码的路径;
2、更新节点:进行包、类、方法节点更新,这里主要解析用例工程中的TestNg的@Test方法,会以树状结构展示测试方法的包名、类名、方法名以及方法描述(@Test的description);
新增用例:将多个接口用例聚合在一起为用例集,用于持续回归。聚合维度类似testng的group概念。如将一个需求的case、一个接口的所有情况、一类回归用例聚合成一个用例集
3、执行方式
点击执行:输入自己测试环境的ip,执行接口用例集。
定时任务:可支持按照每天N点或者每N个小时执行,用于定时回归或定时监控。比如将回归用例集设置每天早晨在稳定环境执行,用来检测今日功能是否正常。创建定时任务,到定时时间,会自动执行接口用例集。
4、执行结果
执行完成,生成一份执行报告,报告中展示用例执行成功数和执行失败数,还可以具体看到执行成功的方法名与执行失败的方法名。
技术实现
用例工程管理将根据git地址下载源码,编译;用例节点管理将包名,类名,方法名拆分成节点存入库中,根据节点信息可以生成用例集;用例集管理分为:回归用例,冒烟用例,需求用例三个类型。
根据使用者的测试场景不同创建用例集,执行方式分为立即执行和定时执行。执行任务管理状态有:执行成功,执行失败,执行中,部分执行成功。执行完成会生成执行报告,查看执行结果。
1、生成节点
下载接口用例的工程代码,用脚本文件将工程中接口用例方法拆分成包节点,类节点,方法节点。将节点保存到数据库中,并保存其映射关系。工程新增接口用例时,可以更新节点,将新数据同步到数据库中。
2、执行套件
执行时 首先根据用例集的方法节点、类节点、包节点、生成TeatNG 的xml配置文件,执行xml文件过程中,会生成用执行报告,记录执行成功与失败的方法。
总结
平台优势:该平台可以统一团队的接口测试方案,降低接口测试的成本,给RD提供自测能力,提高自测联调效率和提测质量。提供统一的用例集管理调度能力。
未来预期:降低场景型、链路型接口测试的编码成本,将场景接口测试变为通过模板和组件的方式生成代码+本地调试补充的模式。打通接口文档、测试数据到接口测试,并通过diff、精准、jacoco提供评估手段形成工作闭环,mock、异常注入提供辅助方法。
- 使用sqlt手工创建sql_profile(r4笔记第37天)
- 使用ash分析ORA-01652问题(r4笔记第36天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理
- 数据结构01 算法的时间复杂度和空间复杂度
- Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
- Spring【依赖注入】就是这么简单
- 数据结构02 线性表之顺序表
- struts2+spring+hibernate整合步骤(2)
- Spring入门这一篇就够了
- Mybatis面试题
- 从业务角度分析奇怪的数据库高负载问题 (r4笔记第35天)
- 数据结构03 线性表之链表
- Java基础-12(01)总结Scanner,String
- 通过shell绑定系统进程调优 (r4笔记第34天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 侧滑关闭Activity的实例
- Android 两个Fragment之间的跳转和数据的传递实例详解
- Android编程实现保存图片到系统图库的方法示例
- Android自定义单选多选下拉列表的实例代码
- R语言POT超阈值模型在洪水风险频率分析中的应用研究
- Android开发之ToggleButton实现开关效果示例
- Android使用Circular Reveal动画让页面跳转更炫酷
- 学习使用Material Design控件(三)使用CardView实现卡片效果
- Android实现dialog的3D翻转示例
- Android ImageView 固定宽高比例的实现方法
- Android 实现IOS选择拍照相册底部弹出的实例
- ubuntu 20.04上搭建LNMP环境的方法步骤
- Android实现界面内嵌多种卡片视图(ViewPager、RadioGroup)
- Android设计模式之Builder模式详解
- 详解Android获取系统内核版本的方法与实现代码