Jmeter使用流程及簡單分析監控(轉載)
轉載自:https://www.cnblogs.com/linglingyuese/archive/2013/03/04/linglingyuese-one.html#undefined
一、安裝Jmeter
1、下載Jmeter
下載地址:http://jmeter.apache.org/download_jmeter.cgi
目前最新版為2.9,其餘檔案如原始碼等也可從如下官網下載:
http://jmeter.apache.org/download_jmeter.cgi
2、安裝Jmeter之前
安裝Jmeter之前需要先配置Java環境,我們下載的是jmeter2.9,所以java版本最好是選用java6以後的版本。
安裝JDk1.6的步驟如下:
點選下載的JDK檔案-dk-6u18-windows-i586.exe,點選下一步直至安裝完成,然後開始配置環境:
點選我的電腦----屬性----高階----環境變數----在系統變數中----點選新建,
在變數名中輸入:JAVA_HOME
變數值中輸入:C:\Program Files (x86)\Java\jdk1.6.0_18
這裡注意,不需要加“;”,我加了“;”結果導致javac命令無效。
再次點選新建:
在變數名中輸入:CLASSPATH,
變數值中輸入:.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;
然後再系統變數中找到Path,點選編輯,在變數值中加上:
%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;(如果前面沒有“;”需要加上)
配置完成之後,點選確定儲存,然後cmd開啟命令視窗輸入:java或者javac,出現大串字串表示配置成功。
也可以輸入:java -version 檢視java版本來檢視是否配置成功。
OK,JDK安裝成功之後,就可以下一步安裝Jmeter了。
3、安裝Jmeter
解壓apache-jmeter-2.9.zip檔案至目錄,我的是D:\Program Files目錄。
點選我的電腦----屬性----高階----環境變數----在系統變數中----點選新建,
變數名輸入:JMETER_HOME
變數值輸入:D:\Program Files\apache-jmeter-2.9
然後編輯CLASSPATH變數,加上%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;然後確定即可
操作完上面的步驟,我們就可以點選Jmeter中bin目錄下面的jmeter.bat檔案即可開啟Jmeter了。
注意:開啟的時候會有兩個視窗,Jmeter的命令視窗和Jmeter的圖形操作介面,不可以關閉命令視窗。
介面如下圖所示:
二、錄製Jmeter指令碼
錄製Jmeter指令碼有兩種方法,一種是設定代理;一種則是利用badboy軟體,badboy軟體支援匯出jmx指令碼。
這裡我們介紹第二種方法,利用badboy錄製指令碼,然後匯出Jmeter需要的jmx檔案。
首先,在位址列中輸入要錄製指令碼的地址,然後點選綠色按鈕即可開始錄製(工具欄中的紅色按鈕也可以點選進行錄製),點選紅色圓形按鈕旁邊的正方形黑色按鈕結束指令碼錄製(如果使用過loadrunner,那麼步驟是一樣的),在內嵌的瀏覽器上面操作你需要測試的動作即可,它會自己記錄你的相關行為動作。
然後點選黑色按鈕錄製完成之後,我們可以匯出jmx檔案:
儲存為“登入開發者.jmx”。
三、使用Jmeter開始測試
1、開啟指令碼
用Jmeter開啟我們上面儲存的檔案。
開啟之後如圖所示:
2、修改指令碼
a、執行緒組
在測試計劃裡面選擇新增既可以看到執行緒組。
如上圖:
名稱:可以隨意取,我們保持建立是自動分配的名稱
註釋:隨意
在取樣器錯誤後要執行的動作:我們選擇繼續,錯誤之後依然繼續執行
執行緒數:一般我們用來表示多少個使用者,即我們測試時的使用者數量
Ramp-up Period(in Seconds):表示每個使用者啟動的延遲時間,上述我設為1秒,表示系統將在1秒結束前啟動我設定的1000個使用者,如果設定為1000秒,那麼系統將會在1000秒結束前啟動這1000個使用者,開始使用者的延遲為1秒, 如果我設定為0秒,則表示立即啟動所有使用者。
迴圈次數:如果你要限定迴圈次數為10次的話,可以取消永遠的那個勾,然後在後面的文字框裡面填寫10;在這裡我們勾上永遠,表示如果不停止或者限定時間將會一直執行下去, 是為了方便排程器的呼叫。
排程器的配置:我們勾選排程器時,將會出現這個面板
啟動時間:表示我們指令碼開始啟動的時間,當你不想立即啟動指令碼測試,但是啟動指令碼的時間不會再電腦旁的時候,你可以設定一個啟動的時間,然後再執行那裡點選啟動,系統將不會立即執行,而是會等到你填寫的時間才開始執行。
結束時間:與啟動時間對應,表示指令碼結束執行的時間。
持續時間:表示指令碼持續執行的時間,以秒為單位,比如如果你要讓使用者持續不斷登入1個小時,你可以在文字框中填寫3600。如果在1小時以內,結束時間已經到達,它將會覆蓋結束時間,繼續執行。
啟動延遲:表示指令碼延遲啟動的時間,在點選啟動後,如果啟動時間已經到達,但是還沒有到啟動延遲的時間,那麼,啟動延遲將會覆蓋啟動時間,等到啟動延遲的時間到達後,再執行系統。
注意:如果我們需要用到排程器來設定持續時間,如果執行緒數不夠多到持續時間結束,我們就必須將迴圈次數勾選為永遠,特別地,如果執行緒組裡面有其他的迴圈,我們也需將該迴圈次數勾選為永遠(如我上面錄製的指令碼中的Step1也是一個迴圈,需要將永遠勾選),否則,按我如上配置,將永遠去掉勾選,文本里填1,那麼無論你將持續時間啟動時間結束時間等設定多少,系統執行1000次後,將會停止不再執行。
b、關於HTTP請求
關於HTTP請求,我們錄製的腳本里面就有,這裡就介紹一些常用的屬性。
如圖所示:
點選HTTP請求,將會出現如下介面:
其中:
名稱:可以隨意取,我們可以根據錄製指令碼的路徑來命名
註釋:可以對該介面做一個簡單介紹
伺服器名稱或IP:即我們的伺服器或者IP的地址,我因為是在本機上的專案,故填寫localhost,可以填寫127.0.0.1。
埠號:我用的是tomcat,自己設定的埠號為8086(tomcat預設為8080)
後面的超時定義可以不用填寫。
Implementation:這裡我們錄製時預設填寫為JAVA
協議填寫為:http
方法為:GET
Content encoding:編碼可以不用填寫
路徑:即頁面的路徑;下面的重定向等選擇可以根據需要勾選,這裡我們保持錄製不修改。
Parameters引數:即跟著路徑一起傳送的引數及檔案
下面的代理伺服器等可以忽略,按需要填寫。
c、引數化
如下面圖,我們為請求傳送的引數來引數化。
上述的例子為登入的用例,登入有兩個引數:EMAIL和DEVELOPER_PASSWORD,在實際測試中,當我們需要用到不同的使用者來登入的時候,我們就可以用到引數化。
1)、我們新建一個檔案,這裡我新建的是一個txt檔案,命名為c.txt,裡面的內容為
[email protected],111111
[email protected],111111
2)、在jmeter中的【選項】中選擇【函式助手對話方塊】,將會彈出如下對話方塊:
其中:
CSV file to get values from | *alias:要讀取的檔案路徑,為絕對路徑
CSV檔案列號| next| *alias:從第幾列開始讀取,注意第一列是0
如上圖所示,我們讀取的是c.txt裡面的第一列使用者名稱(如果要讀取第二列的密碼,只需將0改成1即可,往後類推),點選【生成】按鈕即可生成函式,我們使用時即拷貝生成的函式字串:${__CSVRead(E:\c.txt,0)}。
其他函式後面介紹。
d、斷言驗證
在web測試中,有的時候,即使我們測試返回的response code為200,也不能保證該測試是正確的,這時候,我們可以用到響應斷言,通過對比響應的內容來判斷返回的頁面是否是我們確定要返回的頁面。
選擇我們要判斷的頁面,點選新增斷言----響應斷言,將會出現如下圖:
名稱:隨意,這裡我們不做改動
註釋:隨意
Apply to:這裡我們選擇預設值
要測試的響應欄位:這裡我們選擇響應的文字,即返回的頁面資訊
模式匹配規則:這裡我們選擇包括,即響應的文字是否包括我們驗證的資訊
要測試的模式:開發者名稱,即我們需要驗證,開發者名稱是否在響應文字中存在,也可以新增更多的欄位來驗證。
其他還有檔案大小和響應時間等的斷言,後面介紹。
e、新增監聽器
我們做效能測試的時候,經常需要各種資料來驗證我們的測試結果,Jmeter裡面也提供了相關的功能,這裡主要說一下Aggregate Report聚合報告。
點選新增---監聽器,選擇:檢視結果樹,和聚合報告,如果需要看到斷言資訊也可以選擇斷言結果,將設定的一切儲存之後,然後點選啟動,系統將會執行,將結果在監聽器中表現出來。
四、分析結果
1、檢視結果樹
如圖所示:成功的為綠色,失敗則顯示為紅色。如果測試的結果太多,你只需要看到錯誤的頁面,則勾選【僅日誌錯誤】
2、聚合報告(Aggregate Report)
其中:
Label:標籤,即我們上面的請求名稱
#Samples:本次場景中一共發出了多少個請求
Average:平均響應時間
Median:中位數,也就是50%的使用者的響應時間
90%Line:表示90%的使用者的響應時間,如果最小值和最大值相差很大的話,我們一般選擇這個作為最終測試結果
Min:最小響應時間
Max:最大響應時間
Error%:出錯率,本次測試中出現錯誤的請求的數量/請求的總數
Throughput:吞吐量
KB/sec:每秒從伺服器端接受到的資料量
五、監控記憶體及CPU等
很多時候,我們測試效能都需要檢視記憶體和CPU等資訊來判斷系統瓶頸,關於CPU和記憶體的監控,Jmeter並沒有很好的支援,很多時候,我們都只能通過系統的資源監控器來觀察,一閃而過不會記錄下來,很不方便。幸好google開發了一款專門監控的Jmeter外掛,彌補了Jmeter這方面的不足,下面就來介紹一些這款外掛——JMeterPlugins,目前我用的是0.5.6版本。
1、JMeterPlugins的下載地址
地址:http://code.google.com/p/jmeter-plugins/downloads/list,選擇需要的版本,下載
2、JMeterPlugins的配置使用
將下載的檔案解壓,得到如下目錄:
將JMeterPlugins.jar包複製到Jmeter的lib目錄下面的ext目錄下面,重新啟動Jmeter,我們點選新增就可以看到出現了很多的[email protected]開頭的檔案.
這裡監控記憶體我們使用的是:[email protected] - PerfMon Metrics Collectot
在使用之前,我們需要執行/serverAgent/startAgent.bat這個檔案,我們需要將serverAgent目錄及下面的檔案複製到我們測試的伺服器上,然後點選開啟(我這裡是本機,直接在本機上面開啟這個應用系統即可),它的預設埠為4444。
一切準備好後,點選啟動,即可得到如下圖:
你就可以得到系統執行時,你所需要的常用的效能值了。
六、監控記憶體及CPU等(jconsole)
最近逛論壇的時候,發現了一個比較好的監控記憶體CPU等的小工具,本著開源小工具多多益善的原則,記錄一下。
開啟這個小工具的步驟很簡單,如果你已經配置好了Jmeter執行的環境,那麼你也就不用去做其他的配置,直接 點選:開始——》執行——》輸入cmd——》然後在出現的命令列介面輸入“jconsole”即可彈出一個【java監視和管理控制檯】,
將會彈出如下介面:
這裡我們選擇本地程序,並點選一下sun.tools.jconsole.JConsole這一行,然後點選連線,就可以檢視我們的記憶體和CPU的使用情況了。
當然,我們要得到伺服器的記憶體使用等資訊,也可以選擇 本地程序下面的遠端程序,在文字框中輸入我們需要測試的伺服器的IP地址:埠,然後在下面輸入使用者名稱和密碼,點選連線,看看會出現什麼情況。