關於如何記錄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文件:

