1.Jmeter的簡介
Apache JMeter,是Apache組織開發(fā)的基于Java的針對功能和性能的測試工具。最初JMeter是為Web/HTTP測試而設(shè)計的,但是后來它已經(jīng)擴展到支持各種各樣的測試模塊。JMeter可以用于測試靜態(tài)或者動態(tài)資源的性能(如靜態(tài)文件、Java服務(wù)程序、Servlet、CGI腳本、Perl腳本、Java對象、數(shù)據(jù)庫和查詢、FTP服務(wù)器或者其他資源)。JMeter可以用于模擬對服務(wù)器、網(wǎng)絡(luò)或?qū)ο蠹右跃薮蟮呢撦d,在不同壓力類別下測試它們的強度,分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達式創(chuàng)建斷言。同時它也提供了一個可替換的界面用來定制數(shù)據(jù)顯示,測試的同步及測試的創(chuàng)建和執(zhí)行。
其下載地址為:?http://jakarta.apache.org。雙擊D:/JMeter/bin下的jmeter.bat或ApacheJMeter.jar即可開啟運行。
2.主要組件介紹
(1)測試計劃(Test Plan)
?? 是使用JMeter進行測試的起點,它是其它JMeter測試元件的容器。
(2)線程組(Thread Group)
?? 代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。
(3)取樣器(sampler)
?? 定義實際的請求內(nèi)容,被線程組包含,我們主要用HTTP請求。
(4)監(jiān)聽器(Listener)
負責(zé)收集測試結(jié)果,同時也被告知了結(jié)果顯示的方式。我們常用的包括:聚合報告、察看結(jié)果樹、用表格查看結(jié)果,都支持將結(jié)果數(shù)據(jù)寫入文件。其他的添加上去看看就行。

(5)邏輯控制器(Logic Controller)
可以自定義JMeter發(fā)送請求的行為邏輯,它與Sampler結(jié)合使用可以模擬復(fù)雜的請求序列。
其分為循環(huán)控制器和事務(wù)控制器。
(6)斷言(Assertions)
可以用來判斷請求響應(yīng)的結(jié)果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執(zhí)行壓力測試。這個限制對于有效的測試是非常有用的。
(7)配置元件(Config Element)
維護Sampler需要的配置信息,并根據(jù)實際的需要會修改請求的內(nèi)容。我們主要在參數(shù)化中用到CSV Data Set Config。
(8)前置處理器(Pre Processors)和后置處理器(Post Processors)
負責(zé)在生成請求之前和之后完成工作。前置處理器常常用來修改請求的設(shè)置,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)。我們主要在動態(tài)關(guān)聯(lián)中用到后置處理器的正則表達式提取器。
(9)定時器(Timer)
負責(zé)定義請求之間的延遲間隔。
3.三種腳本生成方式
方式一:直接導(dǎo)入 Badboy所錄制腳本
在前面的文章我們講解了使用badboy進行腳本錄制,這里可以直接將其導(dǎo)入到Jmeter中。具體補步驟如下:
(1)打開JMeter會有一個默認的測試計劃,點擊文件->打開,選中錄制的腳本文件如:Baidu_login.jmx,打開腳本進行測試。
(2)在線程組(Thread Group)上添加 監(jiān)聽器->聚合報告(用于分析測試結(jié)果)后,點擊 運行-啟動,開始測試,測試完畢后在聚合報告中就可以看到測試結(jié)果。一個簡單的測試計劃就完成了。

方式二:手動編寫測試樣例
(1)在測試計劃中先添加一個線程組,然后在該線程組中加入http請求模塊。可以在sampler中看到,Jmeter還能測試數(shù)據(jù)庫連接查詢壓力,F(xiàn)TP連接壓力等。

(2)編寫測試請求。

(3)添加監(jiān)聽等。
(4)設(shè)置線程并發(fā)量。

(5)點擊運行,查看運行結(jié)果,進行分析。


即300個并發(fā)量中,平均時間是17074毫秒,中間段發(fā)出的的請求耗時18891毫秒,末尾百分之90處發(fā)出的請求耗時25575毫秒。整個測試過程中,最小耗時為2616毫秒,最大耗時為26911毫秒。
方式三:使用Jmeter工作臺錄制腳本(待續(xù)……)