Jmeter 混合场景中实现一次登录进行多次其它接口的性能测试
在实际的性能测试中,登录接口做完性能测试之后,关联的接口做性能测试的时候,需要单独做其它接口性能测试,不需要多次登录的时候,怎么设计性能测试场景呢?
在实际的性能测试中,登录接口做完性能测试之后,关联的接口做性能测试的时候,需要单独做其它接口性能测试,不需要多次登录的时候,怎么设计性能测试场景呢?
比如:并发执行时间1分钟,并发10个用户,登录次数就是10次,其它接口(获取用户订单列表)会执行1分钟,请求多次
在性能测试工具loadrunner中,可以通过把登录脚本放在init里面,其它接口放到action里面执行多次来做,但是在jmeter里面就会出现跨线程组的问题,可以使用跨线程组来获取token值,下面介绍另外一种方法:通过逻辑控制器来解决
一、性能测试的场景图

二、性能 测试脚本设计步骤
接口请求头
【登录】接口请求
【登录】接口响应断言
提取【登录】返回的 token
【订单接口】携带token请求服务器
【订单接口】响应断言
监听器
三、混合场景设计过程:
整个脚本结构

添加HTTP消息头管理器
这里的接口响应数据格式为:
Content-Type=application/json;charset=utf-8

线程组:jp@gc - Stepping Thread Group

在该线程组下面创建登录的HTTP请求,以及登录接口返回的token提取
json方式提取

正则表达式提取

订单列表接口的token获取

响应断言:按自己的喜好,自己选择用哪种方式
判断接口预期返回的值,是不是和实际返回的值一致
文本模式的响应断言

json断言

逻辑控制器
逻辑控制器,用于控制脚本执行的逻辑
①、仅一次控制器(once Only Controller):用于控制登录接口,在性能测试过程中,登录接口只运行一次
②、循环控制器(Loop Controller):用于控制多次进行性能测试请求的接口,循环执行N次
按照性能的需求:
登录接口只要执行一次,把登录接口放到“仅一次执行”下面,也就是一个并发用户只执行一次,比如:并发用户10,那么登录就执行10次

把订单列表接口放到“循环执行”下面

监听器:聚合报告
实时查看接口的性能数据

来源:testingpai