【干货】JMeter BeanShell 应用
視頻匯總首頁:http://edu.51cto.com/lecturer/index/user_id-4626073.html
不廢話直接上場景
場景1:業務單據參數化時要生成一組(多個時間,比如訂單日期,發貨日期等)未來的時間,運用JMeter提供的時間函數并不能較好的完成
場景2:測試Java接口,確又不想繼承AbstractJavaSamplerClient 來完成,此時可以用BeanShell Sampler來完成
場景3:線程共享變量,我們希望線程之間共享一個變量,可以利用BeanShell來完成
其它功能自己類推......
場景1:生成訂單日期與發貨日期,然后放入變量
代碼方便復制粘貼:
[java] view plaincopyprint?
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String nowDate = sf.format(date);
Calendar cal = Calendar.getInstance();
cal.setTime(sf.parse(nowDate));
cal.add(Calendar.DAY_OF_YEAR, +3);
String chanceDate = sf.format(cal.getTime());
cal.add(Calendar.DAY_OF_YEAR, +7);
String planFinishDate = sf.format(cal.getTime());
vars.put("orderDate",chanceDate);
vars.put("delivery",planFinishDate);
這里的 orderDate delivery 在Vars中,在JMeter中是以Map的形式存放的,我們只需要${變量名}來引用,變量能夠保證數據一致性(簡單說就是線程互不干擾)。走起,調用試試:
1.Java請求調用
2.結果樹中察看
如果這兩個時間(orderDate,delivery)在測試過程中只需要生成一次,可以把BeanShell Sampler 放在僅一次控制器下,這樣性能更加。
場景2:
下面BeanUtil是一個接口程序,已經打包BeanShell.jar,現在測試其中的getUserName與getAddress方法
直接用BeanShell Sampler到調用接口方法:
上圖中,我們簡單的調用了getUserName()與getAddress()方法
log.error是在控制臺輸出結果(僅僅調試的時候用,正式測試時去除掉)。
vars.put()是把取得的結果放到變量,供下一個Sampler調用()。
當然有個最得要的部分別忘記了,接口包BeanShell.jar要放到%JMETER_HOME%\lib目錄(建議),當然你也可以在測試計劃中加入(不建議)
如下圖:
如果 BeanShell.jar(你的包名可以任意取名)依賴別的包,那么它所依賴的包也要一道放到%JMETER_HOME%\lib目錄。
場景3
線程共享變量
?JMeter中線程間共享變量可以通過定義屬性值來完成,JMeter啟動時會讀取一些屬性文件,比如jmeter.properties、user.properties,這些屬性
值是可以增加的,也可以修改的,通過BeanShell可以對其進行更改。
?以BeanShell Sampler為例,在其中通過props.put()來增加屬性,props.get()來獲取屬性。
?在其它Sampler中,比如Java Sampler中通過 ${__property(【屬性名稱】,,)}來獲取。
?
??
各類視頻匯總地址:http://xqtesting.blog.51cto.com/4626073/1669386
QQ群掃下方二維碼
?
總結
以上是生活随笔為你收集整理的【干货】JMeter BeanShell 应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5 LocalStorage 本
- 下一篇: Android Notification