概述
Apache JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設(shè)計(jì)用于Web應(yīng)用測試,但后來擴(kuò)展到其他測試領(lǐng)域。 它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對象、數(shù)據(jù)庫、FTP 服務(wù)器, 等等。JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來自不同壓力類別下測試它們的強(qiáng)度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。它可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M繁重的負(fù)載來測試它們的強(qiáng)度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發(fā)負(fù)載測試你的服務(wù)器/腳本/對象。
下載安裝
- 下載地址:https://jmeter.apache.org/download_jmeter.cgi
- 系統(tǒng)要求:JMeter2.11 需要JDK1.6以上的版本支持運(yùn)行
- 安裝方法:解壓-->安裝JDK-->配置環(huán)境變量JAVA_HOME。
- 啟動:進(jìn)入bin目錄運(yùn)行jmeter.bat啟動jmeter
注意:打開的時候會有兩個窗口,JMeter的命令窗口和JMeter的圖形操作界面,不可以關(guān)閉命令窗口。

打開之后顯示的是英文,如果你想使用其他語言,比如中文,那么通過菜單選項(xiàng)->選擇語言->中文即可,當(dāng)然轉(zhuǎn)為英文也是同樣操作。

測試組件介紹
打開Jmeter頁面:包括測試計(jì)劃+工作臺
Test Plan (測試計(jì)劃):用來描述一個性能測試,包含與本次性能測試所有相關(guān)的功能。也就說本的性能測試的所有內(nèi)容是于基于一個計(jì)劃的。
工作臺:在測試中我們可能需要暫時更改一些組件,可以把一些需要更改的組件保存在工作臺中,測試完成后再恢復(fù),但是切記:不能退出jmeter.一旦退出jmeter,工作臺中的內(nèi)容就會消失。
1 線程組(Test Group)

1) thread group(線程組): 這個就是我們通常添加運(yùn)行的線程。通俗的講一個線程組,,可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶。線程組中包含的線程數(shù)量在測試執(zhí)行過程中是不會發(fā)生改變的。
2) setup thread group:一種特殊類型的ThreadGroup的,可用于執(zhí)行預(yù)測試操作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執(zhí)行測試前進(jìn)行定期線程組的執(zhí)行。
3) teardown thread group: 一種特殊類型的ThreadGroup的,可用于執(zhí)行測試后動作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執(zhí)行測試結(jié)束后執(zhí)行定期的線程組。

雖然有三個添加線程組的選項(xiàng),名字不一樣, 創(chuàng)建之后,其界面是完全一樣的。
名稱:TestTry,就如字面意思,起個有意義的名字就行
注釋:Just try a test
線程數(shù):這里選擇10
Ramp-Up Period:單位是秒,默認(rèn)時間是1秒。它指定了啟動所有線程所花費(fèi)的時間,比如,當(dāng)前的設(shè)定表示“在1秒內(nèi)啟動10個線程,每個線程的間隔時間為0.1秒”。如果你需要Jmeter立即啟動所有線程,將此設(shè)定為0即可
循環(huán)次數(shù):表示每個線程執(zhí)行多少次請求。
2 配置元件(Config Element)

配置元件用于提供對靜態(tài)數(shù)據(jù)配置的支持。CSV Data Set config 可以將本地?cái)?shù)據(jù)文件形成數(shù)據(jù)池 (Data Pool),而對應(yīng)于HTTP Request Sampler和 TCP Request Sampler等類型的配制無件則可以修改 Sampler的默認(rèn)數(shù)據(jù)。
例如,HTTP Cookie Manager 可以用于對 HTTP Request Sampler 的 cookie 進(jìn)行管理。HTTP 請求默認(rèn)值不會觸發(fā)Jmeter發(fā)送http請求,而只是定義HTTP請求的默認(rèn)屬性。
3 定時器(Timer)
定時器(Timer)用于操作之間設(shè)置等待時間,等待時間是性能測試中常用的控制客戶端QPS的手段。類似于LoadRunner里面的“思考時間”。 JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同類型的Timer。
4 前置處理器(Per Processors)
前置處理器用于在實(shí)際的請求發(fā)出之前對即將發(fā)出的請求進(jìn)行特殊處理。例如,HTTP URL重寫修復(fù)符則可以實(shí)現(xiàn)URL重寫,當(dāng)RUL中有sessionID 一類的session信息時,可以通過該處理器填充發(fā)出請求的實(shí)際的sessionID 。
5 后置處理器(Post Processors)
后置處理器是用于對Sampler 發(fā)出請求后得到的服務(wù)器響應(yīng)進(jìn)行處理。一般用來提取響應(yīng)中的特定數(shù)據(jù)(類似LoadRunner測試工具中的關(guān)聯(lián)概念)。例如,XPath Extractor 則可以用于提取響應(yīng)數(shù)據(jù)中通過給定XPath 值獲得的數(shù)據(jù);正則表達(dá)式提取器,則可以提取響應(yīng)數(shù)據(jù)中通過正則表達(dá)式獲得的數(shù)據(jù)。
6 斷言(Assertions)
斷言用于檢查測試中得到的相應(yīng)數(shù)據(jù)等是否符合預(yù)期,斷言一般用來設(shè)置檢查點(diǎn),用以保證性能測試過程中的數(shù)據(jù)交互是否與預(yù)期一致。
7 測試片段(Test Fragment)
測試片段元素是控制器上的一個種特殊的線程組,它在測試樹上與線程組處于一個層級。它與線程組有所不同,因?yàn)樗槐粓?zhí)行,除非它是一個模塊控制器或者是被控制器所引用時才會被執(zhí)行。