項目背景:公司的微信端H5界面新開發了會員注冊功能,需要對其進行壓力測試;
項目目標:需要承受每分鍾最少6000的壓力
一、建立一個測試計划(test plan)
新建一個test plan;
一個性能測試的負載必須有一個線程組完成,而一個測試計划必須有至少一個線程組。添加線程組操作如下:在測試計划右鍵單擊:添加->Threads(Users)->線程組
每個測試計划都必須包含至少一個線程組,當然,也可以包含多個,多個線程組的運行在jmeter中采用的是並行的方式,即:同時被初始化且同時執行其下的sampler
線程組主要包含三個參數:
線程組:虛擬用戶的數量,一個線程指一個線程或者進程;
Ramp-Up Period(in seconds):准備時長。設置的線程組需要多久全部啟動,比如上圖,線程數為6000,啟動時間為60,那么需要60s內啟動6000個線程;
循環次數:每個線程發送請求的次數。如上圖,6000個線程,每個線程發送1次,如果勾選了永遠,那么它將永遠發送下去,直到停止腳本;
設置合理的線程數對能否達到測試目的有決定性影響。比如在本例中,如果線程數太少,則無法達到設定的要求;
另外,設置合理的循環次數也很重要,處理給定的設置循環次數和永遠,還可以通過勾選調度器,設置開始和結束時間來控制。
二、添加sampler
添加完線程組后,在線程組上右鍵單擊:添加->Sampler->SOPA/XML-RPC Request(SOAP/XML-RPC:都是報文中不同的數據格式)
取樣器(Sampler)是與服務器進行交互的單元。一個取樣器通常進行三部分工作:向服務器發送請求,記錄服務器的響應數據和記錄相應時間信息。
這里解釋一下,因為微信H5界面的會員注冊,向微信端發送的是xml文件,所以這里我選擇的取樣器是SOAP/XML-RPC Request
上面的圖中,選擇SOAP/XML-RPC Request取樣器,然后URL一欄輸入我們需要進行加壓的URL
然后默認選項,Use KeepAlive的意思是:保持連接,這個是http協議報文中的一個首部字段,之前的關於HTTP協議的隨筆寫過
下面的SOAP/XML-RPC Data輸入需要發送的xml格式的文件就行(也可以導入xml文件的文件夾進行讀取),下面是xml和json的區別:
添加完取樣器和具體的地址參數之后,接下來就是添加監聽器,對測試結果進行獲取。
三、添加監聽器
在線程組上右鍵單擊,添加你需要的監聽器,一般常用的就是結果樹和聚合報告
添加后啟動線程組進行測試,等線程執行完成后,根據結果樹中的請求和響應結果(成功或失敗)就可以返現我們的測試是否成功,以及根據聚合報告結果來確認我們這次確認是否達到預期結果。
四、聚合報告簡析
Aggregate Report :Jmeter 常用的一個Listener,中文被翻譯為“聚合報告”;
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