接口測試工具-jmeter
-
- jmeter 概念
- jmeter 原理
- jmeter目錄結構
- jmeter常用控件
jmeter 概念
JMeter就是一款使用JAVA開發的,開源的測試工具。主要用于Web應用的壓力測試或功能測試,可以通過編寫腳本模拟web操作,進行多線程高并發的HTTP、FTP等請求,進而反映出網站的性能,伺服器的可靠性。
jmeter 原理
向伺服器送出請求,并從伺服器擷取請求傳回結果。即建立一個線程池,多線程運作取樣器産生大量負載,自運作過程中通過斷言來驗證結果的正确性,通過監聽器來記錄測試結果
jmeter目錄結構
/ bin目錄:
/ examples:存放jmeter使用執行個體
ApacheJMeter.jar :Jmeter源碼包
jmeter.sh:啟動檔案
jmeter.properties:jmeter配置檔案
jmerter-server:啟動負載生成器檔案
jmeter.log:
/ docs目錄:幫助文檔
/ lib 目錄:jar包,插件管理
/ extras 目錄:提供對Ant的支援檔案,也用于持續內建
/ printable_docs 目錄:使用者手冊
jmeter常用控件
Jmeter體制結構和控件使用
常用控件
-
測試計劃
含義:一個jmx檔案隻能有一個測試計劃,測試計劃中可以定義變量(多用于不常變化的資料,例如伺服器ip,資料庫ip等),引入jar包,編輯測試模式。
run thread groups consecutively:獨立運作每個線程組
run teardown thread groups after shutdown of main threads:主線程結束後運作tear down線程組
functional test mode:函數測試模式(隻有當你需要記錄每個請求從伺服器取得的資料到檔案時才需要選擇函數測試模式。選擇這個選項很影響性能。)
可以将本地jar包導入 -
線程組
一個測試計劃内可以存在多個線程組。每個線程組之間的變量互相獨立。
Name:線程組名稱
Comments:描述/備注
Action to be taken after a sampler error:取樣器錯誤後執行以下操作
continue/start next thread group/stop thread/stop test/stop test now:繼續/啟動下個線程/停止線程/停止測試/立刻停止
thread properties:線程屬性
number of threads(users):線程數量
ramp-up period(in seconds):線程啟動間隔時間
loop count:循環次數
scheduler configuration:排程器配置
duration:持續時間
startup delay:啟動延遲
setup thread group
測試初始化操作,即線程組開始之前執行的内容,用于初始化測試環境,測試資料準備等。
tear down線程組
測試執行後操作,即線程組執行完成之後執行的内容。可用于清理測試環境,清空測試資料等。
-
測試片段
Test Fragment 測試片段
與線程組同級别,但是預設不會執行。隻有被子產品控制器引用的時候才會執行。
-
取樣器
Sampler 取樣器(線上程組下add)
模拟使用者操作,向伺服器發出http請求、webservice或java請求等。
http請求(Http request)較為常用
例如:Get方法
post方法:debug sampler 調試取樣器:
一般隻需要改動name,把需要關注的變量填寫在name裡,多個變量用逗号隔開即可
-
前置處理器
取樣器請求前執行的操作,可以是擷取測試資料,修改參數等。
-
後置處理器
請求執行後的處理,常用的是正規表達式提取器和jason提取器
- 邏輯控制器
if控制器
根據指定表達式的值決定是否執行該節點下的子節點,預設使用JavaScript的文法進行判斷。如果if控制器裡的語句為真,則繼續執行。為假,不執行。
Interpret Condition as Variable Expression?:選中這一項時表示:判斷變量值是否等于字元串true
Evaluate for all children:如果選中這一項,在每個子結點執行前都會計算表達式
Throughput Controller 吞吐量控制器
控制其下的子節點的執行次數與負載比例配置設定
Total Executions:設定運作次數
Percent Executions:設定運作比例(1~100之間)
常量吞吐量定時器
如果需要設定固定tps則需要采用常量吞吐量定時器
target tps設定為持續時間*期望tps
exp:持續時間為60s期望tps為10 則target tps為600,以次類推計算
- 配置元件
CSV資料檔案設定
多用于資料讀取測試資料
HTTP資訊頭管理器
定義資訊頭,在其覆寫下的所有元件都會使用該資訊頭
-
定時器
類似思考時間,控制取樣器的間隔時間。
固定定時器
固定定時器不計入單個取樣器的響應時間,隻計入事務控制器的時間。
-
斷言
判斷請求響應值是否正确的控件,常用的是響應斷言。
-
監聽
檢視請求執行結果的控件,常用的是察看結果樹和聚合報告
察看結果樹
可檢視請求響應的結果、請求内容和響應資料。
可自定義把資料寫入 某個檔案内,請求很多的時候,可以通過查找功能進行定位檢視。
聚合報告lable: sampler的名字
樣本:每個sampler發出的請求數
平均值:平均響應時間,預設情況下是單個請求的平均響應時間,如果使用事務控制器,就是指單個事務平均響應時間。
中位數:50%使用者的響應時間
90%百分位:90%使用者的響應時間
95%百分位:95%使用者的響應時間
99%百分位:99%使用者的響應時間
最小值:最小響應時間
最大值:最大響應時間
注:以上機關為ms
異常%:錯誤請求所占百分比
吞吐量:預設表示每秒完成的請求數(TPS)