Jmeter常用元件介紹及其Beanshell的使用


一. Jmeter做接口測(cè)試的常用元件介紹

測(cè)試計(jì)劃:測(cè)試計(jì)劃是Jmeter測(cè)試的起點(diǎn),是其他Jmeter測(cè)試元件的容器。包含一個(gè)功能模塊測(cè)試的所有內(nèi)容蝙茶,包含所有的控件,屬性诸老,變量隆夯。所以,一個(gè).Jmx文件中只有一個(gè)測(cè)試計(jì)劃别伏。測(cè)試計(jì)劃中可以定義變量蹄衷,引入jar包等。

線程組:線程組可以理解為一個(gè)虛擬用戶組厘肮,線程間變量相互獨(dú)立宦芦,一個(gè)測(cè)試計(jì)劃內(nèi)可以包含多個(gè)線程組;線程屬性有:線程數(shù)量轴脐,線程啟動(dòng)間隔時(shí)間(0位立刻啟動(dòng)所有線程)调卑,單線程循環(huán)次數(shù),線程執(zhí)行順序大咱,是否使用調(diào)度器恬涧。

Sampler取樣器:模擬請(qǐng)求,如HTTP碴巾,F(xiàn)TP請(qǐng)求等溯捆。在Jmeter中承擔(dān)測(cè)試任務(wù)。

監(jiān)聽器:對(duì)取樣器請(qǐng)求的結(jié)果進(jìn)行顯示厦瓢,統(tǒng)計(jì)數(shù)據(jù)(接口請(qǐng)求的錯(cuò)誤率提揍,常用的性能指標(biāo)如吞吐量等)負(fù)責(zé)收集和顯示測(cè)試結(jié)果。

斷言:一種驗(yàn)證響應(yīng)結(jié)果是否和期望相符的方法煮仇。

邏輯控制器:控制發(fā)送請(qǐng)求時(shí)的邏輯行為劳跃,常與Sampler取樣器結(jié)合模擬請(qǐng)求,如if控制器

前置處理器:在發(fā)送請(qǐng)求之前需要完成的工作浙垫。常常被用來(lái)修改請(qǐng)求的相關(guān)設(shè)置刨仑。如:URL重寫修飾符,

后置處理器:在發(fā)送請(qǐng)求之后需要完成的工作郑诺。常常被用來(lái)處理響應(yīng)結(jié)果。如:正則表達(dá)式處理器,Bean Shell PostProcessor,

配置元件:用來(lái)初始化默認(rèn)值和變量杉武,以便后續(xù)采樣器使用辙诞。將在其作用域的初始化階段處理,Jmeter常用的配置元件包括:HTTP Cookie管理器轻抱,HTTP Cache Manager飞涂,HTTP信息頭管理器,CSV數(shù)據(jù)文件設(shè)置祈搜,用戶自定義變量等较店。

二、部分舉例

我們以抽獎(jiǎng)活動(dòng)為例夭问,顯示抽獎(jiǎng)10次時(shí)泽西,每次抽中的具體獎(jiǎng)品以及該獎(jiǎng)品出現(xiàn)的概率,假設(shè)有三種獎(jiǎng)品

2.1缰趋、測(cè)試過(guò)程

添加測(cè)試計(jì)劃:抽獎(jiǎng)活動(dòng)捧杉;

添加Sampler:用戶登錄(login接口),并在請(qǐng)求上插入上級(jí)僅一次邏輯控制器秘血,控制同一用戶僅登錄一次味抖;

添加HTTP Cookie管理器:用來(lái)獲取用戶登錄的token;

添加HTTP Cache Manager灰粮;

添加HTTP信息頭管理器:添加HTTP請(qǐng)求頭參數(shù)仔涩;

HTTP URL重寫修飾符;

添加Sampler:抽獎(jiǎng)粘舟,該接口可用于獲取用戶所抽到的獎(jiǎng)品信息熔脂;

對(duì)抽獎(jiǎng)接口,添加后置管理器-正則表達(dá)式提取器:用于獲取響應(yīng)結(jié)果中prizeName的值柑肴;(正則表達(dá)式的匹配規(guī)則可自行學(xué)習(xí))

如:

提取接口中的獎(jiǎng)品信息

對(duì)抽獎(jiǎng)接口霞揉,添加后置處理器-Bean Shell PostProcessor:用來(lái)處理抽獎(jiǎng)接口的返回?cái)?shù)據(jù),得到抽獎(jiǎng)總次數(shù)晰骑,每次所抽獎(jiǎng)品和抽到某種獎(jiǎng)品的次數(shù)适秩。值得注意的是,如果直接在beanshell腳本里定義變量硕舆,則每次請(qǐng)求接口變量都會(huì)被重新初始化秽荞,所以,我們需要針對(duì)抽獎(jiǎng)接口添加配置元件-用戶自定義變量抚官,以此保存每次抽獎(jiǎng)的結(jié)果和次數(shù)扬跋。具體方法為:

添加用戶自定義變量路徑



添加用戶自定義變量


除此之外,用戶自定義變量中的value參數(shù)為String類型耗式,如果想對(duì)此變量進(jìn)行數(shù)值運(yùn)算胁住,需要將其轉(zhuǎn)化為int類型趁猴,存儲(chǔ)運(yùn)算后的值時(shí)再將其轉(zhuǎn)化為String類型刊咳。

附上BeanShell腳本彪见,

{

? ? ? String prizeName = vars.get("prizeName");

//抽中獎(jiǎng)品一的次數(shù)

int c1 = Integer.parseInt(vars.get("count1"));

//抽中獎(jiǎng)品二次數(shù)

int c2 = Integer.parseInt(vars.get("count2"));

//抽獎(jiǎng)總次數(shù)

int summ= Integer.parseInt(vars.get("sum"));

summ = summ+1;

vars.put("sum",summ.toString());

System.out.print("第"+summ+"次抽獎(jiǎng):");

//c1 = c1+1;

if(prizeName.startsWith("獎(jiǎng)品一")){

//System.out.println(vars.get("prizeName"));

c1 = c1+1;

? ? ? ? ? vars.put("count1",c1.toString());

// System.out.println("獎(jiǎng)品一:"+c1+"次");

}else if(prizeName.startsWith("獎(jiǎng)品二")){

//獎(jiǎng)品二

c2 = c2+1;

? ? ? ? ? vars.put("count2",c2.toString());

//System.out.println("抽中獎(jiǎng)品二的次數(shù)為:"+c2+"次");

}else{

? ? ? ? ? ? ? ? ? ? ? //System.out.println(vars.get("prizeName"));

}

System.out.println(vars.get("prizeName"));

if(summ == 10){

? ? ? System.out.println("-------------------------------------------");

System.out.println("抽獎(jiǎng)總次數(shù)為:"+summ);

System.out.println("抽中獎(jiǎng)品一次數(shù)為:"+c1+"次");

System.out.println("抽中獎(jiǎng)品二次數(shù)為:"+c2+"次");

}

System.out.println("-------------------------------------------");

}

其中,count1娱挨,count2余指,sum為添加的用戶自定義變量,用于保存每次請(qǐng)求變量的結(jié)果跷坝。(添加-配置原件-用戶自定義變量)

設(shè)置線程組數(shù)為1酵镜,循環(huán)次數(shù)為10,及單用戶登錄柴钻,抽獎(jiǎng)十次的結(jié)果淮韭,顯示如圖:


2.2兩個(gè)接口之間有邏輯關(guān)系

概述:測(cè)試修改密碼接口,但需要先校驗(yàn)驗(yàn)證碼正確(校驗(yàn)驗(yàn)證碼接口)贴届。

測(cè)試過(guò)程:

1. 校驗(yàn)驗(yàn)證碼接口加后置正則表達(dá)式提取器靠粪,提取該接口返回結(jié)果(成功),我提取的是返回的msg的成功信息


修改密碼可提取返回信息



正則表達(dá)式提取信息

在修改密碼接口上添加邏輯控制器(if控制器)毫蚓,寫入if控制條件占键,顯示如圖:


結(jié)果展示


結(jié)果:驗(yàn)證碼通過(guò)后才會(huì)請(qǐng)求修改密碼接口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市元潘,隨后出現(xiàn)的幾起案子畔乙,更是在濱河造成了極大的恐慌,老刑警劉巖翩概,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牲距,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡钥庇,警方通過(guò)查閱死者的電腦和手機(jī)牍鞠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)上沐,“玉大人皮服,你說(shuō)我怎么就攤上這事〔瘟” “怎么了龄广?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蕴侧。 經(jīng)常有香客問(wèn)我择同,道長(zhǎng),這世上最難降的妖魔是什么净宵? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任敲才,我火速辦了婚禮坦辟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纯丸。我一直安慰自己玉组,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布阻星。 她就那樣靜靜地躺著朋鞍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妥箕。 梳的紋絲不亂的頭發(fā)上滥酥,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音畦幢,去河邊找鬼坎吻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宇葱,可吹牛的內(nèi)容都是我干的瘦真。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼贝搁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吗氏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起雷逆,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弦讽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后膀哲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體往产,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年某宪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仿村。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兴喂,死狀恐怖蔼囊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衣迷,我是刑警寧澤畏鼓,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站壶谒,受9級(jí)特大地震影響云矫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汗菜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一让禀、第九天 我趴在偏房一處隱蔽的房頂上張望挑社。 院中可真熱鬧,春花似錦巡揍、人聲如沸痛阻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)录平。三九已至麻车,卻和暖如春缀皱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背动猬。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工啤斗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赁咙。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓钮莲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親彼水。 傳聞我的和親對(duì)象是個(gè)殘疾皇子崔拥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359