JMeter的簡單使用

搭建好一個網站後,在推出之前一般要做一些測試,比如測試網站能承受的併發訪問數,請求響應時間等。在測試時,既可以自己寫一些腳本模擬客戶端進行訪問,但更多的是利用已有的測試工具。

最近學着搞網站的分佈式的部署,部署好之後爲了獲得一些運行數據,於是找了一個叫JMeter 的工具對網站進行壓力測試,這裏把JMeter 的一些簡單的使用方法記錄下來。

JMeter的介紹可以看百科或者官網的介紹,簡單的說,它是一個Java桌面應用程序,用於對軟件或者Web應用做壓力測試。現在最新的版本是2.4,下載地址爲 http://jakarta.apache.org/jmeter/ 。下載後直接解壓縮就能用,運行方式有GUI和命令行兩種,下面的圖片都是GUI運行方式的截圖,界面語言爲中文,如果你的界面不是中文,可以通過【選項】-> 【選擇語言】更換之。

1 簡單訪問

最簡單的使用是模擬瀏覽器客戶端直接訪問被測網站了。

當使用GUI 模式時,顯示的界面中只有測試計劃和工作臺兩個導航。如果有已有的測試計劃,可以通過【文件】菜單打開之。如果是從頭開始,那就一步步來吧。首先在測試計劃中右鍵,選擇【添加】-> 【線程組】,添加線程設置如下圖所示。線程數表示同時啓動的用於模擬客戶端的個數,Ramp-Up Period 則表示每個多久啓動一個線程,設置爲0 則表示同時啓動,那麼就是併發的測試了。循環次數表示單個線程的行爲反覆執行的次數。下圖中的數據表示,同時啓動50 個線程,每個線程重複10 次,如果行爲是HTTP 請求,則表示50 個併發,總計500 個請求

 

 

然後就要開始定義線程組的行爲了。

線程組右鍵選擇【添加】->sample->HTTP 請求】,則添加一個線程組的子節點如下圖所示

在此請求中需要填充的屬性有 服務器名,端口號 協議 方法 和路徑

如上圖中則是訪問http://166.111.8.238/admin /

配置好了之後,選擇【運行】-> 啓動就可以跑這個測試例了,當然最好還是需要保存一下測試計劃以便下次使用。

爲了看到測試的結果,還必須增加一些監聽器。右鍵線程組,選擇【添加】-> 【監聽器】, 加入合適的監聽器。用的較多的有:

1 )聚合報告:

一些測試的統計信息,如響應時間,請求失敗率等,具體數值的含義如下:

Label :每個 JMeter element (例如 HTTP Request )都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值

#Samples :表示你這次測試中一共發出了多少個請求,如果模擬10 個用戶,每個用戶迭代10 次,那麼這裏顯示100

Average :平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 爲單位顯示平均響應時間

Median :中位數,也就是 50 %用戶的響應時間

90% Line90 % 用戶的響應時間

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

 

2 )圖形結果

以圖形的方式表現出測試結果曲線

 

 

3 )查看結果樹

這個可以將測試過程中的請求和響應數據都列出來,便於分析請求是否成功,返回的數據是否正確。可用於在啓動正式測試之前,測試本測試計劃是否正確,如果請求數較多可以不用它。

 

 

 

這些測試結果都可以根據需求保存下來。

2 複雜用戶行爲

上面講到的是模擬簡單的行爲,而對於複雜的用戶行爲,如一連串的動作,登錄之後再發表評論上傳下載甚至做購物流程的話,要這樣一個個添加HTTP 請求就比較困難了。JMeter 提供一個記錄用戶行爲的功能,即記錄一段時間內的瀏覽器請求過程,這是通過它內置的Proxy 來實現的:首先在JMeter 中能啓動一個代理,然後將瀏覽器的代理設置爲該代理,這樣瀏覽器的所有請求就要經過這個代理出口,JMeter 捕捉到這些流量並記錄用戶的行爲。具體實現過程如下 :
首先啓動一個代理,工作臺右鍵【添加】-> 【非測試元件】->HTTP 代理服務器】,並填寫適合的未佔用端口,下圖中是43221

然後設置瀏覽器的代理:

然後【啓動】HTTP 代理服務器,用瀏覽器進行需要測試的用戶行爲,可以看到導航欄中列出了一系列的操作過程。操作完畢,就【停止】HTTP 代理服務器。

 

 

 

這樣記錄的行爲基本是可用的,但現在也發現一個bug ,上傳文件時文件的路徑只是記錄了文件名而沒有完整的本地路徑,會導致上傳找不到文件,這時候要手動修改表單中的值。

如果覺得這一列行爲過於複雜,可以進行刪減保留必要的行爲,也可以加入循環控制器,定時器等元件在此基礎上模擬更復雜的用戶行爲。

3 命令行模式

JMeter 的命令行模式很簡單,首先可以通過GUI 或手工編寫測試計劃,然後使用命令行執行。具體命令行參數如下:
-n
這是在無界面模式運行JMeter

-t [ 包含測試計劃的JMX 文件的名字]

-l [ 記錄取樣結果的JTL 文件的名字]

-r 運行在JMeter property 文件裏所有的”遠程服務器”的測試

-R [ 遠程服務器的名單] 運行制定的遠程服務器的測試

這個腳本也允許你指定可選的防火牆/ 代理服務器信息:

-H [ 代理服務器主機名或者ip 地址]

-P [ 代理服務器端口]

例子 : JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

測試中得到的log 文檔記錄了所有請求的詳細情況,具體顯示的數據可以再GUI 界面進行設置,而且在測試完成之後,如果要得到統計數據如聚合報告,只需要在監聽器(如聚合報告)的界面中點擊【瀏覽】,將保存的數據導入即可看到統計表格。

JMeter 的組件還是比較豐富的,若要進一步使用,請看官方的文檔。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章