- jmeter入門(mén)
1.1. jmeter簡(jiǎn)介
1.2. jmeter安裝 - jmeter基本使用
2.1. jmeter基本組件介紹
2.2. 參數(shù)化 - jmeter接口測(cè)試
3.1. jmeter接口測(cè)試-簡(jiǎn)介
3.2. jmeter接口測(cè)試-功能測(cè)試
3.3. jmeter接口測(cè)試-性能測(cè)試 - jmeter數(shù)據(jù)庫(kù)測(cè)試-壓力測(cè)試
- jenkins+maven+jmeter
5.1. jenkins簡(jiǎn)介
5.2. maven簡(jiǎn)介
5.3. jenkins+maven+jmeter環(huán)境搭建
5.4. jenkins+maven+jmeter實(shí)戰(zhàn)
1. JMeter入門(mén)
1.1 JMeter簡(jiǎn)介
Apache JMeter是100%純JAVA桌面應(yīng)用程序舶衬,被設(shè)計(jì)為用于測(cè)試CS結(jié)構(gòu)的軟件虽画。同時(shí)也可以用來(lái)測(cè)試靜態(tài)和動(dòng)態(tài)資源的性能脖岛,例如:靜態(tài)文件绍在,Java Servlets溜宽,CGI Scripts稼跳,Java Object吃沪,數(shù)據(jù)庫(kù)和FTP服務(wù)器等等汤善。JMeter可用于模擬大量負(fù)載來(lái)測(cè)試一臺(tái)服務(wù)器,網(wǎng)絡(luò)或者對(duì)象的健壯性或者分析不同負(fù)載下的整體性能票彪。
同時(shí)红淡,JMeter可以幫助你對(duì)你的應(yīng)用程序進(jìn)行回歸測(cè)試。通過(guò)你創(chuàng)建的測(cè)試腳本和assertions(斷言)來(lái)驗(yàn)證你的程序返回來(lái)所期待的值降铸。為了更高的適應(yīng)性在旱,JMeter允許你使用常規(guī)表達(dá)式來(lái)創(chuàng)建這些assertions。
jmeter的未來(lái):隨著開(kāi)發(fā)人員借助它的可嵌入的結(jié)構(gòu)推掸,希望看到JMeter的能力也隨之快速的被擴(kuò)大桶蝎。更進(jìn)一步的主要發(fā)展目標(biāo)是把JMeter在沒(méi)有減弱他的負(fù)載測(cè)試的能力的同時(shí)盡可能的做成最有效的回歸測(cè)試工具。
1.2 JMeter安裝
安裝環(huán)境要求:
java版本
- JMeter要求充分滿(mǎn)足JVM1.3或更高谅畅。
操作系統(tǒng)[JMeter可以在當(dāng)前任何一個(gè)已經(jīng)部署來(lái)Java的操作系統(tǒng)上運(yùn)行] - Unix
- Windows
- Open VMS Alpha 7.3+
安裝步驟
- 安裝環(huán)境:win7
- 安裝包準(zhǔn)備:1) JDK安裝包登渣。2) JMeter安裝包
安裝過(guò)程
- 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主要組件
- 測(cè)試計(jì)劃(Test Plan)
- 線(xiàn)程序(Thread Group)
- 配置元件(Configuration)
- 邏輯控制器(Login Controller)
- 取樣器(Sampler)
- 斷言(Assertion)
- 監(jiān)聽(tīng)器(monitor)
測(cè)試計(jì)劃
測(cè)試計(jì)劃是使用jmeter進(jìn)行測(cè)試的起點(diǎn)仇味,一個(gè)測(cè)試計(jì)劃描述了一系列jmeter運(yùn)行時(shí)要執(zhí)行的步驟呻顽。一個(gè)完整的測(cè)試計(jì)劃包含一個(gè)或多個(gè)線(xiàn)程組,邏輯控制丹墨,曲陽(yáng)發(fā)生控制廊遍,監(jiān)聽(tīng)器,定時(shí)器带到,斷言和配置元件昧碉。
線(xiàn)程組
- 線(xiàn)程組:測(cè)試?yán)锩總€(gè)任務(wù)都要線(xiàn)程去處理,所有任務(wù)必須在線(xiàn)程組下面創(chuàng)建揽惹。
- 線(xiàn)程數(shù):設(shè)置發(fā)送請(qǐng)求的用戶(hù)數(shù)。
- Ramp-Up Period(in seconds): 創(chuàng)建完所有線(xiàn)程的時(shí)間搪搏,防止對(duì)服務(wù)器有太大的負(fù)載。[如果選擇了10個(gè)線(xiàn)程闪金,并且ramp-up是2秒疯溺,那么JMeter將用2秒使10個(gè)線(xiàn)程啟動(dòng)并運(yùn)行论颅。每個(gè)線(xiàn)程將在前一個(gè)線(xiàn)程啟動(dòng)后0.2秒后啟動(dòng)。如果將此值設(shè)置為0囱嫩,則表示并發(fā)恃疯,也就是所有線(xiàn)程在同一時(shí)間啟動(dòng)。Ramp-up需要足夠長(zhǎng)的時(shí)間來(lái)避免在開(kāi)始測(cè)試時(shí)產(chǎn)生太大的負(fù)載墨闲,并且有足夠短的時(shí)間使最后一個(gè)線(xiàn)程在第一個(gè)線(xiàn)程結(jié)束之前運(yùn)行]
- 循環(huán)次數(shù):請(qǐng)求的重復(fù)次數(shù)今妄。[如果次數(shù)為1,那么JMeter在停止前只執(zhí)行測(cè)試計(jì)劃一次]
- 持續(xù)時(shí)間:測(cè)試計(jì)劃持續(xù)時(shí)間
- 啟動(dòng)延遲:測(cè)試計(jì)劃延遲啟動(dòng)時(shí)間
配置元件
- 配置元件維護(hù)sampler需要的配置信息鸳碧,配置元件不發(fā)送請(qǐng)求(除了HTTP代理服務(wù)器例外)盾鳞,可以根據(jù)實(shí)際需要添加或修改請(qǐng)求的內(nèi)容。
- 配置元件"用戶(hù)定義的變量"會(huì)在測(cè)試的初始階段執(zhí)行(無(wú)論它處于測(cè)試樹(shù)的哪個(gè)位置)
- 配置元件僅對(duì)其所在的測(cè)試書(shū)分支有效
邏輯控制器 - 邏輯控制器可以控制jmeter發(fā)送請(qǐng)求的測(cè)試邏輯瞻离,它與sampler結(jié)合使用可以模擬復(fù)雜的請(qǐng)求序列
- 循環(huán)控制器:設(shè)置請(qǐng)求的循環(huán)次數(shù)或永遠(yuǎn)循環(huán)腾仅,可以用于壓力測(cè)試
- 簡(jiǎn)單控制器:測(cè)試用例順序執(zhí)行
- 事務(wù)控制器:將多個(gè)請(qǐng)求放在同一個(gè)事務(wù)中。Gegerate parent sample套利,則聚合報(bào)告中只顯示事務(wù)控制器的數(shù)據(jù)推励,不會(huì)顯示其中的各個(gè)請(qǐng)求的數(shù)據(jù),反之則全部顯示肉迫。
取樣器(真正的http請(qǐng)求)
- 可以認(rèn)為所有的測(cè)試任務(wù)都由取樣器成單验辞,如:HTTP請(qǐng)求、FTP請(qǐng)求昂拂、JAVA請(qǐng)求等等受神。
- 取樣器告訴jmeter發(fā)送一個(gè)請(qǐng)求到指定的服務(wù)器,并等待服務(wù)器的請(qǐng)求格侯。取樣器會(huì)按照其在測(cè)試樹(shù)中的順序去執(zhí)行鼻听,還可以用邏輯控制器來(lái)改變?nèi)悠鬟\(yùn)行的重復(fù)冊(cè)書(shū)。
斷言 - 斷言:對(duì)取樣器返回的請(qǐng)求結(jié)果給出結(jié)果作出判斷联四,是否正確撑碴。
- 用戶(hù)可以使用斷言來(lái)檢查服務(wù)器獲得的響應(yīng)內(nèi)容,用來(lái)判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶(hù)所期待朝墩。
- 斷言會(huì)影響作用域的所有采樣器醉拓。如果要讓斷言只影響某個(gè)采樣器,需要將斷言作為該采樣器的子項(xiàng)
- 斷言中設(shè)置要測(cè)試的模式收苏,則會(huì)對(duì)響應(yīng)的內(nèi)容(如http請(qǐng)求后亿卤,服務(wù)器返回的內(nèi)容)進(jìn)行與字符串進(jìn)行匹配,如果返回來(lái)內(nèi)容包括了字符串鹿霸,則認(rèn)為該測(cè)試通過(guò)排吴,否則就是失敗。一般通過(guò)添加監(jiān)聽(tīng)響應(yīng)斷言懦鼠。
監(jiān)聽(tīng)器 - 監(jiān)聽(tīng)器:負(fù)責(zé)收集測(cè)試結(jié)果钻哩,支持將結(jié)果數(shù)據(jù)寫(xiě)入文件屹堰。
- 監(jiān)聽(tīng)范圍:當(dāng)前節(jié)點(diǎn)層以及當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)(直至葉子節(jié)點(diǎn)),即監(jiān)聽(tīng)器可以監(jiān)聽(tīng)當(dāng)前層以及比它更低的層街氢。
- 常用監(jiān)聽(tīng)器:查看結(jié)果樹(shù)扯键、聚合報(bào)告、徒刑結(jié)果珊肃、用表格查看結(jié)果
-
查看結(jié)果樹(shù):顯示取樣器請(qǐng)求和響應(yīng)的細(xì)節(jié)荣刑,包括消息頭、請(qǐng)求的數(shù)據(jù)近范、響應(yīng)的數(shù)據(jù)
- 取樣器結(jié)果:顯示的是取樣器相關(guān)參數(shù)(客戶(hù)端參數(shù)與響應(yīng)參數(shù))
- 請(qǐng)求:發(fā)送請(qǐng)求的具體值
- 響應(yīng)數(shù)據(jù):服務(wù)器返回的響應(yīng)參數(shù)
-
聚合報(bào)告:
- Label:取樣器名稱(chēng)
- Samples:運(yùn)行過(guò)程中一共發(fā)出了多少個(gè)請(qǐng)求嘶摊,一般來(lái)說(shuō)是其值=線(xiàn)程數(shù)*循環(huán)次數(shù)(前提:測(cè)試按計(jì)劃跑完,其中沒(méi)有異常結(jié)束的線(xiàn)程)评矩∫抖眩總體samples是各請(qǐng)求samples之和。
- Average:平均響應(yīng)時(shí)間
- Median:響應(yīng)時(shí)間中間值
- 90%Line:響應(yīng)時(shí)間90%線(xiàn)(即90%的用戶(hù)處于這個(gè)值)
- Min/Max:最小/最大的響應(yīng)時(shí)間
- Error%:出錯(cuò)率(出錯(cuò)的Request數(shù)/所有的Request數(shù))
- Throughput:吞吐量斥杜,每秒/每分鐘(具體看/后面的單位)處理的Request數(shù)
- KB/sec:每秒從服務(wù)器接收到的數(shù)據(jù)
-
圖形結(jié)果:
- 樣本數(shù)據(jù):發(fā)出去的請(qǐng)求數(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é)果:
- 顯示每一個(gè)請(qǐng)求的信息,包括發(fā)起請(qǐng)求的線(xiàn)程蔗喂,開(kāi)始時(shí)間忘渔,請(qǐng)求響應(yīng)時(shí)間,請(qǐng)求字節(jié)缰儿。
-
2.2 參數(shù)化
參數(shù)化數(shù)據(jù)畦粮,用記事本寫(xiě)參數(shù)并保存為.dat格式的文件,編碼問(wèn)題在使用CSV Data Set Config參數(shù)化時(shí)要求比較嚴(yán)格乖阵,記事本另存為修改編碼為UTF-8宣赔,注意參數(shù)要一一對(duì)應(yīng),中間用都好隔開(kāi)
參數(shù)化
這里介紹兩種參數(shù)化的方式:
- 函數(shù)助手
- CSV Data Set Config
借助函數(shù)助手的方式 -
點(diǎn)擊菜單欄“選項(xiàng)”---->函數(shù)助手對(duì)話(huà)框瞪浸,如下圖(CVS文件列號(hào)是從0開(kāi)始的儒将,第一列0,第二列1...)
-
復(fù)制生成的參數(shù)化函數(shù)对蒲,參數(shù)化我們需要參數(shù)化的字段钩蚊,這里是對(duì)phone和empNo參數(shù)化,phone的列號(hào)為0蹈矮,empNo列號(hào)為1
**借助JMeter中的配置元件(CSV Data Set Config)
-
選中線(xiàn)程組砰逻,點(diǎn)擊右鍵,添加-配置元件-CSV Data Set Config
- 使用剛才定義好的變量