Jemter作为一款性能&接口测试工具,其带界面的操作给测试快速上手带来了一定便利,但由于其相比写代码不支持类似函数封装功能,因此需要利用Jmeter的特性约定一套框架支持可重用和模块化自动化脚本的编写。我们可以利用Jmeter中的Test Fragment封装用例小模块,按接口划分线程组,线程组下添加事务控制器作为测试用例,在事务控制器下利用模块控制器进行测试单元的组装。
- Test Fragment 测试片段 JMeter test_fragments,是控制器上一个种特殊的线程组,它在测试树上与线程组处于一个层级。但使用时需要和include Controller或者Module Controller配合。它的主要作用是模块化测试过程,类似于编程语言中的函数。即,将测试过程封装成测试片段,就可以在其他地方直接引用了。
- Module Controller 模块控制器 JMeter Module_Controller
- Parameterized Controller 参数化控制器JMeter ParameterizedController
- Include Controller 包括控制器JMeter Include_Controller
- Transaction_Controller事务控制器 Transaction_Controller,事务响应时间是我们衡量业务性能的主要指标,事务控制器可以把其他节点下的取样器执行消耗时间累加在一起,便于统计。同时对每一个取样器的执行时间进行统计。
- Simple_Controller简单控制器 Simple_Controller
JMeter有4种常用参数化方法
1.User Parameters(用户参数)
操作路径:左边测试计划树中选择一元素,鼠标右键Add-->Pre Processors-->User Parameters
2.CSV Data Set Config(CSV数据配置)
操作路径:左边测试计划树中选择一元素,鼠标右键Add-->Config Element-->CSV Data Set Config
3.User Defined Variables(用户自定义变量)
操作路径:左边测试计划树中选择一元素,鼠标右键Add-->Config Element-->User Defined Variables
4.Function Helper中的函数
操作路径:菜单Tools-->Function Helper Dialog
JMeter参数化方式之使用场景对比
此外还有两种参数化方法:从数据库读取,用正则表达式从前面请求的响应数据中提取。
具体脚本结构如下图所示:
框架详解
测试计划:项目名称/测试用例模块,如:电商项目一个测试计划、用户管理一个测试计划、订单管理一个测试计划;
字段参数化:字面意思,便于该用例模块的参数调用;
Test Fragment:测试用例小模块,如:用户管理一个测试片段、订单管理一个测试片段;
Simple Controller:测试用例组件,将接口请求和对应的断言封装起来作为测试用例组件,便于测试用例组装。
线程组:以接口为单位划分的RunAll组件,如创建订单的接口用例。
线程组下的Transaction Controller:测试用例,由单个或多个Module Controller组装而成;
Module Controller:用例模块的调用;
结果监控,报告生成:Jmeter中添加一个查看树去看测试报告,Jenkins中用插件HTML Publisher plugin生成。
Jmeter Chrome浏览器录制插件:BlazeMeter和MeterSphere。