JMeter併發測試腳本
接口描述
首先,我拿到接口文檔對需要進行壓測的接口進行分析和調試,這裏我用到jmeter和postman,postman主要是對單個接口進行調試,然後再用jmeter對接口進行關聯。
接口描述:項目中用到是http接口,請求方式是post,參數傳遞採用json格式
異步執行接口:http://xxxxx.:xxxx/rest/runner/asyncRunApp
異步查詢接口:http://xxxxx.:xxxx/rest/runner/getRunState
異步執行結果接口:http://xxxxx.:xxxx/rest/runner/getRunResult
異步刪除接口:http://xxxxx.:xxxx/rest/runner/deleteRun
postman接口調試
我對這幾個接口進行梳理,首先根據開發人員提供的信息,我需要用json的格式傳遞接口數據給異步執行接口,然後再利用異步執行接口的返回值runID,傳給其他的接口:
1、異步執行接口
需要在header處添加請求頭部信息,告知該接口,我給你的參數是json格式
Content-Type:application/json
然後我們再拿到runID傳給下面的幾個接口
2、異步查詢接口
這裏的username與上一個接口的參數是一致的,所以只需要獲取runID就行,當然header部分仍然要添加參數說明,申明是json格式:
Content-Type:application/json
3、獲取結果
4、刪除異步任務
這裏爲什麼要刪除任務,因爲在執行APP任務時,任務會一直存在緩存中,不刪除此任務,後面進行併發操作會導致大量緩存任務,造成阻塞,所以我們在調試的時候,需要執行一次就要刪除一次,以免資源被佔用
重頭戲:Jmeter關聯4個接口
描述
採用jmeter對以上異步執行、異步獲取狀態、異步結果、異步刪除四個接口進行關聯,爲的是在執行測試計劃時,自動根據接口sampler順序發送請求;
一、jmeter測試架構
設計思路:
1、異步執行接口需要將用戶數據參數化,
2、然後利用jmeter後置處理器json提取器,提取響應數據runID的值;
3、將提取的runID值作爲變量,供異步查詢、異步結果、刪除任務這三個接口調用;
4、異步查詢需要獲取到狀態變爲Finnished,才能發送獲取異步結果請求;
5、結果接口返回success後,執行刪除任務,這裏加了一個json判斷,判斷結果是否爲success!
詳細描述:
首先:添加一個線程組
其次:添加四個sampler-HTTP請求,每個HTTP請求添加一個HTTP信息頭管理器,將
Content-Type:application/json填進去
然後:根據接口文檔配置每個HTTP請求的處理邏輯
我這裏主要有一下幾個點
1、需要對用戶數據進行參數化
我這裏創建一個name1.txt的文件,
用戶數據從test1-test100
配置文件-CSV文件讀取
申明變量user,jmeter如何對變量進行提取
按照json格式填寫參數;在引用變量username處填寫“${user}”則可以將txt文本中的用戶數據一次引用到username中;
2、參數傳遞
我要根據異步執行結果接口的返回值,取到runID,然後將runID作爲一個變量傳給異步執行狀態、異步執行結果、刪除異步任務這三個接口;
操作步驟:
給異步執行接口添加後置處理器-json extractor(json處理器)
這個地方jmeter有很多後置處理器可以滿足,我這裏用到時json處理器,因爲返回值格式也是json,比較方便,通常正則表達式提取器是萬能的
返回參數
{
"data": {
"status": "SUCCESS",
"message": "已進入執行隊列",
"result": {
"runId": "xxxxxxxxxxxxx"
},
"code": 2000
},
"result": {
"code": "2000",
"message": "",
"status": "OK"
}
}
json處理器在sampler鼠標右鍵-添加後置處理器-json extractor
jmeter如何使用變量這個就不多說了,下面是異步執行接口調用上一步的用戶數據和json提取器的runID
這個時候需要等待異步查詢接口返回finished,才能進行下一個請求的發送,所以我在這裏設置了一個循環,需要判斷查詢接口的返回值status=finished,否則繼續循環查詢
同樣還是要提取status的值,用到json提取器
while循環控制器
獲取結果,這裏需要用到json斷言判斷結果是否爲success
併發測試
我們的要求是要達到400個用戶併發,一共分配了8個端口,我只用到6個接口,每個接口作爲一個線程組。
腳本編寫完成後,要執行腳本然後分析各種原因
腳本寫好後也需要對腳本不斷的調整,才能達到預期的目標;
有什麼問題的話歡迎大家指正。這個腳本主要就是解決網上大部分jmeter的壓測腳本都只是停留在初級使用階段,沒有加入實際項目中,本腳本是根據公司的軟件設計架構進行真實的場景進行處理而編寫的。
主要解決了jmeter多請求如何進行關聯、如何根據上一個請求的響應值作爲下一個請求的參數,以及如何加入邏輯處理。
後面還會涉及到性能瓶頸分析、性能監控、這些東西都需要全項目的人蔘與,包括數據庫連接、服務器CPU監控、請求日誌、中間件性能等等。
交流問題請加QQ:137485917一起探討