在 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 串進行壓力測試啦:

from:http://blog.csdn.net/defonds/article/details/40824011
