Jmeter 混合场景中实现一次登录进行多次其它接口的性能测试

本贴最后更新于 1446 天前,其中的信息可能已经渤澥桑田

在实际的性能测试中,登录接口做完性能测试之后,关联的接口做性能测试的时候,需要单独做其它接口性能测试,不需要多次登录的时候,怎么设计性能测试场景呢?

比如:并发执行时间1分钟,并发10个用户,登录次数就是10次,其它接口(获取用户订单列表)会执行1分钟,请求多次

在性能测试工具loadrunner中,可以通过把登录脚本放在init里面,其它接口放到action里面执行多次来做,但是在jmeter里面就会出现跨线程组的问题,可以使用跨线程组来获取token值,下面介绍另外一种方法:通过逻辑控制器来解决

一、性能测试的场景图

image.png

二、性能 测试脚本设计步骤

  1. 接口请求头
  2. 【登录】接口请求
  3. 【登录】接口响应断言
  4. 提取【登录】返回的 token
  5. 【订单接口】携带token请求服务器
  6. 【订单接口】响应断言
  7. 监听器

三、混合场景设计过程:

  1. 整个脚本结构

image.png

  1. 添加HTTP消息头管理器

这里的接口响应数据格式为:

Content-Type=application/json;charset=utf-8

image.png

  1. 线程组:jp@gc - Stepping Thread Group

image.png

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

image.png

image.png

  1. 订单列表接口的token获取

image.png

  1. 响应断言:按自己的喜好,自己选择用哪种方式

判断接口预期返回的值,是不是和实际返回的值一致

image.png

image.png

  1. 逻辑控制器

逻辑控制器,用于控制脚本执行的逻辑

①、仅一次控制器(once Only Controller):用于控制登录接口,在性能测试过程中,登录接口只运行一次

②、循环控制器(Loop Controller):用于控制多次进行性能测试请求的接口,循环执行N次

按照性能的需求:

  1. 登录接口只要执行一次,把登录接口放到“仅一次执行”下面,也就是一个并发用户只执行一次,比如:并发用户10,那么登录就执行10次

image.png

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

image.png

  1. 监听器:聚合报告

实时查看接口的性能数据

image.png

回帖
请输入回帖内容 ...