关于如何记录jmeter压测过程中出现的偶现错误请求的response,主要是两种思路,一种将response保存到本地文件,一种是将response发送到远程,如kafka、es、mysql等等
如果是mysql的话,可以使用jdbc processer,如果是kafka或者es,可以用beanshell脚本,具体beanshell的使用看下文转载内容中的使用样例,样例中给的是beanshell保存到本地文件的实现
转载 https://cloud.tencent.com/developer/article/1833093
关于此功能主要运用于非GUI模式下执行脚本的响应查看,以便于帮助我们更好的判断脚本的执行情况。
关于保存响应到文件jmeter存在多种方式,大致分两类jmeter自带插件和beanshell脚本编写,本章节将介绍这两种方式保存数据!
保存响应到文件
添加监听器-->保存响应到文件

观察保存响应到文件配置页面:

配置页面参数介绍:
- Save Successful Responses only:仅保存成功响应
- Save Failed Responses only:仅保存失败响应
- Don't save Transaction Controller Sample Result:不保存事务控制器样本结果
- Don'tadd number to prefix:不添加数字到文件前缀
- Don'tadd contenttype suffix:不添加文件的后缀类型
- Add timestamp:添加时间戳到文件前缀
添加http请求后将保存响应到文件配置元件移动到http请求事务下:

运行http请求结果可在D:\test\路径下得到一个response文件:


beanshell脚本
beanshell脚本可使用两种元件,BeanShell PostProcessor后置处理器,Bean Shell Sampler取样器,使用beanshell脚本需要借助一些提取器如json提取器,正则提取器。
BeanShell PostProcessor
http请求下添加正则表达式提取器:


添加beanshell后置处理器并配置相关信息:


源码如下:
FileWriter fileWriter = new FileWriter("D:/test/test.csv", true); //"D:/test/test.csv" 为本地路径(根据自己路径设置),支持csv和txt格式 BufferedWriter out = new BufferedWriter(fileWriter); //out.write( vars.get("id")+","+vars.get("id1")+"\n"); out.write( vars.get("id")+"\n"); //其中id和id1等均为正则或jsonpath提取的变量名称如下图所示 //此处展示了一个变量和多个变量的写法,可根据自身实际需要调整 out.close(); fileWriter.close();
运行以上请求可查看结果如下,并在D:\test\路径下得到一个test.csv文件:


Bean Shell Sample
我们来使用beanshell取样器写入文件所有返回的id值,这里我们可以添加一个ForEach控制器,并且修改一下正职提取器的配置:

添加ForEach控制器并配置相关信息:


添加beanshell取样器并配置信息:


源码信息同beanshell后置处理器内容一样,运行请求可观察结果运行了10次,并在
D:/test/路径下生成了一个test.csv文件:

