jmeter 參數(shù)化

jmeter參數(shù)化

背景

進(jìn)行接口,性能測試進(jìn)行參數(shù)化是必然要考慮的場景,自從上次使用了jmeter進(jìn)行接口測試后,就已經(jīng)開始思考了jmerer如何進(jìn)行參數(shù)化眼耀,來方便測試,通過查閱相關(guān)資料佩憾,將jmeter參數(shù)化分為兩個部分進(jìn)行講解哮伟。

簡單參數(shù)化

怎么定義簡單呢潭辈,就是直接在jmeter中設(shè)置就可以了,不需要調(diào)用其他的東西(數(shù)據(jù)庫澈吨、CSV)文件。簡單的參數(shù)化設(shè)置主要有以下:

  • 用戶定義變量
  • 隨機(jī)變量
  • 正則表達(dá)式提取器
  • 函數(shù)助手

用戶定義變量

添加用戶定義變量主要有兩個地方:點(diǎn)擊測試計(jì)劃-用戶定義變量寄摆。進(jìn)入某一線程租谅辣,右擊-添加配置元件-用戶定義變量。下面對定義變量的作用域進(jìn)行實(shí)驗(yàn):

  1. 在測試計(jì)劃上添加用戶變量:用戶名與密碼婶恼,在第一個線程組也定義用戶變量桑阶,在第一個線程組的某個請求中定義變量。為了做到區(qū)分勾邦,對每一組變量定義時(shí)蚣录,key與value均不一樣,具體如下眷篇。


    在不同位置用戶自定義變量.png

通過運(yùn)行測試計(jì)劃萎河,發(fā)現(xiàn)所有的請求均斷言成功,說明只要定義的變量是唯一值蕉饼,那這個變量就是全局的虐杯。從實(shí)際情況出發(fā),如果真的是全局的昧港,可以直接定義再測試計(jì)劃中(域名)擎椰,如果是局部使用的可以直接定義再某個線程組,因?yàn)槎x在測試計(jì)劃中创肥,如果一旦停掉該線程組达舒,則里面用戶自定義的變量將不能被引用。當(dāng)時(shí)還想到一個問題:如果是定義的變量重名叹侄,引用的規(guī)則是什么樣的巩搏,將線程組2中的用戶變量定義與線程組1中請求定義的一致(想當(dāng)然的以為走最近原則還是會調(diào)用同一個線程組的變量),實(shí)際上調(diào)用的是第二個線程組的變量圈膏。其實(shí)就一個原則:不要定義兩個變量名一致的變量塔猾。

隨機(jī)變量

隨機(jī)變量有兩種方式:用戶直接定義,其實(shí)就是用戶定義變量稽坤,只是值不固定丈甸,還有就是借用函數(shù)助手來生成隨機(jī)變量。

用戶定義隨機(jī)變量

用戶定義隨機(jī)變量尿褪,參考用戶定義變量睦擂,可以在測試計(jì)劃、線程組杖玲、sample中定義顿仇。關(guān)于作用域與用戶定義變量一致。在線程組中自定義一個變量如下:


用戶定義的隨機(jī)變量.png

為了查看獲取的電話號碼是否為隨機(jī)數(shù),將線程的循環(huán)次數(shù)定為6臼闻,校驗(yàn)每次發(fā)出請求的參數(shù)是否為隨機(jī)產(chǎn)生的鸿吆。


電話號碼隨機(jī)獲取.png

經(jīng)查看我們的隨機(jī)每次請求中攜帶的參數(shù)是不一樣的述呐,所以簡單的隨機(jī)變量這樣設(shè)置就可以了惩淳。但是我們的隨機(jī)數(shù)的設(shè)置還有一個兩個設(shè)置需要說明下:
  • Seed for Random function 隨機(jī)數(shù)產(chǎn)生器的種子,默認(rèn)為當(dāng)前時(shí)間(以毫秒為單位)
    
  • Per Thread(User) 如果為False乓搬,則隨機(jī)數(shù)產(chǎn)生器在線程組的所欲線程共享思犁,為True,則每個線程都有自己的隨機(jī)數(shù)產(chǎn)生器
通過函數(shù)助手生成隨機(jī)變量

函數(shù)助手的中對應(yīng)的函數(shù)非常大,如果有需要可以查閱官方文檔查看官方文檔說明进肯,這里只是要用隨機(jī)函數(shù)來生成隨機(jī)變量激蹲,所以對隨機(jī)函數(shù)進(jìn)行說明。

  1. 添加隨機(jī)函數(shù):點(diǎn)擊選項(xiàng)函數(shù)助手下拉框中選擇__Random函數(shù)

  2. 添加對應(yīng)的的參數(shù)江掩,最大值学辱,最小值,變量名


    隨機(jī)函數(shù)助手配置.png
  3. 點(diǎn)擊生成會產(chǎn)生對應(yīng)的函數(shù)字符串频敛,請求中直接進(jìn)行引用项郊。見下圖


    引用函數(shù)助手生成的變量.png
  4. 運(yùn)行一下請求,查看結(jié)果斟赚,確實(shí)是正常獲取了隨機(jī)變量着降。見下圖


    運(yùn)行結(jié)果.png

正則表達(dá)式提取器

正則表達(dá)式提取器主要用在jmeter關(guān)聯(lián)中。關(guān)聯(lián)是請求與請求之間擁有數(shù)據(jù)關(guān)聯(lián)拗军∪味矗可以是同一個線程組關(guān)聯(lián),也可以是跨線程組關(guān)聯(lián)发侵。因?yàn)樵谑褂眠^程中發(fā)現(xiàn)正則表達(dá)式會不正確交掏,這里提供一個正則表達(dá)式在線校驗(yàn)地址正則表達(dá)語法校驗(yàn)

線程組內(nèi)正則表達(dá)是提取使用

通過獲取優(yōu)惠券列表后,直接從返回結(jié)果進(jìn)行優(yōu)惠券詳情查詢刃鳄。
整體的構(gòu)造如圖盅弛,有些不用的我直接禁用掉。


線程組內(nèi)正則表達(dá)式提取.png
  • 查詢優(yōu)惠券正常發(fā)出請求叔锐,對返回結(jié)果進(jìn)行提取


    正常獲取提取變量優(yōu)惠券ID.png
正在表達(dá)式提取useid.png

備注:對于正則表達(dá)式的配置說明挪鹏,網(wǎng)上相應(yīng)的說明比較多,可自行查閱相關(guān)資料愉烙,這里不進(jìn)行闡述讨盒。

  • 進(jìn)行查看優(yōu)惠券請求,其中接口相關(guān)參數(shù)參考優(yōu)惠券列表接口返回結(jié)果步责,如下


    查詢優(yōu)惠券引用正則表達(dá)式提取變量.png
  • 看看是否正確獲取了相關(guān)參數(shù)


    正常獲取提取變量.png

以上就是同一個線程組內(nèi)的正則提取返顺。

跨線程正則提取

依然是用優(yōu)惠券的例子禀苦,只是這次查詢優(yōu)惠券的接口與獲取優(yōu)惠券列表不在一個線程組內(nèi)。主要思路是:將在線程中的變量遂鹊,設(shè)置為屬性振乏,這樣就可以為全局使用。但是前提是第一個線程組要先執(zhí)行秉扑,否則變量獲取不到昆码。所以在測試計(jì)劃中勾選獨(dú)立運(yùn)行每個線程組。

  1. 測試在獲取到優(yōu)惠券的請求中添加BeanShell PostProcessor 邻储,將通過正則提取獲得的變量設(shè)置為JmeterProperties。具體操作如下


    變量設(shè)置為jmeter屬性.png
  2. 可以通過在工作臺中添加非測試元件——Property Display中查看是否設(shè)置JmeterProperties 成功


    校驗(yàn)是否設(shè)置jmeter屬性成功.png
  3. 新建一個線程組并添加同樣的查詢用戶券旧噪,直接引用jmeter屬性吨娜,具體如下


    傳入提取的jmeter變量.png

4.查看請求結(jié)果可以看到變量引用正常


jmeter屬性獲取正常.png

這樣就實(shí)現(xiàn)了跨線程的變量引用。

函數(shù)助手

函數(shù)助手提供了很豐富的函數(shù)功能淘钟,在獲取隨機(jī)變量已經(jīng)使用了隨機(jī)變量的函數(shù)宦赠,在跨線程組的時(shí)候使用了${__P(coupon,null)},其實(shí)可以用函數(shù)助手米母,找到函數(shù)助手中的-p函數(shù)就行勾扭。因?yàn)楹瘮?shù)助手中的函數(shù)偏多,這里不做詳述铁瞒,可以到官網(wǎng)查看函數(shù)助手妙色。查看之后,自行判斷是否可以使用慧耍。

復(fù)雜一點(diǎn)參數(shù)化

定義復(fù)雜身辨,其實(shí)就是需要用到外部資源,比如外部文件芍碧,比如數(shù)據(jù)庫煌珊。

  • 讀取參數(shù)文件
  • 讀取數(shù)據(jù)庫

讀取文件

jmeter即可以讀取多種文件,這里只CSV文件進(jìn)行讀取說明泌豆,個人覺得這種用的比較多定庵。讀取CSV文件有兩種方式,一種通過配置CSV Data Set Config 進(jìn)行讀取踪危,還有一種是通過函數(shù)助手進(jìn)行讀取蔬浙。

CSV Data Set Config方式

這里我們模擬的是不同帳號登錄場景,用戶名陨倡,密碼均是讀取CSV敛滋。

  • 準(zhǔn)備測試數(shù)據(jù)
    建立一份csv數(shù)據(jù),用戶名為第一列,密碼為第二列粮彤。如圖
csv文件.png
  • 添加CSV Data Set Config
    測試計(jì)劃-右擊添加配置元件-選擇CSV Data Set Config進(jìn)行配置,配置項(xiàng)的說明可以自行在網(wǎng)上查閱诈火。


    CSV set config配置.png

線程組的循環(huán)測試配置的8庶艾,config配置Recycle on EOF 為true袁余,這樣可以循環(huán)讀取,否則讀到最后一行就停止了咱揍。

  • 請求配置獲取數(shù)據(jù)颖榜,變量名取的是CSV Data Set Config中的variabld Names


    請求配置.png
  • 運(yùn)行,查看是否請求中讀取了csv中的數(shù)據(jù)煤裙。


    正確讀取csv .png
函數(shù)助手讀取
  • 通過函數(shù)助手中的csvRead函數(shù)讀取掩完。首頁也是準(zhǔn)備數(shù)據(jù),這里就用上面準(zhǔn)備的這份數(shù)據(jù)硼砰。選項(xiàng)函數(shù)助手_csvRead函數(shù)且蓬,按如下配置

    csvread配置.png

  • 進(jìn)行請求配置,見下圖


    請求配置csvread.png
  • 查看請求參數(shù)题翰,是否正確獲取了文件內(nèi)容


    csvread請求校驗(yàn).png

以上就是讀取csv文件的方法.必須說明的是如果線程組中配置的是線程數(shù)大于1則從第一行讀取恶阴,如果大于配置文件的行數(shù),則循環(huán)讀取數(shù)據(jù)豹障。如果線程數(shù)配置為1則只會讀取第一行數(shù)據(jù)冯事。

讀數(shù)據(jù)庫

csv讀取是自己準(zhǔn)備一些測試數(shù)據(jù),很多情況下我們需要校驗(yàn)落庫或是直接從數(shù)據(jù)庫中讀取數(shù)據(jù)來作為請求參數(shù)血公。設(shè)想場景是查詢數(shù)據(jù)庫昵仅,然后循環(huán)讀取查詢結(jié)果作為下一個請求的參數(shù)。下面就這個場景進(jìn)行實(shí)踐累魔。

  • 在測試計(jì)劃中添加數(shù)據(jù)庫配置信息岩饼。測試計(jì)劃_添加配置元件_JDBC Connection Configuration


    數(shù)據(jù)庫配置.png

各個配置項(xiàng)信息在網(wǎng)上又相關(guān)資料,這里配置參數(shù)說明

  • 添加數(shù)據(jù)庫請求
數(shù)據(jù)庫請求配置.png

這里對返回的數(shù)據(jù)設(shè)置了兩個變量article_id,id 兩個變量薛夜。如果需要時(shí)引用籍茧,${article_id_1}是artilce_id 第一行,${article_id_1}取第二行梯澜,總數(shù)可以用${article_id_#}來獲取寞冯。id同樣也是如此。

  • 因?yàn)槭切枰@取循環(huán)讀取晚伙,所以我們可以添加一個循環(huán)控制器
循環(huán)控制.png

循環(huán)次數(shù)直接用${article_id_#}吮龄。

  • 因?yàn)槭侵鹦凶x取,所以可以添加個計(jì)數(shù)器來實(shí)現(xiàn)
計(jì)數(shù)器.png
  • article_id 需要拼接計(jì)數(shù)器來生成一個變量咆疗,所以需要用的函數(shù)助手中的--V函數(shù)漓帚。配置如下:


    --v函數(shù)生成變量.png
  • 所有準(zhǔn)備工作都做好了,現(xiàn)在就準(zhǔn)備添加一個請求來讀取數(shù)據(jù)午磁,配置如下


    引用數(shù)據(jù)庫查詢結(jié)果作為參數(shù).png
  • 校驗(yàn)請求是否正常獲取參數(shù)


    校驗(yàn)結(jié)果.png
  • 備注

配置好后進(jìn)行鏈接發(fā)出請求尝抖,提示cannot load JDBC Driver class "com.mysal.jdbc.Driver"毡们,解決方法

jmeter的參數(shù)化就這樣告一段了,下次考慮進(jìn)行簡單壓測腳本編寫昧辽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衙熔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搅荞,更是在濱河造成了極大的恐慌红氯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咕痛,死亡現(xiàn)場離奇詭異痢甘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)茉贡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門产阱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人块仆,你說我怎么就攤上這事⊥醢担” “怎么了悔据?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俗壹。 經(jīng)常有香客問我科汗,道長,這世上最難降的妖魔是什么绷雏? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任头滔,我火速辦了婚禮,結(jié)果婚禮上涎显,老公的妹妹穿的比我還像新娘坤检。我一直安慰自己,他們只是感情好期吓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布早歇。 她就那樣靜靜地躺著,像睡著了一般讨勤。 火紅的嫁衣襯著肌膚如雪箭跳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天潭千,我揣著相機(jī)與錄音谱姓,去河邊找鬼。 笑死刨晴,一個胖子當(dāng)著我的面吹牛屉来,可吹牛的內(nèi)容都是我干的路翻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼奶躯,長吁一口氣:“原來是場噩夢啊……” “哼帚桩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘹黔,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤账嚎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后儡蔓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郭蕉,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年喂江,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了召锈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡获询,死狀恐怖涨岁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吉嚣,我是刑警寧澤梢薪,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站尝哆,受9級特大地震影響秉撇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秋泄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一琐馆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧恒序,春花似錦瘦麸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至与帆,卻和暖如春了赌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玄糟。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工勿她, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阵翎。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓逢并,卻偏偏與公主長得像之剧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子砍聊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 用Jmeter測試時(shí)包含兩種情況的參數(shù):一種是在url中背稼,一種是請求中需要發(fā)送的參數(shù)。 URL中的參數(shù)玻蝌,如:htt...
    小矮人Ethan閱讀 1,258評論 0 4
  • 參數(shù)化:錄制腳本中有登錄操作蟹肘,需要輸入用戶名和密碼,假如系統(tǒng)不允許相同的用戶名和密碼同時(shí)登錄俯树,或者想更好的模擬多個...
    菜鳥平閱讀 226評論 0 0
  • 文/amy 前面 【JMeter】參數(shù)化方法(一)已簡單介紹關(guān)于參數(shù)化的幾種常用方法, 關(guān)于如下配置以上幾種參數(shù)方...
  • 注:以下圖片素材皆來自于網(wǎng)絡(luò)帘腹。 由于最近工作量變大,為了保障原創(chuàng)文稿的質(zhì)量以及避免英年早逝的悲劇许饿,老王決定從今日起...
    娛樂圈老王閱讀 148評論 0 0
  • 清晨的云霧像滾動的嬰孩阳欲,包裹著我。我就站在那里陋率,定定的看著她離開球化。 很長時(shí)間以后我仍會想起那雙豆大的眼睛,那...
    空哈瑪尼卡閱讀 472評論 0 0