JMeter传参问题记录

场景说明:

最新的附件预览服务需要切换使用onlyoffice,由此需要验证其性能。这里主要包括上传附件和预览附件两个操作。

其中对于接口传参碰到的主要问题就是接口传参的问题,上传附件的响应结果是一个数组,格式如下

["a11942d1382c4606843e50bf28b75241","application/pdf","2.19MB","51Testing_ceshitiandi46.pdf","D:/rcm-dev/file/816fa0eb89dc43d4ab81273347bc5cd2/2023-04-26/a7668d5daef743308c670e05c0e6a302","2"]

这里需要拿到附件上传后生成的附件ida11942d1382c4606843e50bf28b75241,针对此种数组格式的响应结果,这里先使用正则表达式拿到整个数组,在JMeter中线程组中添加正则表达式提取器如下设置:

引用名称:id
正则表达式:(.+)
模板:\(1\)
匹配数字:0
缺失值:

然后在预览接口中,添加BeanShell前置处理器对数组进行处理,只获取list[0]的值即可,具体代码如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
import java.util.List;
//设置文件编码
prev.setDataEncoding("UTF-8");
try {
    // 将提取到的hierarchy字符串存到变量data中
    String data = vars.get("id");
    log.info("-----------------------------" + data);
    // 将数组字符串转成数组(注意:如果返回的是字典格式,此处则使用JSONObject来声明变量,同时转化的函数要使用JSON.parseObject,即JSONObject data_arr = JSON.parseObject(data))
    JSONArray data_arr = JSON.parseArray(data);
    log.info("-----------------------------" +data_arr );

    log.info("---------------第一个元素:--------------" +data_arr.get(0));
    vars.put("item_type", data_arr.get(0));


}
catch (Throwable ex) {
    log.error("Beanshell failure: ", ex);
    throw ex;
}

然后在预览接口中使用变量item_type达到预览不同附件的目的。
接下来就是使用线程组进行压力测试,这里官网推荐用Ultimate Thread Group代替。所以这里安装完成对应的插件后使用Ultimate Thread Group完成对应的测试工作。

Ultimate Thread Group线程组的说明
Start Threads Count:当前行启动的线程总数
Initial Delay/sec:延时启动当前行的线程,单位:秒
Startup Time/sec:启动当前行所有线程达峰值所需时间,单位:秒
Hold Load For/sec:当前行线程达到峰值后的稳定加载时间,单位:秒
Shutdown Time:停止当前行所有线程所需时间,单位:秒

到此,设置对应的线程信息后坐等分析结果了。jmx文件地址:链接:https://pan.baidu.com/s/1dbLPnggmwHUCWTJQY-fTRQ?pwd=4bop
提取码:4bop

posted @ 2023-04-26 11:29  janehost  阅读(84)  评论(0编辑  收藏  举报