有個需求,需要在壓測環境中,創建幾十萬的賬號數據,然后再根據創建結果,查詢到某些賬號信息。
按照之前我的做法,直接Python調用API,然后再數據庫查詢;
但是近期所有開發人員的數據庫訪問權限被限制,我也不能例外。沒法訪問數據庫,但是有沒有查詢的API,不好弄。
后來我想到了一個解決辦法,試驗了一下,可行。簡要記錄如下:
拿到創建數據的 post API,用Jmeter實現以下,然后提取返回值,並保存到本地文件。
順便說一下,其實這個用Python實現也沒問題,選擇哪個,其實都行。
我之前用Python弄得多一些,這里把用Jmeter實現,也給做一下簡要的簡要記錄。如下:
步驟如下:
一.新建TestPlan
二.增加如下組件:
1.TestPlan
2.增加setUp Thread Group
3.增加 HTTP HTTP信息頭管理器
配置:Content-Type:application/json
4.增加HTTP Request
POST http://haochuangtest.com/api/rest/internal/v1/en/XXXenterprise/${具體參數}/cloudXXXXX
POST data:
{
"id": "",
"XXXXXNumber": "",
"displayName": "HAO-TEST",
"password": "",
"XXXXXPassword": "",
"autoXXX": 2,
"XXXModel": false,
"smartXXXX": 6,
"expireTime": -1,
"adminUserId": 0,
"adminDisplayName": "null",
"permanent": "true",
"XXXXXNumberType": 4,
"XXXXXId": "null",
"userXXXXXXXDisplayName": "null",
"configs": {
"conXXXX": "2"
}
}
5.增加 Regular Expression Extractor
<hashTree> <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">meetingNumber</stringProp> <stringProp name="RegexExtractor.regex">"meetingNumber":"(.+?)",</stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> </RegexExtractor> <hashTree/>
6.增加 BeanShell PostProcessor
FileWriter fstream = new FileWriter("D:\\WORK_2020\\20200224_HAOCloud\\meetingId.txt",true); BufferedWriter out = new BufferedWriter(fstream); out.write(vars.get("meetingNumber")+ "\n"); out.close(); fstream.close();
7.增加 View Result Tree 察看結果樹
3.調試配置並運行;
運行過程,查看結果數的返回結果就行,此處不做截圖;
4.檢查結果:
可見文件已經成功生成 :
注意點:
1.對於返回結果的正則部分要注意,差一個雙引號或者.都可能出錯,導致獲取的結果為null;
2.對於兩個引用的組件要注意,不要選錯;
3.其中主要的就是這個 BeanShell后置處理器 ,要注意使用;
部分參考:https://www.cnblogs.com/yrxns/p/10912816.html ,但是該文章有點問題錯誤,看的時候要注意辨別;
當做性能壓測時,可能會需要把響應數據的一些字段統計出來。這里簡單介紹一下。
1、首先把接口調通,確定需要統計的字段,這里以統計ccmpSeq字段來做例子。
2、添加正則表達式提取器,用來提取響應結果中的ccmpSeq
正則表達式用""包起來,如HTTP請求完成后的響應數據
{
"ccmpSeq":"CBS_queryBalance20171023131825491588",
"respTime":"20180820105000",
"respCode":"0",
"respDesc":"操作成功",
"data":{
"totalAmount":19999991000,
"accountID":"acct1470001090166"
}
}
我們只需要統計ccmpSeq,所以正則表達式為 "ccmpSeq":"(.+?)"
() 表示括起來的部分就是要提取的。

4、添加線程數為10,運行后,打開123.csv,查看結果。