bin目錄文件
- Jmeter.bat:windows下的啟動文件
- Jmeter.log:日志文件
- Jmeter.sh:Linux的啟動文件
- Jmeter.properties:系統(tǒng)配置文件
- Jmeter-server.bat:windows分布式測試要用到的服務(wù)器配置
- Jmeter-server:Linux分布式測試要用到的服務(wù)器配置
工具組成部分
資源生成器:用于生成測試過程中服務(wù)器憨降、負(fù)載機(jī)的資源代碼
用戶運(yùn)行器:通常是一個腳本運(yùn)行引擎萎战,根據(jù)腳本要求模擬指定的用戶行為
報表生成器:根據(jù)測試中實(shí)時的數(shù)據(jù)生成報表,提供可視化的數(shù)據(jù)顯示方式
負(fù)載發(fā)生器:用于產(chǎn)生負(fù)載栅螟,通常以多線程或者多進(jìn)程的方式模擬用戶行為
測試計劃
用于描述一次性能測試,包含與本次性能測試所有有關(guān)的功能篱竭,也就是說本次性能測試的所有內(nèi)容是基于一個計劃的
Threads(Users)線程 用戶
- setup thread group
特殊的線程組力图,執(zhí)行預(yù)測試操作,即測試前掺逼,執(zhí)行該定期線程組吃媒,類似init - teardown thread group
特殊的線程組,執(zhí)行測試后操作吕喘,即測試結(jié)束后赘那,執(zhí)行該定期線程組,類似end - thread group(線程組)
可以看做一個虛擬用戶組氯质,線程組中每一個線程都是一個虛擬用戶募舟,線程組中包含的線程數(shù)量在測試執(zhí)行過程中是不會發(fā)生改變的,類似action
Test Fragment(測試片段)
特殊的線程組闻察,在測試計劃中與線程組(Threads)處于一個層級拱礁,但是不被執(zhí)行,除非它是一個模塊控制器或者是被控制器所引用時才會被執(zhí)行
Config Element(配置元件)
提供對靜態(tài)數(shù)據(jù)配置的支持辕漂,如CSV Date Set Config可以將本地數(shù)據(jù)文件形成數(shù)據(jù)池(Date Pool)
Timer(定時器)
用于操作之間設(shè)置等待時間呢灶,等待時間是性能測試中常用的控制客戶端QPS的手段
QPS:Query Per Second 每秒查詢率,是一臺查詢服務(wù)器每秒能夠處理的查詢次數(shù)钉嘹,在因特網(wǎng)上鸯乃,作為域名系統(tǒng)服務(wù)器的性能經(jīng)常用每秒查詢率來衡量
Per Processors(前置處理器)
用于在實(shí)際的請求發(fā)出之前對即將發(fā)出的請求進(jìn)行特殊處理。例如跋涣,HTTP URL重寫修復(fù)符可以實(shí)現(xiàn)URL重寫缨睡,當(dāng)URL中有sessionID一類的session信息時,可以通過該處理器填充發(fā)出請求的實(shí)際的sessionID
Post Processors(后置處理器)
用于對Sampler發(fā)出請求后得到的服務(wù)器響應(yīng)進(jìn)行處理仆潮,一般用來提取響應(yīng)中的特定數(shù)據(jù)
Assertions(斷言)
用于檢查測試中得到的相應(yīng)數(shù)據(jù)等是否符合預(yù)期宏蛉,一般用來設(shè)置檢查點(diǎn),用以保證性能測試過程中的數(shù)據(jù)交互是否與預(yù)期一致
Listener(監(jiān)聽器)
用來對測試結(jié)果數(shù)據(jù)進(jìn)行處理和可視化展示的一系列元件性置。注意:不是用來監(jiān)聽系統(tǒng)資源的元件
Sample(取樣器)
向服務(wù)器發(fā)送請求拾并,記錄響應(yīng)信息,記錄響應(yīng)時間的最小單元
邏輯控制器
兩類元件
一、用于控制test plan中sampler節(jié)點(diǎn)發(fā)送請求的邏輯順序的控制器嗅义,常用的有if屏歹、switch Controller、Runtime Controller等
二之碗、用來組織可控制sampler節(jié)點(diǎn)的蝙眶,如事務(wù)控制器、吞吐量控制器
sample必須位于邏輯控制器下
Jmeter元件作用域和執(zhí)行順序
元件作用域
8類可執(zhí)行元件(測試計劃和線程組不屬于可執(zhí)行元件)褪那,其中幽纷,sample(取樣器)是典型的不與其他元件發(fā)生交互作用的元件,邏輯控制器只對其子節(jié)點(diǎn)的取樣器有效博敬,而其他元件(配置元件友浸,定時器,斷言偏窝,監(jiān)聽器)需要與sample等元件進(jìn)行交互
在Jmeter中收恢,元件的作用域是靠測試計劃的樹型結(jié)構(gòu)中元件的父子關(guān)系來確定的,作用域的原則是:
- 取樣器(sample)元件不和其他元件相互作用祭往,因此不存在作用域的問題
- 邏輯控制器(Logic Controller)元件只對其子節(jié)點(diǎn)的取樣器和邏輯控制器作用
- 除Sample(取樣器)和Logic Controller(邏輯控制器)元件外伦意,其他6類元件,如果是某個取樣器的子節(jié)點(diǎn)硼补,則該元件對其父子節(jié)點(diǎn)起作用驮肉,如果其父節(jié)點(diǎn)不是取樣器,則其作用域是該元件父節(jié)點(diǎn)下的其他所有后代節(jié)點(diǎn)(包括子節(jié)點(diǎn)括勺,子節(jié)點(diǎn)的子節(jié)點(diǎn)等)
元件執(zhí)行順序
- 配置元件(config elements)
- 前置處理程序(Per-processors)
- 定時器(Timers)
- 取樣器(samples)
- 后置處理程序(Post-processors)
- 斷言(Assertions)
- 監(jiān)聽器(Listeners)
注意:
1.前置處理器缆八、后置處理器和斷言等元件功能只對取樣器作用,因此疾捍,如果在它們的作用域內(nèi)沒有任何取樣器,則不會被執(zhí)行
2.如果在同一作用域范圍內(nèi)有多個同一類型的元件栏妖,則這些元件按照它們在測試計劃中的上下順序依次執(zhí)行
小練習(xí)
測試計劃----添加----Threads-----線程組
線程組----添加----Sample----Http請求
HTTP請求----添加----定時器----Constant Throughput Timer
Constant Throughpout Timer---->Target throughput:目標(biāo)吞吐量乱豆,注意這里是每分鐘發(fā)送的請求數(shù),實(shí)際填的數(shù)值為:60 *QPS吊趾,比如要測負(fù)載達(dá)到30QPS宛裕,那就是30 *60
Http請求----添加----監(jiān)聽器----查看結(jié)果樹/聚合報告
聚合報告參數(shù)解析:
Label:每個Jmeter的element(例如Http Request)都有一個Name屬性,這里顯示的是Name屬性的值
#Samples(樣本):表示這次測試一共發(fā)送了多少請求论泛,如果模擬10個用戶揩尸,每個用戶迭代十次,那么這里就是100
Average:平均響應(yīng)時間——默認(rèn)情況下是單個Request的平均響應(yīng)時間屁奏,當(dāng)使用了Transaction Controller時岩榆,也可以以Transaction為單位顯示平均響應(yīng)時間
Median:中位數(shù),50%用戶的響應(yīng)時間小于該值,注意它與average平均響應(yīng)時間的區(qū)別
90%Line:90%的請求耗時都在這個時間之下
Min:最小響應(yīng)時間
Max:最大響應(yīng)時間
Error%:本次測試中出現(xiàn)的錯誤的數(shù)量/請求的總數(shù)
Throughput:吞吐量——默認(rèn)情況下表示每秒完成的請求數(shù)勇边,當(dāng)使用了Transaction Controller(事務(wù)控制器)時犹撒,也可以表示類似Load Runner中的Transaction per Second數(shù)
KB/sec:每秒從服務(wù)器端接受的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec
時間單位都是毫秒
Jmeter斷言(檢查點(diǎn))
斷言是在請求的返回層面上增加一層判斷機(jī)制粒褒,因為請求成功了并不代表結(jié)果一定正確识颊,因此需要檢測機(jī)制提高測試準(zhǔn)確性
1. 響應(yīng)斷言
模式匹配規(guī)則:
包括:返回結(jié)果包括你返回的內(nèi)容
匹配:根據(jù)指定內(nèi)容進(jìn)行匹配
Equals:返回結(jié)果與你指定的結(jié)果一致
Substring:返回結(jié)果是指定結(jié)果的字串
否:不進(jìn)行匹配
2. Size Assertion
輸入指定的字節(jié),通過選擇判斷符來進(jìn)行比較
3. Duration Assertion(斷言持續(xù)時間)
如果響應(yīng)時間大于設(shè)置的持續(xù)時間奕坟,則斷言失敗祥款,反之成功
參數(shù)化
-
前置處理器----用戶參數(shù)
CSV數(shù)據(jù)配置
1.線程組設(shè)置循環(huán)次數(shù),線程組下插入的HTTP請求負(fù)責(zé)插入數(shù)據(jù)
2.創(chuàng)建一個文本文檔月杉,標(biāo)準(zhǔn)的CSV格式文件镰踏,每一行數(shù)據(jù)對應(yīng)文檔一條記錄,不用字段之間使用英文 , 分隔
3.創(chuàng)建一個CSV元件沙合,聲明數(shù)據(jù)源以及編碼集以及解析格式
?Filename:文件路徑
?File encoding:編碼集
?Variable Names:變量名
?Delimiter:分隔符
4.要將CSV中解析的數(shù)據(jù)設(shè)置進(jìn)JSON格式的數(shù)據(jù)報文奠伪,語法${變量名}隨機(jī)參數(shù)化
選項----函數(shù)助手對話框----_Random----設(shè)置最小值最大值,拷貝生成的變量表達(dá)式----粘貼到sample當(dāng)中的參數(shù)值當(dāng)中
Jmeter集合點(diǎn)
在需要集合的元件前-----添加定時器------Synchronizing Timer
參數(shù)說明
Number of Simulated Users to Group by------集合點(diǎn)的集合數(shù)
Timeout in milliseconds------到達(dá)設(shè)置的集合數(shù)之后等待的時間(單位:毫秒)