手把手教會使用Jmeter進行壓測,涉及參數提取、參數關聯、CSV參數化


手把手簡單介紹一下Jmeter的使用方法,以某平台APP登錄接口為例:

1)單接口壓測。

2)依賴其它接口參數。以獲取用戶信息為例。

  • CSV參數化。
  • 參數提取。 Json提取器與正式表達式提取器。

方便初學者使用,Jmeter可以友好的選擇簡體中文:

 

一、單接口壓測

步驟:

  • 添加 ->線程(用戶)->線程組
  • 在線程組上 添加->取樣器->HTTP請求
  • 在HTTP請求上 添加->配置元件->察看結果樹

Jmeter結果頁:

操作演示:

 任何接口信息都預先使用抓包工具查看接口信息。這里使用的是Fiddler:

根據抓包信息,填入HTTP請求組件:這里服務器用是的域名,某些局域網測試環境使用的是IP地址加端口,端口號不要忘記填寫。內容編碼utf-8

 

 

 HTTP信息頭管理器配置   Content-Type:application/json

運行一下,在察看結果樹中,可以看到HTTP請求成功,響應數據為服務器的返回數據,后面用戶信息查詢需要依賴這些結果數據,並且需要通過Json提取器或正則表達式提取器進行提取后才能使用。

 

 

 添加響應斷言,響應數據內容可以作為這個接口的斷言,而且可以自定義失敗消息,設置如下:

 償試將登錄的用戶名11165234970,改為1116523497:

 如果要對此接口進行單用戶壓測,需要設置線程組屬性,並增加聚合報告:

 

 

 

 注釋:

線程組屬性與聚合報告:

線程組屬性:
名稱:就如字面意思,起個有意義的名字就行 線程數:這里選擇1,表示用戶數,模擬多少用戶請求 Ramp-Up Period:單位是秒,默認時間是1秒。它指定了啟動所有線程所花費的時間,比如,當前的設定表示“在1秒內啟動1個線程,每個線程的間隔時間為1秒”。如果你需要Jmeter立即啟動所有線程,將此設定為0即可 循環次數:表示每個線程執行多少次請求。 調度器:選中之后可以配置啟動時間,立即或者預定的時間

聚合報告中,各項指標的說明:
1.Label:每個Jmeter的元素(例如HTTP請求)都有一個Name屬性,這里顯示的就是Name屬性值
2.樣本:表示你這次測試中一共發出了多少請求,如果模擬10個用戶,每個用戶迭代10次,那么這是顯示100
3.平均值Average:平均響應時間
4.中位數Median:也就是50%用戶的響應時間
5.百分位90%Line:90%用戶的響應時間
6.最小值Min:最小響應時間
7.最大值Max:最大響應時間
8.異常Error%:本次測試中出現錯誤的請求數量/請求的總數 9.吞吐量Throughput:吞吐量,表示每秒完成的請求數,(number of requests) / (total time) 10.KB/sec:每秒從服務器端接收、發送的數據量

 

二、參數依賴

為解決如下兩個問題,引入CSV參數化與參數提取器:

  • 如果只使用一個用戶登錄,緩存讓登錄接口的測試數據不夠精准。使用CSV批量處理登錄用戶。
  • 登錄后查看用戶信息時,需要依賴登錄接口返回的數據。使用提取器提取相關參數。第二個接口用到登錄后返回的 "accesstoken"和"customerguid"

1)CSV參數化操作如下:

參數文件:

測試賬號,密碼都是123456 (這是首行,配置CSV時選擇忽略)
11123081796
11165234970
11140921586
11102047359
11170609243
11192610487
11169120403
11181027064
11159706481
11105198230
...

說明, 如果有多個參數,文件可如下設置,CSV變量名稱填寫 usr,passwd,code 英文逗號
11123081796,123456,0512
11140921586,123456,0520

因為文件第一行是說明,因此忽略首行=Ture, 

  

 

 

 

 設置線程屬性, 線程數10。 在HTTP請求消息體中將具體的Phone值改為 “$(usr)”,運行測試,查看結果樹:

  響應數據中的Phone與上傳文件中的帳號依次順序顯示。

 

2)參數提取

添加Json提取器,正則表達式提取器:

 

Json提取器, 可以提取響應消息為Json格式的value值,針對此文的響應消息如下:

{
"Error": 0,
"Message": "",
"Data": {
  "CustomerGuid": "f0214d55-91d5-4b42-8c24-93521ed2636a",
  "Phone": "11140921586",
  "AccessToken": "f1fd35a5e12a46e5"
  },
"Exception": null
}

通過Json提取器可以提取Error、Message、Data、Exception的值。但不能提取值中值,比如不能提取CustomerGuid、Phone、AccessToken的值,想要提取則要用到正值表達式提取器。

 正式表達式提取器頁面說明:

1.主體:接口的返回body.
2.引用名稱:其他地方引用提取值的變量名稱,如填寫的是:usr,具體的引用方式是${usr} 
3.正則表達式:提取內容的正則表達式【注意:()表示提取,對於你要提取的內容需要用小括號括起來】,如, "AccessToken":"(.*?)" 此表達式可以匹配"AccessToken": "f1fd35a5e12a46e5",並將值賦值給變量atoken。其它的類似,抄抄。
4.模板:用$$引用起來,如果在正則表達式中有多個正則提取(多個括號),則可以是$2$,$3$等等,表示解析到的第幾個值給usr(正常情況,填寫$1$)
5.匹配數字:0代表隨機,-1代表所有,其余正整數代表將在已提取的內容中,第幾個匹配的內容。【注意:在使用正則表達式提取器的過程中,如果匹配數字選擇的是-1,還可以通過${usr_1}的方式來取第1個匹配的內容,${usr_2}來取第2個匹配的內容。】
6.缺省值:正則匹配失敗時,取的值.

下一個接口需要用到登錄后的兩個參數,設置兩個正式表達試提取器。

兩個HTTP請求用的HTTP信息頭管理器一樣的,因此將第一個HTTP請求信息頭管理器上移,讓兩個HTTP請求共享。

 

 

 第二個HTTP請求用戶信息地址: https://xxx.xxx.com/sz/Profile/ProfileInfoRequest?accesstoken=839b5280143748d8&customerguid=41e3bff2-7d25-4805-a7b3-ec2816f91f70&sourcetype=9

 抓包信息:get請求,用到登錄后返回的 "accesstoken"和"customerguid"。  如下填寫:

 

 

運行測試,第二個Http請求會自動拼接參數為一個完整的URL: 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM