JMeter 壓力測試使用函式和 CSV 檔案引數化 json 資料
阿新 • • 發佈:2018-12-20
在 http Load Testing 中,json 資料的提交是個讓人頭疼的問題。本文詳細介紹如何進行 JMeter 的 json 測試提交,以及如何將其引數化。 Step 1 http json 請求取樣器的錄製 這個工具很多,可以使用 JMeter 代理錄製,也可以使用 Badboy。該取樣器錄製好以後如下圖所示: Step 2 為該取樣器新增 HTTP 資訊管理器 滑鼠右擊該取樣器,右鍵選單選擇 "新增" -> 配置元件 -> HTTP 資訊頭管理器,然後資訊頭新增一條名稱為 Content-Type,值為 application/json 即可: 新增好 HTTP 資訊管理器之後,選中該取樣器,編輯其 Content encoding 為 UTF-8: Step 3 為該取樣器新增響應斷言 比如請求返還的 json 串裡,"status":0 代表處理成功,status 值為其他表示各種處理失敗。那麼滑鼠右擊該取樣器,右鍵選單選擇 "新增" -> 斷言 -> 響應斷言,要測試的響應欄位選中 "響應文字",模式匹配規則選中 "Substring",要測試的模式新增並編輯其內容為 "status":0。 Step 4 編輯取樣器的 json 格式 選中該取樣器,Parameters 葉項裡複製該 json 串,然後點選 Body Data 葉項,貼上該 json 串於其中的輸入域中(關於 json 串的提取,可以使用 Badboy 自己錄製的,也可以使用 Chrome 瀏覽器自帶工具 "JavaScript 控制檯 - Network" 進行捕捉),最後調整 json 資料的展現格式如下圖所示: 這時可以進行 http json 提交了,但是資料還都是寫死的。那麼怎麼樣把這些 json 資料引數化呢,就像其他非 json 提交的取樣器一樣? Step 5 使用函式將 http json 資料引數化 像其他取樣器一樣使用函式助手生成一個引用字串,比如 ${__Random(0,9,random_num_0_9)},它的作用是隨機生成 0 - 9 之間的一個數字。 然後編輯 Body Data 裡的 json 串裡需要引數化的地方,使用 ${__Random(0,9,random_num_0_9)} 覆蓋需要引數化的部分: Step 6 使用 CSV Data Set Config 將 json 資料引數化 右鍵單擊 Thread Group,右鍵選單選擇 "新增" -> 配置元件 -> CSV Data Set Config,Filename 輸入 e:/defonds/work/20141105/json.txt(要使用絕對路徑),Variable Names 輸入 cityCode,cityName,subCategoryCode,subCategoryName,編輯 e:/defonds/work/20141105/json.txt 內容如下圖所示: 最後編輯 Body Data 裡的 json 串裡需要引數化的地方,使用 ${cityCode} 等引數覆蓋需要引數化的部分: 這時候你就可以使用引數化的 json 串進行壓力測試啦: 參考資料