現象:
使用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