JMeter的七種參數(shù)化

一、CSV Data Set Config

以中信銀行的基金搜索接口為例,在線程組鼠標右鍵選擇”添加”->”配置元件”->”CSVDataSetConfig”


  1. 文件名:可以輸入?yún)?shù)文件的絕對路徑或相對路徑,參數(shù)文件可以保存在txt或csv文件里。

  2. 文件編碼:大部分情況下都是UTF-8,如果出現(xiàn)中文亂碼可以嘗試下GBK。

  3. 變量名:接口請求時,引用這個參數(shù)化的變量名稱,多個變量用英文逗號隔開。

  4. 忽略首行:若參數(shù)文件的數(shù)據(jù)量較小,可以設置成FALSE。若較多建議設置成TRUE(實際上就是表頭).

  5. 分隔符:參數(shù)文件里多個參數(shù)之間用分隔符隔開,默認情況下是英文逗號,但是如果你的參數(shù)帶逗號比如第一個參數(shù)是”hello,wego”,第二個參數(shù)是”你好,我們走”,此時若使用默認分隔符,系統(tǒng)會認為有4個參數(shù),第一個是hello第二個是wego,第三個是你好,第四個是我們走;這時要修改CSVDataSetConfig里的分隔符,觀察發(fā)現(xiàn)兩個參數(shù)中都不含”==”,所以我們可以把分隔符改成==,分隔符如何設置全憑個人喜好,只要參數(shù)中沒有這個符號即可。

后面4個不常用,使用默認配置就行了。

輸入CSV Set Config的變量名,并用${}把變量名包在大括號里,第一次請求,key會讀取“股票”,type會讀取“1”,5次全部讀取完后,會循環(huán)讀取,直到所有進程結(jié)束。

可以看到第三次請求調(diào)用的就是第三組的參數(shù)A和3。

二、用戶定義變量

這次我們加一個接口,產(chǎn)品搜索接口,產(chǎn)品搜索界面如下:


用戶定義變量有2個地方可以設置,第一個是測試計劃,第二個是配置元件。首先看一下測試計劃,點擊測試計劃節(jié)點,點擊添加,輸入變量名稱和變量值,接口應用變量的方式和CSV一樣,${key}

圖片.png

第二個配置元件,線程組鼠標右鍵”添加”->”配置元件”->”用戶定義變量”

兩者區(qū)別在于測試計劃中設置的變量,是針對所有線程,所有請求的。而配置元件添加的用戶定義變量,是根據(jù)他的上級節(jié)點決定的。若上級節(jié)點是線程,則只對這個線程起作用,若上級節(jié)點是請求,則只對這個請求起作用,若上級節(jié)點是測試計劃,則對所有線程的所有請求都起作用。比如圖中的配置元件,就只對“Thread Group”這個線程組起作用。

三、計數(shù)器

線程組鼠標右鍵,”添加”->”配置元件”->”計數(shù)器”

Starting value: 開始值

Maximum value: 最大值

Increment: 遞增值,每次增長值,在基金搜索接口中有一個參數(shù)是fundType,代表基金類型,取值范圍是1到5,所以我們這里設置開始值是1,最大值是5,每次遞增1。

Number format: 數(shù)字格式,若不填寫,則會從初始值到最大值之間以自然數(shù)的方式遞增,比如1,2,3,4,5。上面的截圖中,我輸入了00,所以系統(tǒng)會為我補齊到2位,在請求時會是00,01,02,03,04,05。

Exported Variable Name: 引用變量名稱,這里輸入count,在接口請求時,我們輸入${count}。

Track counter independently for each user: 與每用戶獨立的跟蹤計數(shù)器。我們把線程組設置線程數(shù)2,循環(huán)數(shù)2。若這里勾選用戶獨立計數(shù),就是線程1循環(huán)2次,請求發(fā)送時,fundType字段分別請求的是1和2。線程2循環(huán)2次,請求發(fā)送時,fundType字段分別請求的是1和2。若這里不勾選用戶獨立計數(shù),則4次請求,fundType字段分別請求的是1、2、3、4。

Reset counter on each thread Group Iteration: 在每個線程組迭代上重置計數(shù)器。若勾選則4次請求的fundType字段全都是1,這兩個都勾選的時候,一般都是線程組內(nèi)有循環(huán),每次循環(huán)的時候會遞增。否則這樣設置就沒有意義了。

四、請求默認值

線程組鼠標右鍵,”添加”->”配置元件”->”HTTP默認請求”

可以看到有很多種默認請求,中信銀行是一個web系統(tǒng),所以這里測試使用的是http或https請求,這里我就說一下http默認請求值的使用方法,其他默認請求的使用思路基本相同。不做贅述。

實際測試中,會有多個環(huán)境,比如測試環(huán)境,開發(fā)環(huán)境,生產(chǎn)環(huán)境A,生產(chǎn)環(huán)境B等等。為了實現(xiàn)環(huán)境的快速切換,我們不能每次切換環(huán)境,都去把所有的請求地址修改一遍。正確的做法是把所有請求的ip、端口、協(xié)議、編碼都清空,添加一個http默認請求值,在默認請求值里面輸入ip、端口、協(xié)議、編碼。當有多個環(huán)境時,可以配置多個http默認請求值。保留一個為啟用狀態(tài),其余全部禁用。

若多個請求中,有相同的參數(shù),比如截圖中“搜索有關的請求”線程組下的所有請求,都有兩個參數(shù)pageSize和currentPage,這樣的參數(shù)也可以在請求中直接刪除,添加到http默認請求值。

五、Beanshell采樣器或JSR223采樣器

線程組鼠標右鍵,”添加”->”取樣器”->”BeanShell取樣器”,在采樣器內(nèi)輸入vars.put("responseFormat","JSON");如下圖:

括號中第一個引號內(nèi)的字符串是變量名,第二個引號內(nèi)的字符串是變量值,在接口發(fā)送請求時,使用${responseFormat},就可以實現(xiàn)參數(shù)化。

JSR223采樣器功能類似,只是提供了更多的腳本語言可以選擇,如果選擇beanshell那么就等于是beanshell采樣器了,jmeter官方的使用說明中推薦使用groovy語言,理由是性能較好,但是我實際測試過,如果只是執(zhí)行賦值語句,只是把beanshell采樣器當做定義參數(shù)化來使用,beanshell采樣器性能還是略高于JSR223+groovy的。

六、后置處理器json和正則表達式

有時我們需要的參數(shù)是動態(tài)的,這時候就需要把第一個請求的響應結(jié)果提取出來,作為第二個請求的參數(shù)發(fā)送出去,后置處理器可以解決這個問題,常用的有正則表達式提取器,若接口返回的數(shù)據(jù)是json字符串,也可以用json提取器。以中信銀行基金為例,先搜索,然后查看第一個基金的詳情頁。

鼠標右鍵第一個請求,”添加”->”后置處理器”->”正則表達式提取器”。

引用名稱:就是變量名。例如輸入number

正則表達式:使用正則表達式在響應結(jié)果中提取數(shù)據(jù),例如截圖中想要提取的數(shù)據(jù)是"prodNo":"000043"中的000043,那么正則表達式可以寫成"prodNo":"(.*?)",這樣就會把004698賦值給number,后面的請求使用${number}就可以獲取到000043了。

模板:格式為1,2...以此類推,意思是若正則表達式匹配到多個值,則返回第幾個值,1代表第一個。缺省值:若正則表達式?jīng)]有匹配到數(shù)據(jù),則返回缺省值中的數(shù)據(jù)。

第二種是json提取器,鼠標右鍵第一個請求,”添加”->”后置處理器”->”json提取器”。

Namesofcreatedvariables:是變量名,多個用分號隔開。

Jsonpathexpressions:json路徑。根據(jù)請求的響應結(jié)果,輸入json路徑,例如基金搜索接口,使用$.content.resultList[*].prodNo可以匹配到第一頁10條數(shù)據(jù)的基金代碼

MathNo.:若1個路徑提取了多個參數(shù),匹配第x個參數(shù)。上面匹配到了10條數(shù)據(jù),我們?nèi)〉谝粭l就輸入1。

Defaultvalues:缺省值。

七、函數(shù)

舉3個比較典型的例子,其他函數(shù)可在官網(wǎng)的使用說明中,自己查看學習。
第一個,線程內(nèi)傳參,以隨機數(shù)為例:

點擊菜單欄”工具”->”函數(shù)助手”,選擇”Random”,這是一個隨機函數(shù),輸入最小值1,最大值5,變量名R,點擊生成,“{__Random(1,5,R)}”。在整個線程里,第一次使用需要輸入完整的字符串{__Random(1,5,R)},之后使用則可以輸入${R}。作用是隨機生成1到5之間的整數(shù)。

第二個,線程內(nèi)傳參,函數(shù)助手里,選擇setProperty(全局變量),變量名輸入number,值輸入0408,生成${__setProperty(number,0408,)},這樣可以在不同線程之間引用這個變量了,應用方式為${__P(number)},也可以把0408改成動態(tài)獲取,例如結(jié)合上面的json提取器提取到的number,想讓number跨線程傳參就可以寫成${__setProperty(n,${number},)},就是把0408這個靜態(tài)的值寫成動態(tài)的${number},把第一個變量名改成n,保證2個變量不重名,其他線程應用時,寫成${__P(n)}。

第三個,變量名嵌套變量名,V函數(shù)。

例如系統(tǒng)中有三個變量分別是number_1,number_2,number_3,設置一個計數(shù)器count,此時若想應用這3個變量,直接寫{number_{count}},系統(tǒng)是無法識別的。要使用變量名嵌套函數(shù),V函數(shù)。正確寫法是${_V(number${count})}。

八、總結(jié)第1-4種是第一類配置元件,第5種是第二類采樣器,第6種是第三類前置處理器與后置處理器,第7種是第四類函數(shù)。Jmeter參數(shù)化4類中常用的7種方法,各有各的好處。

原文:http://download.51testing.com/wenzhang/51Testing_wenzhang59_1.pdf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372