1. 程式人生 > >Jmeter-----隨機生成手機號後8位並去重,來進行註冊手機號的壓測

Jmeter-----隨機生成手機號後8位並去重,來進行註冊手機號的壓測

2種 技術分享 16px 打印 http style 方法 sam phone

  要求:對註冊接口進行100000次壓測,手機號已126開頭,後面的8位數不限

  前言:在進行測試中,我們需要對註冊接口進行壓測100000次,那麽就要求手機號碼每次填寫的不一致,否則手機號使用一次後會出現該手機號碼已註冊的情況,為了避免這種情況的發生,我們對手機號碼的填寫通常有2種方式,1、使用random函數隨機生成,2、手動在excel表中寫100個號碼,通過添加配置元件CSV data set config來獲取。顯然我們會選擇第一種實現方式較為方便。以下我們來看如何實現。

第一種方法:

  直接使用函數助手,利用__random函數來生成8位數。可能存在的問題:生成的數可能會出現重復

  技術分享圖片

  

第二種方法:

  采用時間戳+隨機數的方法來避免重復,並且生成不重復的8位數

  1、添加采樣器 BeanShell Sampler,並在中填寫對應的操作,重點部分

  

//為了避免手機號後8位出現重復,因此采用時間戳+隨機數
phone=${__time(/100000,)} + ${__Random(1,100000,)};

String a = String.valueOf(phone);   //將phone轉為字符串,因為手機號的要求類型為char

vars.put("phone",a);      //將字符串a設置為變量

vars.get("phone");      //在debug sample中查看phone的取值
log.info("8888888888888哈哈哈:"+a); //在logview中打印查看取值

  技術分享圖片

  這裏,前半是取一個10位的時間戳,後面是取1個[1,100000]的隨機數字,可重復,這個隨機範圍越大,最後生成的隨機數越不容易重復,當大並發時,隨機數取的很快,所以還是有極低可能重復的。因此在許可範圍內,盡量拉大隨機數範圍。
  ${__time(,)}則是去當前毫秒時間,13位的數字,也可以用來取更精確的時間戳

  2、將設置的變量添加到請求中

  技術分享圖片

  3、添加“查看結果樹”來查看運行結果,和添加“Bebug Sampler”來查看phone的取值

  技術分享圖片

  技術分享圖片

  

Jmeter-----隨機生成手機號後8位並去重,來進行註冊手機號的壓測