在進行網頁或應用程序後臺接口開發時,通常要及時測試開發的接口可否正確接收和返回數據,對於單次測試,Postman插件是個不錯的Http請求模擬工具。 php
可是Postman只能模擬單客戶端的單次請求,而對於模擬多用戶併發等性能測試,就必須藉助其餘的工具了,這裏推薦功能強大的JMeter自動化測試工具html
Apache JMeter - Apache JMeter™數據庫
Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫, FTP 服務器, 等等。JMeter 能夠用於對服務器、網絡或對象模擬巨大的負載,來自不一樣壓力類別下測試它們的強度和分析總體性能。apache
下面就以上圖的Restful類型的接口爲例簡單介紹使用Jmeter進行接口測試的方法。api
獲取某個具體網關設備的基本信息。服務器
請求網絡
方法:GET併發
URI:/api/gateway/<gateway_id>工具
參數:性能
在HTTP請求(http request)的頭部(header)添加Userid和Token字段做爲用戶驗證字段
參數名 |
必需 |
類型 |
說明 |
gateway_id |
true |
int |
網關ID,置於URL內 |
響應
返回值:JSON格式的網關信息
參數:
參數名 |
類型 |
說明 |
id |
int |
網關id |
name |
string |
網關的名稱 |
mac |
string |
網關的mac地址 |
fw_ver |
string |
網關的固件版本號 |
sub_dev |
unsigned int |
子設備數 |
did |
string |
網關的did |
pscode |
string |
網關pscode |
1.啓動jmeter:在bin下以管理員身份運行jmeter.bat,啓動jmeter
2. 建立測試計劃:
默認啓動jmeter時會加載一個測試技術模板,保存測試計劃:修更名稱爲Apitest,點擊保存,選擇保存路徑,後面的步驟,每次添加或修改了了一些選項,軟件並不會自動保存到jmx文件中,因此進行測試後,若是須要保存本次測試選項,要手動到「文件」菜單中保存一下。
3. 添加線程組
右鍵左邊樹中的測試計劃「Apitest」節點,「添 加」→」Threads」→」線程組」
添加成功後,「Apitest」節點下多了「線程組」 節點,固然這個線程組的名稱是能夠本身設定的。
4. 添加http默認請求:(用來配置公共參數,不是http請求)
右鍵線程組,選擇「添加」→ 「配置元件」→「HTTP請求默認值」,點擊「HTTP請求默認值」後
添加成功後,線程組」節點下多了「HTTP請求默認值」節點
這裏能夠設置主機地址等一下公共參數,好比咱們的例子中請求路徑前面都是主機地址+index.php,就能夠統一在"http請求默認值"裏設置
填寫默認請求名、服務器、默認請求路徑,保存測試計劃。
5.添加http請求信息頭
這一項並非必須的,只不過咱們的例子中使用了Userid和Token放在HTTP請求頭中用做用戶驗證
右鍵「Apitest」,選擇「添加」→ 「配置元件」→「HTTP信息頭管理器」
6. 添加http請求
右鍵「Apitest」,選擇「添加」→ 「Sampler」→「HTTP請求」
添加成功後,出現新的節點「HTTP請求」,就能夠填寫具體的請求參數了。
填寫完成,保存測試計劃
7. 添加監聽器:
右鍵線程組,選擇「添加」→「監聽器」→「XXXXXXXXX」
能夠添加的監聽器有不少種,能夠添加多個監聽器,這裏咱們添加幾個經常使用的「圖形結果」、「察看結果樹」、「聚合報告」
添加成功後,「線程組」下增長了幾個節點
8. 試運行
點擊執行
能夠查看各個「監聽器」的結果
Label:每一個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值
#Samples:表示你此次測試中一共發出了多少個請求,若是模擬10個用戶,每一個用戶迭代10次,那麼這裏顯示100
Average:平均響應時間——默認狀況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也能夠以Transaction 爲單位顯示平均響應時間
Median:中位數,也就是 50% 用戶的響應時間
90% Line:90% 用戶的響應時間
Note:關於 50% 和 90% 併發用戶數的含義,請參考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小響應時間
Max:最大響應時間
Error%:本次測試中出現錯誤的請求的數量/請求的總數
Throughput:吞吐量——默認狀況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也能夠表示相似 LoadRunner 的 Transaction per Second 數
KB/Sec:每秒從服務器端接收到的數據量,至關於LoadRunner中的Throughput/Sec
9. 修改線程組的線程數等參數,用於壓力測試
點擊左側樹形導航中的「線程組」
設置上面幾個參數,模擬的總的請求數是:線程數*循環次數。執行一下,用「圖形結果」監聽器查看一下
樣本數目:總共發送到服務器的請求數.
最新樣本:表明時間的數字,是服務器響應最後一個請求的時間.
吞吐量:服務器每分鐘處理的請求數.
平均值:總運行時間除以發送到服務器的請求數.
中間值:時間的數字,有一半的服務器響應時間低於該值而另外一半高於該值.
偏離:服務器響應時間變化、離散程度測量值的大小,或者,換句話說,就是數據的分佈.