Jmeter組件參數(shù)化
參數(shù)化是什么
動態(tài)的獲取并設(shè)置數(shù)據(jù)
為什么使用參數(shù)化
執(zhí)行批量操作,批量添加批量刪除瓢谢,人工效率太低運用程序代替人工獲取并設(shè)置數(shù)據(jù)畸写,安全高效比如:對被測系統(tǒng)的用戶名和密碼進行參數(shù)化,來模擬多個用戶同時登錄系統(tǒng)
參數(shù)化實現(xiàn)之用戶自定義變量
通過這個功能氓扛,能實現(xiàn)多接口共享數(shù)據(jù)枯芬,修改一條即可修改全部
Filename:所需數(shù)據(jù)文件的路徑。如和腳本同一路徑采郎,可直接填寫文件名
File encoding:編碼和文件保持一致即可千所,默認為ANSI。如有中文蒜埋,建議為UTF-8
Variable Names:引用變量時的變量名淫痰,對應(yīng)數(shù)據(jù)文件中的每一列,以逗號分隔整份。如不填寫待错,文件的第一行數(shù)據(jù)將被讀取為變量名
Delimiter:在.txt、.dat文件中烈评,可以用逗號(,)或者Tab鍵(\t)來區(qū)分列與列
Allow quote data:選項選為“true”的時候?qū)θ亲址奶幚沓霈F(xiàn)亂碼
Recycle on EOF:到數(shù)據(jù)文件結(jié)尾時是否循環(huán)讀取火俄。設(shè)置為True時,線程數(shù)過多讲冠,數(shù)據(jù)文件讀取到最后一行時瓜客,會再次從第一行開始讀取。設(shè)置為False竿开,到達文件結(jié)尾時如繼續(xù)讀取谱仪,則值會默認為,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變該值否彩。
Stop thread on EOF:Recycle on EOF設(shè)置為False疯攒,Stop thread on EOF設(shè)置為True,則讀取數(shù)據(jù)文件最后一行后列荔,停止測試卸例,不管還有多少線程組未執(zhí)行称杨。
Sharing mode:共享模式。默認在所有線程組中使用筷转,可選擇每個線程組單獨打開
相同的部分使用用戶自定義變量
只需要修改一次接口
效果展示
參數(shù)化實現(xiàn)之CSV Data Set Config
添加CSV Data Set Config:
添加界面:
通過這個組件可以動態(tài)獲取并設(shè)置數(shù)據(jù)姑原,實現(xiàn)批量添加操作
名詞解釋:
Filename:所需數(shù)據(jù)文件的路徑。如和腳本同一路徑呜舒,可直接填寫文件名Fileencoding:編碼和文件保持一致即可锭汛,默認為ANSI。如有中文袭蝗,建議為UTF-8VariableNames:引用變量時的變量名唤殴,對應(yīng)數(shù)據(jù)文件中的每一列,以逗號分隔到腥。Delimiter:在.txt朵逝、.dat文件中,可以用逗號(,)或者Tab鍵(\t)來區(qū)分列與列Allowquote data:選項選為“true”的時候?qū)θ亲址奶幚沓霈F(xiàn)亂碼Recycleon EOF:到數(shù)據(jù)文件結(jié)尾時是否循環(huán)讀取乡范。設(shè)置為True時配名,線程數(shù)過多,數(shù)據(jù)文件讀取到最后一行時晋辆,會再次從第一行開始讀取渠脉。設(shè)置為False,到達文件結(jié)尾時如繼續(xù)讀取瓶佳,則值會默認為<EOF>芋膘,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變該值。Stopthread on EOF:Recycleon EOF設(shè)置為False霸饲,Stopthread on EOF設(shè)置為True为朋,則讀取數(shù)據(jù)文件最后一行后,停止測試厚脉,不管還有多少線程組未執(zhí)行习寸。Sharingmode:共享模式。默認在所有線程組中使用器仗,可選擇每個線程組單獨打開
添加引用文件:
引用:
在jmeter中添加
線程數(shù)改為某個值
查看結(jié)果樹:
其他:
線程組線程數(shù)改為大于文件中數(shù)據(jù)的處理:
遇到結(jié)束符在循環(huán)
遇到結(jié)束符停止線程
如果數(shù)據(jù)來自數(shù)據(jù)庫
數(shù)據(jù)庫導(dǎo)出txt文件
使用Jmeter函數(shù)助手(文件中不要出現(xiàn)中文):
1融涣、點擊 選項-->函數(shù)助手 調(diào)出函數(shù)助手對話框2童番、選擇 _CSVRead 函數(shù)(下圖第一個框)3精钮、函數(shù)參數(shù):1)第一個參數(shù):填寫文件路徑。2)第二個參數(shù):文件列號是從0開始的剃斧,第一列0轨香、第二列1、第三列2幼东、依次類推,然后點擊【生成】按鈕臂容,則會自動生成我們需要的參數(shù)化函數(shù)科雳。3)復(fù)制生成的參數(shù)化函數(shù),copy過程需要使用的地方即可脓杉。4)_Random函數(shù)是從某數(shù)據(jù)段隨機讀取數(shù)據(jù)替換參數(shù)糟秘,當需要添加多條數(shù)據(jù)記錄且某些字段需要唯一性時使用。
Jmeter正則表達式提取
使用正則提取
運用Jmeter正則提取器球散,可以從請求的響應(yīng)結(jié)果中取到需要的內(nèi)容尿赚,從而實現(xiàn)關(guān)聯(lián)。關(guān)聯(lián)是請求與請求之間存在數(shù)據(jù)依賴關(guān)系蕉堰,需要從上一個請求獲取下一個請求需要回傳回去的數(shù)據(jù)
正則表達式(regular expression)描述了一種字符串匹配的模式(pattern)凌净,可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等屋讶。
字符描述
*匹配前面的子表達式零次或多次冰寻。例如,zo* 能匹配 "z" 以及 "zoo"皿渗。* 等價于{0,}斩芭。
+匹配前面的子表達式一次或多次。例如羹奉,'zo+' 能匹配 "zo" 以及 "zoo"秒旋,但不能匹配 "z"。+ 等價于 {1,}诀拭。
?匹配前面的子表達式零次或一次迁筛。例如,"do(es)?" 可以匹配 "do" 耕挨、 "does" 中的 "does" 细卧、 "doxy" 中的 "do" 。? 等價于 {0,1}筒占。
( )標記一個子表達式的開始和結(jié)束位置贪庙。子表達式可以獲取供以后使用。
.匹配除換行符 \n 之外的任何單字符翰苫。要匹配 . 止邮,請使用 . 。
構(gòu)造正則表達式的方法和創(chuàng)建數(shù)學(xué)表達式的方法一樣奏窑。也就是用多種元字符與運算符可以將小的表達式結(jié)合在一起來創(chuàng)建更大的表達式导披。正則表達式的組件可以是單個的字符、字符集合埃唯、字符范圍撩匕、字符間的選擇或者所有這些組件的任意組合。
正則表達式提取的相關(guān)設(shè)置
說明:
(1)引用名稱:下一個請求要引用的參數(shù)名稱墨叛,如填寫title止毕,則可用${title}引用它模蜡。(2)正則表達式:():括起來的部分就是要提取的。.:匹配任何字符串扁凛。+:一次或多次忍疾。?:不要太貪婪,在找到第一個匹配項后停止谨朝。(3)模板:用$$引用起來膝昆,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等叠必,表示解析到的第幾個值給title荚孵。如:$1$表示解析到的第1個值(4)匹配數(shù)字:0代表隨機取值,1代表全部取值纬朝,通常情況下填0(5)缺省值:如果參數(shù)沒有取得到值收叶,那默認給一個值讓它取。
案例:api接口