收到了一个需求 要在线上环境模拟多个不同词 执行不同的次数(不同搜索词) 把产生的数据用来计算一些搜索词的热度 想到了3种处理方式:
1. fidder的 Reissue sequentially
2.python request
3.jmeter
第一种很快就pass了 因为涉及了200个不同的词 总不能一直盯着它 跑完一个在手动录入 在跑下一个
第二个也pass了 因为涉及到执行的性能和编写成本
最终选择了用jmeter来实现
下面的需求:
接口地址 : http://212.64.116.235/xxxxxx
第一列为搜索词 第二列为这个搜索词需要执行的次数
这是我们这边的一个数据格式 因为涉及到签名 所以需要引入jar包进行计算然后提取
先建一下大概
关于计算签名这块 让我们开发这边 提供了一个计算签名的jar包 和签名这里的其他依赖包 我们把jar包在测试计划中引进 另外两个依赖包则放入到 jmeter 的lib ext 目录下 重启jmeter
然后新加
beanshell 预处理 编写以下脚本
import com.ays.tool.SIgnUtil; 引包
String data = "${data}"; 因为签名计算也依赖于我们传的参 所以把参传进入
String sign = SIgnUtil.sign(data); 调用方法 接收返回
vars.put("sign",sign); 数据存入 sing变量
//System.out.println("sign");
System.out.println("${data}");
计算完签名就可以直接在参数里引用了
然后是关于不同次不同的循环次数 通过循环控制器解决即可
然后就完成了
下面是执行结果:



