一、 apache JMeter工具
1)簡介
JMeter——一個100%的純Java桌面應用,它是 apache組織的開放源代碼項目,它是功能和性能測試的工具。JMeter可以用於測試靜態或者動態資源的性能(文件、Servlets、Perl腳本、Java對象、數據庫和查詢、FTP服務器或者其他資源)。
2)Jmeter的下載地址:http://jakarta.apache.org/jmeter/usermanual/index.Html
3)apache JMeter 的特性:
a) 能夠對HTTP和FTP服務器進行壓力和性能測試, 也可以對任何數據庫進行同樣的測試(通過JDBC)。
b) 完全的可移植性和100% 純Java。
c) 完全 Swing 和輕量組件支持(預編譯的JAR使用 Javax.swing.*)包。
d) 完全多線程 框架允許通過多個線程並發取樣和 通過單獨的線程組對不同的功能同時取樣。
e) 精心的GUI設計允許快速操作和更精確的計時。
f) 緩存和離線分析/回放測試結果。
g) 高可擴展性:
h) 可鏈接的取樣器允許無限制的測試能力。
i) 各種負載統計表和可鏈接的計時器可供選擇。
j) 數據分析和可視化插件提供了很好的可擴展性以及 以及個性化。
k) 具有提供動態輸入到測試的功能(包括Javascrīpt)。
l) 支持腳本變成的取樣器(在1.9.2及以上版本支持BeanShell)。
二、 JMeter可以做哪些方面的測試
原先Jemer是為Web/HTTP測試而設計的,但是它已經擴展以支持各種各樣的測試模塊。它和用於HTTP和SQL數據庫(使用JDBC)的模塊一起運送。它可以用來測試靜止資料庫或者活動資料庫中的服務器的運行情況,可以用來模擬對服務器或者網絡系統加以重負荷以測試它的抵抗力,或者用來分析不同負荷類型下的所有運行情況。它也提供了一個可替換的界面用來定制數據顯示,測試同步及測試的創建和執行。
三、具體事例
1)測試環境:
硬件配置 軟件環境
測試時間 2004 年 5 月 25 日
服務器 P4 512M 內存 Oracle 10g+Tomcat5.5
客戶端 P4 512M 內存 Jmeter
測試內容 khxx_xg.JSP 接受用戶參數、調用 Javabean 、輸出相關信息。
2)安裝啟動JMeter
請將下載的.zip文件解壓縮到C:/JMeter目錄下。現在,請使用C:/JMeter/bin下面的jmeter.bat批處理文件來啟動JMeter的可視化界面,下面的工作都將在這個可視化界面界面上進行操作。圖1就是Jmeter的可視化界面。
以下為我的測試計劃的內容:
1、右鍵單擊測試計劃,選擇添加-〉線程組
在線程組裡設置負載信息,即線程屬性。我向測試計劃中增加相關負載設置是Jmeter需要模擬十個請求者,每個請求者在測試過程中並發請求,並且連續請求10次。
線程數: 10
Ramp-up period(inseconds): 0
循環次數: 10
說明:線程數代表發送請求的用戶數目,Ramp-up period(inseconds)代表每個請求發生的總時間間隔,單位是秒。假如我的請求數目是5,而這個參數是10,那麼每個請求之間的間隔就是10/5,也就是2秒。如果設置為0就代表並發請求。Loop Count代表請求發生的重復次數,如果選擇後面的forever(默認),那麼 請求將一直繼續,如果不選擇forever,而在輸入框中輸入數字,那麼請求將重復 指定的次數,如果輸入0,那麼請求將執行一次。
2、添加HTTP默認請求值
右鍵單擊線程組,選擇添加-〉配置元件-〉HTTP默認請求值,以下是我設置的信息:
說明
名稱: HTTP 默認請求值 該元素的名稱
服務器名稱或IP:
localhost 被測試服務器的 IP或者名字
端口號: 8080 服務器提供服務的端口號,我用的服務器是 Tomcat,所以端口號是8080
協議: http 發送測試請求時使用的協議
路徑: /hrbin/hg_admin/khxx_xg.JSP 默認的起始位置。
3、添加HTTP請求
右鍵單擊線程組,選擇添加-〉Sampler-〉HTTP請求,以下是我設置的信息
說明
名稱: HTTP 默認請求值 該元素的名稱
服務器名稱或IP:
localhost 被測試服務器的IP或者名字
端口號: 8080 服務器提供服務的端口號,我用的服務器是Tomcat,所以端口號是8080
協議: http 發送測試請求時使用的協議
路徑: /hrbin/hg_admin/khxx_xg.JSP 默認的起始位置。
因為我測試的是查詢,故添加了一個同請求一起發送的參數(in_id=dsgds):
4、添加監聽器,存放測試結果。
右鍵單擊測試計劃,選擇測試計劃-〉添加-〉監聽器-〉聚合報告
你也可以選擇用表格查看結果、圖形結果、查看結果樹等。
4)運行測試
單擊運行,選擇啟動。
四、 測試結果的分析說明
說明:
Label: 每個 JMeter 的 element (例如 HTTP Request )都有一個 Name 屬性,這裡顯示的就是 Name 屬性的值
#Samples: 表示你這次測試中一共發出了多少個請求,我的測試計劃模擬 10 個用戶,每個用戶迭代 10 次,因此這裡顯示 100
Average: 平均響應時間 —— 默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以 Transaction 為單位顯示平均響應時間
Median: 中位數,也就是 50 %用戶的響應時間
90% Line: 90 %用戶的響應時間
Min: 最小響應時間
Max: 最大響應時間
Error%: 本次測試中出現錯誤的請求的數量 / 請求的總數
Throughput: 吞吐量 —— 默認情況下表示每秒完成的請求數( Request per Second ),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
KB/Sec: 每秒從服務器端接收到的數據量,相當於 LoadRunner 中的 Throughput/Sec
我分別模擬10、25、50、75和100個用戶並發訪問該頁面,根據報告所得測試結果作出如下統計。注:時間單位是ms
用戶數 #Samples Average Median 90%Line Min Max Error% Throughput KB/Sec
10 642 672 688 125 125 719 00.0 14.8/sec 221.15
25 250 1620 1687 1750 250 1781 00.0 14.5/sec 217.14
50 500 3319 3438 3578 281 3657 00.0 14.2/sec 212.02
75 750 4887 5109 5584 328 7094 00.0 14.5/sec 216.67
100 1000 6244 6485 6672 250 6844 00.0 15.1/sec 225.43
一般情況下,當用戶能夠在2秒以內得到響應時,會感覺系統的響應很快;當用戶在2-5秒之間得到響應時,會感覺系統的響應速度還可以;當用戶在5-10秒以內得到響應時,會感覺系統的響應速度很慢,但是還可以接受;而當用戶在超過10秒後仍然無法得到響應時,會感覺系統糟透了,或者認為系統已經失去響應,而選擇離開這個Web站點,或者發起第二次請求。故該系統的用戶信息查詢信息頁面的在10到25人並發訪問時,系統響應速度很快,25人到50人並發訪問時速度還可以,50人到100人並發訪問就比較慢了。