JMeter對各類類型接口的測試php
默認作接口測試前,已經給出明確的接口文檔(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59);本地配好了JMeter 3.x的運行環境;html
打開JMeter,添加一個線程組和該線程組的查看結果樹。如下的幾種接口請求咱們都在這個線程組中添加和運行。java
若是你的JMeter返回數據是亂碼,解決辦法是,在JMeter安裝路徑的bin目錄下,打開文件jmeter.properties,把Sampleresult.default.encoding的值改成 utf-8 便可。mysql
1. 普通的以key-value傳參的get請求正則表達式
e.g. 獲取用戶信息sql
添加http請求;填寫服務器域名或IP;方法選GET;填寫路徑;添加參數;運行並查看結果。json
2. 以Json串傳參的post請求服務器
e.g. 獲取用戶餘額dom
添加http請求;填寫服務器域名或IP;方法選POST;填寫路徑;在參數區域選Body Data標籤;寫入Json串參數,注意Json格式;運行並查看結果。函數
*注意:
Json傳參時,每每參數相對複雜,規模較大,不少時候是Json串再嵌套Json串,在寫入body的時候若是哪裏格式不對會影響傳參,而JMeter自己是不能對Json進行格式校驗的(Postman能夠進行簡單的Json校驗),咱們能夠藉助這個網站來校驗你的Json串的格式,www.bejson.com 再把確保格式正確的Json串填入body。
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. 藉助函數生成參數
測試過程當中,有時候數據不適合被指定,可選擇藉助函數來生成,如下是最經常使用的幾種。
在Jmeter中點擊 選項->函數助手對話框;
在彈出的對話框中選__Random,填寫隨機數的範圍,點擊生成按鈕,就看到你須要的字符串了;
嘗試在請求中使用生成的隨機數,把剛拷貝的字符串粘貼到請求的參數裏;
發送請求,查看請求中參數值的狀況,參數生效了。
3. 文件傳參
用於讀取在文件中維護的參數,如參數文件內容以下;
注意,Jmeter讀取文件總的參數是從第一行就開始了的,千萬不要犯下面的錯誤。
在Jmeter中右擊線程組->添加->配置元件->CSV Data Set Config;
打開設置窗口,寫入參數文件的全名(含絕對路徑),變量名,Delimiter就用默認的逗號,表示在準備參數文件時參數表的列之間用逗號隔開;
在請求中引用參數時應該是醬紫的:${username} ${pwd},用它們來頂替對應的參數值。
4. 關聯傳參
在線程組內,當你想用一個請求的響應結果做爲另外一個請求的入參時就須要用到關聯。
思路是先從某個請求的響應數據中提取你須要的值,在把這個值在另外一個請求中入參,操做以下:
在須要被提取響應數據的請求下添加正則表達式提取器,右擊添加->後置處理器->正則表達式提取器;
在正則表達式提取器中填寫 引用名稱,不說也知道用途;正則表達式,最簡單的辦法是在響應數據中把要提取的目標值左右若干字符包含目標值的一行拷貝出來,粘貼到正則表達式框內,在把目標值用一對小括號替換,括號裏用添上合適的匹配符本例如(.*); 注意在響應數據中拷貝時儘可能避開須要轉義的字符若是不能避開,請轉義;模板一般固定填$1$;匹配數字1表明區匹配的第一個值;缺省值是在匹配失敗時取得的值,一般用來檢查匹配是否成功;
用${age}入參給另外一個請求,查看結果傳參成功。
只針對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。