學習總結——JMeter做http介面功能測試 學習總結——JMeter做http介面功能測試
JMeter對各種型別介面的測試
預設做介面測試前,已經給出明確的介面文件(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59);本地配好了JMeter 3.x的執行環境;
開啟JMeter,新增一個執行緒組和該執行緒組的檢視結果樹。以下的幾種介面請求我們都在這個執行緒組中新增和執行。
如果你的JMeter返回資料是亂碼,解決辦法是,在JMeter安裝路徑的bin目錄下,開啟檔案jmeter.properties,把Sampleresult.default.encoding的值改為 utf-8 即可。
1. 普通的以key-value傳參的get請求
e.g. 獲取使用者資訊
新增http請求;填寫伺服器域名或IP;方法選GET;填寫路徑;新增引數;執行並檢視結果。
2. 以Json串傳參的post請求
e.g. 獲取使用者餘額
新增http請求;填寫伺服器域名或IP;方法選POST;填寫路徑;在引數區域選Body Data標籤;寫入Json串引數,注意Json格式;執行並檢視結果。
*注意:
Json傳參時,往往引數相對複雜,規模較大,很多時候是Json串再巢狀Json串,在寫入body的時候如果哪裡格式不對會影響傳參,而JMeter本身是不能對Json進行格式校驗的(Postman可以進行簡單的Json校驗),我們可以藉助這個網站來校驗你的Json串的格式,
3. 請求時需要http許可權驗證
e.g. 修改使用者餘額
新增http請求;填寫伺服器域名或IP;方法選POST;填寫路徑;填寫引數;
新增授權管理器,右擊執行緒組->新增->配置元件->HTTP授權管理器;
開啟HTTP授權管理器,在基礎URL新增路徑;填寫使用者名稱、密碼(介面文件會給出);新增域即請求的伺服器域名或IP;其他預設;
執行請求並檢視結果。(該介面暫時有問題請求返回500,只要掌握需要許可權驗證的介面如何做就好)
4. 請求時需要新增請求標頭
e.g. 獲取使用者資訊2
新增http請求;填寫伺服器域名或IP;方法選POST;填寫路徑;填寫引數;
新增HTTP資訊頭管理器,右擊執行緒組->新增->配置元件->HTTP資訊頭管理器;
開啟HTTP資訊頭管理器,參照介面文件填寫好header資訊;
執行請求並檢視結果。
5. 請求時需要新增Cookie
e.g. 修改使用者餘額2
新增http請求;填寫伺服器域名或IP;方法選POST;填寫路徑;填寫引數;
新增HTTP Cookie管理器,右擊執行緒組->新增->配置元件->HTTP Cookie管理器;
開啟Cookie管理器,參照介面文件填寫好Cookie資訊;
傳送請求並檢視結果。
6. 請求通過某個介面上傳檔案
e.g.上傳檔案
新增http請求;填寫伺服器域名或IP;方法選POST;填寫路徑;在引數區域選Files Upload標籤,新增檔案全名(包含絕對路徑,也可以點選瀏覽按鈕新增),寫入引數名;傳送請求並檢視結果。
JMeter的引數化
1. 指定引數值
這種方法常用來解決執行緒組中多個請求共用相同的資料,比如我們以上所有請求都有相同的IP地址,當地址改變時可以一改全改。
新增使用者定義的變數,右擊執行緒組->新增->配置元件->使用者定義的變數;
開啟使用者定義的變數,新增變數,寫好名稱和值;
指令碼中用到該值的所有地方都可以引用這個變數名了,引用變數的格式為 ${變數名};
2. 藉助函式生成引數
測試過程中,有時候資料不適合被指定,可選擇藉助函式來生成,以下是最常用的幾種。
- 用函式生成隨機數:(__Random)
在Jmeter中點選 選項->函式助手對話方塊;
在彈出的對話方塊中選__Random,填寫隨機數的範圍,點選生成按鈕,就看到你需要的字串了;
嘗試在請求中使用生成的隨機數,把剛拷貝的字串貼上到請求的引數裡;
傳送請求,檢視請求中引數值的情況,引數生效了。
- 用函式生成當前時間:(__time)
- 用函式生成通用的唯一識別碼:(__UUID)
3. 檔案傳參
用於讀取在檔案中維護的引數,如引數檔案內容如下;
注意,Jmeter讀取檔案總的引數是從第一行就開始了的,千萬不要犯下面的錯誤。
在Jmeter中右擊執行緒組->新增->配置元件->CSV Data Set Config;
開啟設定視窗,寫入引數檔案的全名(含絕對路徑),變數名,Delimiter就用預設的逗號,表示在準備引數檔案時引數表的列之間用逗號隔開;
在請求中引用引數時應該是醬紫的:${username} ${pwd},用它們來頂替對應的引數值。
4. 關聯傳參
線上程組內,當你想用一個請求的響應結果作為另一個請求的入參時就需要用到關聯。
- 用正則表示式關聯
思路是先從某個請求的響應資料中提取你需要的值,在把這個值在另一個請求中入參,操作如下:
在需要被提取響應資料的請求下新增正則表示式提取器,右擊新增->後置處理器->正則表示式提取器;
在正則表示式提取器中填寫 引用名稱,不說也知道用途;正則表示式,最簡單的辦法是在響應資料中把要提取的目標值左右若干字元包含目標值的一行拷貝出來,貼上到正則表示式框內,在把目標值用一對小括號替換,括號裡用添上合適的匹配符本例如(.*); 注意在響應資料中拷貝時儘量避開需要轉義的字元如果不能避開,請轉義;模板通常固定填$1$;匹配數字1代表區匹配的第一個值;預設值是在匹配失敗時取得的值,通常用來檢查匹配是否成功;
用${age}入參給另一個請求,檢視結果傳參成功。
- 用Json Path Extractor 外掛關聯
只針對Json格式的Response 取值,右擊請求新增->後置處理器->JSON Path Extractor;
在JSON Path Extractor中填入引用名和JSONPath Expression;
在另一個請求中入參,也和上面的結果一樣轉參成功。
注意,JSON Path Extractor這個外掛只能在Jmeter3.x以上的版本安裝。
Jmeter新增斷言檢查結果
右擊請求新增->斷言->響應斷言;
新增並寫入希望在響應結果中看到的內容;
傳送請求,檢視結果;
Jmeter操作Mysql
測試計劃新增.jar包 mysql-connector-java-5.1.7-bin.jar用於使Jmeter可以讀取Mysql;
執行緒組新增 JDBC Connection Configuration (新增->配置元件-> JDBC Connection Configuration)用於配置Jmeter和Mysql的連線;
JDBC Driver class是固定的,Jmeter操作各類資料的Driver參考下圖;
執行緒組新增JDBC Request(新增->Sampler-> JDBC Request) 用於寫sql來操作Mysql;
傳送請求,成功訪問Msql。