针对包含签名加密随机生成特殊请求参数等情况使用JMeter进行压力测试

JMeter是Apache旗下的一款压测软件,基于Java开发,提供GUI,可以很好的运行在windows、Linux、Mac等操作系统上,压测过程中我们经常会用到个性化的操作,比如说此接口需要加密,比如说此接口需要签名,比如说每次请求此接口都需要动态生成,那么如何来满足这种情况下的压力测试呢?下面来讲解一下如何使用JMeter进行压力测试

下载

http://jmeter.apache.org/download_jmeter.cgi

增加线程组

右键”测试计划”,依次选择”添加”>”Threads”>”线程组”,在此线程组我们就可以动态的设置线程数(并发用户数)、循环次数、或者可以使用调度器灵活的配置持续访问多长时间,什么时候开始,什么时候结束

图示10个用户并发,每个用户请求两次

增加HTTP请求

右键”线程组”,依次选择”添加”>”Sampler”>”HTTP请求”
这里可以依次添加服务器的名称(域名),端口,请求协议,请求方法,请求路径参数等等

图示请求 域名+路径 测试,HTTP协议,80端口,并且要上送参数

注意:这里我们参数设置是bank_code ${bank_code},这里代表bank_code会被动态的赋值

增加请求前预处理

右键”HTTP请求”,依次选择”添加”>”前置处理器”>”BeanShell PreProcessor”
这里我们可以针对请求前做一系列处理
随机生成订单号

String mer_trade_code = java.util.UUID.randomUUID().toString();
vars.put("mer_trade_code", mer_trade_code);

根据约定拼接好字符串之后,生成签名

java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
md.update(str.getBytes());
String sign = new java.math.BigInteger(1, md.digest()).toString(16);
vars.put("sign", sign);

增加Debug Sampler观察打印信息

右键”线程组”,依次选择“添加”>“Sampler”>“Debug Sampler”

图示一些打印信息,比如线程组的开始结束,以及我们的log打印日志

查看结果

通过右键”HTTP请求”,依次选择”添加”>”监听器”

查看结果树
图标可以看出请求是否成功,如果成功为绿色,右侧可以看到分别是取样器结果、请求、响应数据,可以看到该请求的一些详细信息

图形结果
其存在如下几个值,来查看响应时间,样本数目(总的请求数),最新样本(上次最新请求数),平均即均值,偏离、中值,吞吐量。

用表格查看结果
可以看到如下几个值,Sample(编号),StartTime(开始时间),ThreadName(线程名),Label(请求标签),Sample Time(请求时间) Status(状态,绿色表示成功),Bytes返回字节数,Latency(),Connect Time

监视器结果

聚合报告
Label,Samples、Average、Median、90%Line、95%Line、99%Line、Min、Max、Error%、Throughput(TPS),KB/sec

1条留言
  1. 那如果接口地址被加密了呢,如何处理