一、什么是Bean Shell
- BeanShell是一種完全符合Java語法規范的腳本語言,並且又擁有自己的一些語法和方法;
- BeanShell是一種松散類型的腳本語言(這點和JS類似);
- BeanShell是用Java寫成的,一個小型的、免費的、可以下載的、嵌入式的Java源代碼解釋器,具有對象腳本語言特性,非常精簡的解釋器jar文件大小為175k。
- BeanShell執行標准Java語句和表達式,另外包括一些腳本命令和語法。
二、Jmeter有哪些Bean Shell
-
定時器: BeanShell Timer
-
前置處理器:BeanShell PreProcessor
-
采樣器: BeanShell Sampler
-
后置處理器:BeanShell PostProcessor
-
斷言: BeanShell斷言
-
監聽器: BeanShell Listener
三、BeanShell的用法
通過實例講解BeanShell的用法
使用場景:手機號注冊,登錄,綁卡業務
實現隨機生成不重復的手機號的兩種方式:
1.注冊接口參數:
merchant_id=00000001&bizcode=uums_user_register&mobile=13${__Random(000000000,999999999,Phone)}&password=888888
此種方式,是通過JMeter自帶的Random函數,生成某個范圍內的隨機數,然后后面的登錄業務,直接引用13${Phone}即可
登錄接口:
merchant_id=00000001&bizcode=uums_login&login_type=104&login_account=13${Phone}&password=888888
方式2:
通過BeanShell實現:
String time = "${__time(,)}"; int [] arr = {13,15,18,17}; int index=(int)(Math.random()*arr.length);//產生0-(arr.length-1)的整數值,也是數組的索引 int rand = arr[index]; String time =time.substring(6,13); vars.put("Phone",rand+""+${__Random(0,9,RandNo1)}+""+time+""+${__Random(0,9,RandNo2)}); //如果在測試過程中,存在重復,也可以構造其他隨機數 //1476063656393 //6063697317 //063754461
注意:BeanShell放置注冊采樣器的下面和放在測試用例下的區別:
每次都會執行BeanShell Sampler一次
放在注冊采樣器下:每次只執行一次:
