- jmeter入門
1.1. jmeter簡介
1.2. jmeter安裝 - jmeter基本使用
2.1. jmeter基本組件介紹
2.2. 參數(shù)化 - jmeter接口測試
3.1. jmeter接口測試-簡介
3.2. jmeter接口測試-功能測試
3.3. jmeter接口測試-性能測試 - jmeter數(shù)據(jù)庫測試-壓力測試
- jenkins+maven+jmeter
5.1. jenkins簡介
5.2. maven簡介
5.3. jenkins+maven+jmeter環(huán)境搭建
5.4. jenkins+maven+jmeter實(shí)戰(zhàn)
1. JMeter入門
1.1 JMeter簡介
Apache JMeter是100%純JAVA桌面應(yīng)用程序,被設(shè)計(jì)為用于測試CS結(jié)構(gòu)的軟件。同時(shí)也可以用來測試靜態(tài)和動(dòng)態(tài)資源的性能,例如:靜態(tài)文件,Java Servlets,CGI Scripts,Java Object,數(shù)據(jù)庫和FTP服務(wù)器等等。JMeter可用于模擬大量負(fù)載來測試一臺服務(wù)器,網(wǎng)絡(luò)或者對象的健壯性或者分析不同負(fù)載下的整體性能。
同時(shí),JMeter可以幫助你對你的應(yīng)用程序進(jìn)行回歸測試。通過你創(chuàng)建的測試腳本和assertions(斷言)來驗(yàn)證你的程序返回來所期待的值。為了更高的適應(yīng)性,JMeter允許你使用常規(guī)表達(dá)式來創(chuàng)建這些assertions。
jmeter的未來:隨著開發(fā)人員借助它的可嵌入的結(jié)構(gòu),希望看到JMeter的能力也隨之快速的被擴(kuò)大。更進(jìn)一步的主要發(fā)展目標(biāo)是把JMeter在沒有減弱他的負(fù)載測試的能力的同時(shí)盡可能的做成最有效的回歸測試工具。
1.2 JMeter安裝
安裝環(huán)境要求:
java版本
- JMeter要求充分滿足JVM1.3或更高。
操作系統(tǒng)[JMeter可以在當(dāng)前任何一個(gè)已經(jīng)部署來Java的操作系統(tǒng)上運(yùn)行] - Unix
- Windows
- Open VMS Alpha 7.3+
安裝步驟
- 安裝環(huán)境:win7
- 安裝包準(zhǔn)備:1) JDK安裝包。2) JMeter安裝包
安裝過程
- JDK的安裝與配置(不多介紹)
- JMeter的安裝:
** 1) 解壓JMeter安裝包到響應(yīng)目錄,如:解壓到D:\apache- jmeter。
** 2) 配置jmeter環(huán)境變量,新建環(huán)境變量名"JMETER_HOME", 變量值"D:\apache-jmeter"
** 3) 在系統(tǒng)變量"CLASSPATH"添加%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar配置完成。
** 4) 命令行運(yùn)行jmeter即可(或直接找到D:\apache-jmeter\bin下的jmeter.bat運(yùn)行)
2 JMeter基本使用
2.1 JMeter基本組件介紹
JMeter主要組件
- 測試計(jì)劃(Test Plan)
- 線程序(Thread Group)
- 配置元件(Configuration)
- 邏輯控制器(Login Controller)
- 取樣器(Sampler)
- 斷言(Assertion)
- 監(jiān)聽器(monitor)
測試計(jì)劃
測試計(jì)劃是使用jmeter進(jìn)行測試的起點(diǎn),一個(gè)測試計(jì)劃描述了一系列jmeter運(yùn)行時(shí)要執(zhí)行的步驟。一個(gè)完整的測試計(jì)劃包含一個(gè)或多個(gè)線程組,邏輯控制,曲陽發(fā)生控制,監(jiān)聽器,定時(shí)器,斷言和配置元件。

線程組

- 線程組:測試?yán)锩總€(gè)任務(wù)都要線程去處理,所有任務(wù)必須在線程組下面創(chuàng)建。
- 線程數(shù):設(shè)置發(fā)送請求的用戶數(shù)。
- Ramp-Up Period(in seconds): 創(chuàng)建完所有線程的時(shí)間,防止對服務(wù)器有太大的負(fù)載。[如果選擇了10個(gè)線程,并且ramp-up是2秒,那么JMeter將用2秒使10個(gè)線程啟動(dòng)并運(yùn)行。每個(gè)線程將在前一個(gè)線程啟動(dòng)后0.2秒后啟動(dòng)。如果將此值設(shè)置為0,則表示并發(fā),也就是所有線程在同一時(shí)間啟動(dòng)。Ramp-up需要足夠長的時(shí)間來避免在開始測試時(shí)產(chǎn)生太大的負(fù)載,并且有足夠短的時(shí)間使最后一個(gè)線程在第一個(gè)線程結(jié)束之前運(yùn)行]
- 循環(huán)次數(shù):請求的重復(fù)次數(shù)。[如果次數(shù)為1,那么JMeter在停止前只執(zhí)行測試計(jì)劃一次]
- 持續(xù)時(shí)間:測試計(jì)劃持續(xù)時(shí)間
- 啟動(dòng)延遲:測試計(jì)劃延遲啟動(dòng)時(shí)間
配置元件
配置元件 - 配置元件維護(hù)sampler需要的配置信息,配置元件不發(fā)送請求(除了HTTP代理服務(wù)器例外),可以根據(jù)實(shí)際需要添加或修改請求的內(nèi)容。
- 配置元件"用戶定義的變量"會在測試的初始階段執(zhí)行(無論它處于測試樹的哪個(gè)位置)
- 配置元件僅對其所在的測試書分支有效
邏輯控制器 - 邏輯控制器可以控制jmeter發(fā)送請求的測試邏輯,它與sampler結(jié)合使用可以模擬復(fù)雜的請求序列
- 循環(huán)控制器:設(shè)置請求的循環(huán)次數(shù)或永遠(yuǎn)循環(huán),可以用于壓力測試
- 簡單控制器:測試用例順序執(zhí)行
- 事務(wù)控制器:將多個(gè)請求放在同一個(gè)事務(wù)中。Gegerate parent sample,則聚合報(bào)告中只顯示事務(wù)控制器的數(shù)據(jù),不會顯示其中的各個(gè)請求的數(shù)據(jù),反之則全部顯示。
邏輯控制器
取樣器(真正的http請求)
取樣器 - 可以認(rèn)為所有的測試任務(wù)都由取樣器成單,如:HTTP請求、FTP請求、JAVA請求等等。
- 取樣器告訴jmeter發(fā)送一個(gè)請求到指定的服務(wù)器,并等待服務(wù)器的請求。取樣器會按照其在測試樹中的順序去執(zhí)行,還可以用邏輯控制器來改變?nèi)悠鬟\(yùn)行的重復(fù)冊書。
斷言 - 斷言:對取樣器返回的請求結(jié)果給出結(jié)果作出判斷,是否正確。
- 用戶可以使用斷言來檢查服務(wù)器獲得的響應(yīng)內(nèi)容,用來判斷請求響應(yīng)的結(jié)果是否如用戶所期待。
- 斷言會影響作用域的所有采樣器。如果要讓斷言只影響某個(gè)采樣器,需要將斷言作為該采樣器的子項(xiàng)
- 斷言中設(shè)置要測試的模式,則會對響應(yīng)的內(nèi)容(如http請求后,服務(wù)器返回的內(nèi)容)進(jìn)行與字符串進(jìn)行匹配,如果返回來內(nèi)容包括了字符串,則認(rèn)為該測試通過,否則就是失敗。一般通過添加監(jiān)聽響應(yīng)斷言。
斷言
監(jiān)聽器 - 監(jiān)聽器:負(fù)責(zé)收集測試結(jié)果,支持將結(jié)果數(shù)據(jù)寫入文件。
- 監(jiān)聽范圍:當(dāng)前節(jié)點(diǎn)層以及當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)(直至葉子節(jié)點(diǎn)),即監(jiān)聽器可以監(jiān)聽當(dāng)前層以及比它更低的層。
- 常用監(jiān)聽器:查看結(jié)果樹、聚合報(bào)告、徒刑結(jié)果、用表格查看結(jié)果
-
查看結(jié)果樹:顯示取樣器請求和響應(yīng)的細(xì)節(jié),包括消息頭、請求的數(shù)據(jù)、響應(yīng)的數(shù)據(jù)
- 取樣器結(jié)果:顯示的是取樣器相關(guān)參數(shù)(客戶端參數(shù)與響應(yīng)參數(shù))
- 請求:發(fā)送請求的具體值
- 響應(yīng)數(shù)據(jù):服務(wù)器返回的響應(yīng)參數(shù)
-
聚合報(bào)告:
聚合報(bào)告- Label:取樣器名稱
- Samples:運(yùn)行過程中一共發(fā)出了多少個(gè)請求,一般來說是其值=線程數(shù)*循環(huán)次數(shù)(前提:測試按計(jì)劃跑完,其中沒有異常結(jié)束的線程)??傮wsamples是各請求samples之和。
- Average:平均響應(yīng)時(shí)間
- Median:響應(yīng)時(shí)間中間值
- 90%Line:響應(yīng)時(shí)間90%線(即90%的用戶處于這個(gè)值)
- Min/Max:最小/最大的響應(yīng)時(shí)間
- Error%:出錯(cuò)率(出錯(cuò)的Request數(shù)/所有的Request數(shù))
- Throughput:吞吐量,每秒/每分鐘(具體看/后面的單位)處理的Request數(shù)
- KB/sec:每秒從服務(wù)器接收到的數(shù)據(jù)
-
圖形結(jié)果:
圖形結(jié)果- 樣本數(shù)據(jù):發(fā)出去的請求數(shù)
- 最新樣本:最近一個(gè)Request的響應(yīng)時(shí)間
- 平均:所有Request響應(yīng)時(shí)間的平均值
- 偏離:所有Request響應(yīng)時(shí)間的偏差
- 吞吐量:單位時(shí)間內(nèi)(一般是1分鐘)chuli Request的個(gè)數(shù)
- 中值:所有Request響應(yīng)時(shí)間的中間值。
-
表格查看結(jié)果:
表格結(jié)果- 顯示每一個(gè)請求的信息,包括發(fā)起請求的線程,開始時(shí)間,請求響應(yīng)時(shí)間,請求字節(jié)。
-
2.2 參數(shù)化
參數(shù)化數(shù)據(jù),用記事本寫參數(shù)并保存為.dat格式的文件,編碼問題在使用CSV Data Set Config參數(shù)化時(shí)要求比較嚴(yán)格,記事本另存為修改編碼為UTF-8,注意參數(shù)要一一對應(yīng),中間用都好隔開

參數(shù)化
這里介紹兩種參數(shù)化的方式:
- 函數(shù)助手
- CSV Data Set Config
借助函數(shù)助手的方式 -
點(diǎn)擊菜單欄“選項(xiàng)”---->函數(shù)助手對話框,如下圖(CVS文件列號是從0開始的,第一列0,第二列1...)
-
復(fù)制生成的參數(shù)化函數(shù),參數(shù)化我們需要參數(shù)化的字段,這里是對phone和empNo參數(shù)化,phone的列號為0,empNo列號為1
**借助JMeter中的配置元件(CSV Data Set Config)
-
選中線程組,點(diǎn)擊右鍵,添加-配置元件-CSV Data Set Config
CVS 數(shù)據(jù)文件設(shè)置 - 使用剛才定義好的變量









