背景:在一次接口壓測(cè)過(guò)程中叫确,接口的參數(shù)值是通過(guò)java類(lèi)中的方法獲取的跳芳,此方法沒(méi)有封裝成接口,又因參數(shù)值存在有效期(15min)竹勉,所以導(dǎo)致在執(zhí)行壓測(cè)的過(guò)程中需考慮在執(zhí)行的時(shí)長(zhǎng)內(nèi)參數(shù)值是否失效的問(wèn)題飞盆。
在未使用beanshell的時(shí)候(當(dāng)時(shí)不知道如何使用,且時(shí)間緊,沒(méi)時(shí)間研究)吓歇,就先在IntelliJ Idea運(yùn)行Java程序獲取參數(shù)值孽水,然后將參數(shù)值復(fù)制出來(lái)粘貼到j(luò)meter中,然后再執(zhí)行腳本進(jìn)行壓測(cè)城看。暫時(shí)不影響測(cè)試女气,但是操作起來(lái)有點(diǎn)麻煩。
趁著測(cè)試工作結(jié)束析命,正好有時(shí)間研究下jmeter中beanshell的使用主卫,總結(jié)如下:
1、先將java程序打成jar包鹃愤;
打jar包參考:https://www.cnblogs.com/xianz666/p/14101811.html
2簇搅、將1中jar包復(fù)制到j(luò)meter安裝路徑D:\Program Files\apache-jmeter-5.3\lib\ext\下,如果jave程序中有引用到其它jar包(import導(dǎo)入的)软吐,也一并復(fù)制到該目錄下瘩将;
3、啟動(dòng)jmeter凹耙,在測(cè)試計(jì)劃右側(cè)頁(yè)面下方姿现,添加2中復(fù)制的jar包:
4、然后在測(cè)試計(jì)劃下肖抱,創(chuàng)建線程組备典,添加BeanShell取樣器,在取樣器右側(cè)頁(yè)面腳本處意述,編寫(xiě)java腳本:
注:腳本可接收傳參提佣,參數(shù)傳入方式:${參數(shù)名1} ${參數(shù)名2} ...,參數(shù)之間用空格隔開(kāi)荤崇,在腳本中可使用bsh.args[i]獲取參數(shù)值拌屏,i表示參數(shù)在數(shù)組中的索引。參數(shù)的定義术荤,放在用戶(hù)定義的變量中倚喂,在線程組下添加用戶(hù)定義的變量:
5、在線程組下添加HTTP請(qǐng)求瓣戚,在消息體數(shù)據(jù)中傳遞請(qǐng)求參數(shù)(json):
6端圈、在線程組下添加查看結(jié)果數(shù),執(zhí)行HTTP請(qǐng)求子库,查看結(jié)果樹(shù)中請(qǐng)求body中的參數(shù)(成功獲确愕选):
至此,使用BeanShell的方式成功傳參刚照,解決了手動(dòng)獲取參數(shù)的麻煩。