JMeter BeanShell 應用 .

場景1:業務單據參數化時要生成一組(多個時間,好比訂單日期,發貨日期等)將來的時間,運用JMeter提供的時間函數並不能較好的完成java

 

場景2:測試Java接口,確又不想繼承AbstractJavaSamplerClient 來完成,此時能夠用BeanShell Sampler來完成函數

 

場景3:線程共享變量,咱們但願線程之間共享一個變量,能夠利用BeanShell來完成性能

 

其它功能本身類推......測試

 

場景1:生成訂單日期與發貨日期,而後放入變量spa

場景1:業務單據參數化時要生成一組(多個時間,好比訂單日期,發貨日期等)將來的時間,運用JMeter提供的時間函數並不能較好的完成線程

 

場景2:測試Java接口,確又不想繼承AbstractJavaSamplerClient 來完成,此時能夠用BeanShell Sampler來完成調試

 

場景3:線程共享變量,咱們但願線程之間共享一個變量,能夠利用BeanShell來完成orm

 

其它功能本身類推......blog

 

場景1:生成訂單日期與發貨日期,而後放入變量繼承

 

代碼方便複製粘貼:

[java] view plaincopyprint?

  1. import java.text.SimpleDateFormat;

  2. import java.util.Calendar;

  3. import java.util.Date;

  4.  

  5. Date date = new Date();

  6. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

  7. String nowDate = sf.format(date);

  8. Calendar cal = Calendar.getInstance();

  9. cal.setTime(sf.parse(nowDate));

  10. cal.add(Calendar.DAY_OF_YEAR, +3);

  11. String chanceDate = sf.format(cal.getTime());

  12. cal.add(Calendar.DAY_OF_YEAR, +7);

  13. String planFinishDate = sf.format(cal.getTime());

  14. vars.put("orderDate",chanceDate);

  15. 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(【屬性名稱】,,)}來獲取。

上圖中加入一個test屬性,下圖用 ${__property(test,,)}引用。

 

結束!

轉載至:http://mp.weixin.qq.com/s?__biz=MjM5Mjg0MzMzMw==&mid=212500831&idx=2&sn=e63797a433ff18aef548184c3f210432&scene=0#rd

相關文章
相關標籤/搜索