2022年2月20日 星期日

JMeter 自訂輸出結果

JMeter 預設的套件能夠根據測試對象輸出像是 throughput、latency、status code 等數據的報告,不過如果遇到自己想輸出的東西是從 API response 裡萃取出來的狀況,就會稍微麻煩一點。實際上還是能夠做到,但看起來會存在一些限制,這篇會簡單紀錄一下需要做的事情。

使用 sample variables 自訂變數

JMeter 有個 sample_variables 的參數,在啟動測試時可以一起帶進去指定,JMeter 在最後輸出 JTL 時就會一起把 sample_variables 裡指定的變數一起輸出到 JTL 裡。

jmeter -Jsample_variables=price -n -t mytest.jmx -l test_result.csv

以上述的指令來說,指定的自訂變數就是 price 這個變數,只要在測試過程當中有把結果寫入到 price 變數,JMeter 在寫入 JTL 時就會把 price 一起寫進去了。輸出的結果會類似這樣:

timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect,"price"
1645111313217,1292,Random Commerce Request,200,OK,Thread Group 1-6,text,true,,946,150,10,10,https://random-data-api.com/api/commerce/random_commerce,1285,0,1010,65.85

可以看到最後面多了一個 “price” 的欄位。

產生自訂變數的報告

這個看起來存在一些限制,本來我希望的結果是產生像是 aggregate report 那樣的表格,可以幫我計算自訂變數的平均數、標準差、中位數、百分位數等等的。但目前看起來好像只能夠讓 JMeter 在產生 HTML 報告的時候引入自訂變數而已,而且報告產生的樣式似乎也沒什麼可調整的空間?不知道有沒有其他 plugin 可以協助,不過目前是沒有找到…。

這裡單純紀錄一下,產生報告的時候目前不能用 Java 17,會噴出錯誤訊息。可以換成 Java 8 或 11。

參考資料
  1. sample_variables property

沒有留言: