Jmeter生成8位不重複的隨機數

2021-08-28 11:05:30 字數 1832 閱讀 2002

$  :  預設該公式精確到毫秒級別, 13位數

$  : 該公式精確到秒級別, 10位數

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

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

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

第一種方法:直接引用函式,採用函式時間戳+函式隨機數的方法,如下

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

jmeter自帶的函式__random()是會重複的,為了避免此情況,採用時間戳+隨機數的方法,如下:

這裡,前半是取乙個10位的時間戳,後面是取1個[1,100000]的隨機數字,可重複,這個隨機範圍越大,最後生成的隨機數越不容易重複,當大併發時,隨機數取的很快,所以還是有極低可能重複的。因此在許可範圍內,盡量拉大隨機數範圍。 

$則是去當前毫秒時間,13位的數字,也可以用來取更精確的時間戳

第二種方法:beanshell 裡面,採用時間戳+隨機數的方法來避免重複,並且生成不重複的8位數

1、新增取樣器 beanshell sampler,並在中填寫對應的操作,重點部分

//為了避免手機號後8位出現重複,因此採用時間戳+隨機數

phone=$ + $;

string a = string.valueof(phone); //將phone轉為字串,因為手機號的要求型別為char

vars.put("phone",a); //將字串a設定為變數

vars.get("phone"); //在debug sample中檢視phone的取值

log.info("8888888888888哈哈哈:"+a); //在logview中列印檢視取值

或者這樣

long s = $;

long y = $;

long z = s+y;

vars.put("***_id",z.tostring()); //型別轉換成string

這裡,前半是取乙個10位的時間戳,後面是取1個[1,100000]的隨機數字,可重複,這個隨機範圍越大,最後生成的隨機數越不容易重複,當大併發時,隨機數取的很快,所以還是有極低可能重複的。因此在許可範圍內,盡量拉大隨機數範圍。 

$則是去當前毫秒時間,13位的數字,也可以用來取更精確的時間戳 

2、將設定的變數新增到請求中

3、新增「檢視結果樹」來檢視執行結果,和新增「bebug sampler」來檢視phone的取值

sqlserver如何快速生成不重複的隨機資料

1 如何生成8位隨機數,生成的數越隨機,重複的可能性當然越小 2 控制不重複 3 考慮效能 針對這個問題,我寫了如下的示例來解決,希望能為有這類需求的人提供指導 use tempdb go 建立測試表 create table tb id char 8 建立用於自動過濾重複值的唯一索引 create...

Java生成8位隨機邀請碼,不重複

public static string chars new string public static string generateshortuuid return shortbuffer.tostring 短8位uuid思想其實借鑑微博短網域名稱的生成方式,但是其重複概率過高,而且每次生成4個,...

如何快速生成100萬不重複的8位編號

最近在論壇看到有人問,如何快速生成 100萬不重複的 8位編號,對於這個問題,有幾點是需要注意的 1 如何生成 8位隨機數,生成的數越隨機,重複的可能性當然越小 2 控制不重複 3 考慮效能 針對這個問題,我寫了如下的示例來解決,希望能為有這類需求的人提供指導 生成 100萬條 8位不重複資料的示例...