1. 程式人生 > >JMeter實現唯一引數生成不重複時間戳

JMeter實現唯一引數生成不重複時間戳

現象:

使用jmeter做介面壓測時,總會遇到壓測時,提示不允許重複id或提示訂單不允許重複現象,那麼如何解決呢?

原料工具

  • jmeter4.0
  • 本地準備好介面服務

思路:

  • 單個介面,小批量介面,一般以時間戳或者是日期格式的資料作為介面測試引數,解決引數化問題;
  • 大批量介面壓測時,這上面的時間戳方式是不行的,秒級請求或者毫秒級別的請求不能滿足大批量介面壓測需求,這時候需要用比毫秒小的單位納秒再做字串拼接

時間戳函式操作:

1、通過函式助手,生成一個_time 函式:

 

2、如果引數為時間戳,那公式為:

${__time(,)}  :  預設該公式精確到毫秒級別, 13位數

${__time(/1000,)}  : 該公式精確到秒級別, 10位數

 

3、 如果引數需要為當前日期,那公式為:

${__time(yyyy-MM-dd,)}

${__time(YMDHMS,)}

例項demo演示:

1、使用jmeter建立一個為 時間戳重複請求demo” http請求,並新增檢視結果樹

採用時間戳(日期格式化)形式組成唯一引數形式:${__time(yyyyMMddHHmmssSS,)}

 

2、使用jmeter建立一個為 “時間戳不重複請求demo”  http請求,並新增檢視結果樹

 採用時間戳(日期格式化+納秒函式)

新增前置處理器-->bean shell Preprocessor

 

beanshell部分:

long timeStamp = System.nanoTime();
vars.put("timeStamp",timeStamp+"");
log.info("---------------------------------------"+vars.get("timeStamp"));

3、執行結果:

第一個http請求(時間戳重複請求demo)結果:

顯然都是一樣的如下圖:

第二個http請求(時間戳不重複請求demo)結果:

 

本次練習jmeter工程下載連結:

https://download.csdn.net/download/wangqiang_cyou/10814770 

 

部分參考文章:https://www.cnblogs.com/kaibindirver/p/8964295.html