一. 計數器函數
counter
1、計數器函數每次調用時都會生成一個新數字,從1開始逐漸增加1。計數器可以配置為將每個摸擬用戶的值分開,或者為所有用戶使用相同的計數器。如果每個用戶的值縣有單獨的增量。則類似於計算測試計划中的迭代次數。全局計數器計算該請求運行的次數。
計數器使用整數變量來保存計數,因此最大值為2,147,483,647。
2、參數
1)第一個參數即TRUE,每個用戶有自己的計數器;FALSE,使用全局計數器:
True 每個虛擬用戶有自己的計數器,每個虛擬用戶的計數器保持獨立
false:全局計數器
2)第二個參數: 存儲結果的變量名(可選)//重用計數器函數創建值的引用名。
供后續引用計數器的值:
${counter}說明:
a.當第一個參數是true時,5個線程,則結果為1 1 1 1 1
運行結果:
b.當第一個參數是true時,5個線程,循環2次,則結果為1 2 1 2 1 2 1 2 1 2 (配置元件中的計數器可以設置是否在每次循環時重新計數,這里默認是否)。
理解:因為設置為true時,每個虛擬用戶有自己的計數器,每個虛擬用戶的計數器保持獨立,所以循環2次時,第一個線程數累計計算計數器,此時計數器=2
以此類推,第五個線程數循環2次也是計算器=2,也就是一個線程數調用計算器次數是2次。
c.當第一個參數是false時,5個線程,則結果為1 2 3 4 5
理解:因為設置為false時,false:全局計數器,計算的全部線程數一起調用的次數。
每一次請求都算作一次統計,所以一共統計了5次。
d.當第一個參數是false時,5個線程,循環2次,則結果為1 2 3 4 5 6 7 8 9 10
Lable就是http請求sample的名稱
如果多個請求引用計數器,則每個請求都遵守上面的規則,不會產生影響,獨立。
場景1: 2個請求,都是設置為true
場景2: 2個請求,都是設置為false
請求與請求之間沒有關系,只為各自的請求進行計數,比如我這個計數器只統計我這個請求下面的。
二.計數器配置元件
新增-配置元件-計數器
Starting value:給定計數器的起始值、初始值,第一次迭代時,會把該值賦給計數器
遞增(Increment):每次迭代后,給計數器增加的值
Maximum value:計數器的最大值,如果超過最大值,重新設置為初始值(Start),默認的最大值為Long.MAX_VALUE,2^63-1(如果持續壓測,建議最好不要設置最大值)
數字格式Number format:可選格式,比如000,格式化為001,002;默認格式為Long.toString(),但是默認格式下,還是可以當作數字使用
引用名稱(Reference Name):用於控制在其它元素中引用該值,形式:$(reference_name}
與每用戶獨立的跟蹤計數器(Track Counter Independently for each User):
1)如果勾選<與每用戶獨立的跟蹤計數器>,不勾選每次迭代復原計數器,即獨立的
(備注:等同於計數器函數設置為true,每個虛擬用戶有自己的計數器,每個虛擬用戶的計數器保持獨立),則每個用戶有自己的值:比如用戶#1 獲取值為1,用戶#2獲取值為2。
既然是獨立的
場景1:
前提:勾選與每用戶獨立的跟蹤計數器時,不勾選每次迭代復原計數器
請求1,計數器如下,運行結果:都是=1
場景2:
前提:勾選與每用戶獨立的跟蹤計數器時,不勾選每次迭代復原計數器
5個線程 循環2次 運行結果也是12 12 12 12 12 同計數器函數運行結果
2)每次迭代復原計數器(Reset counter on each Thread Group Iteration):這點是計數器和計數器函數的不同之處!
a.可選,僅在<勾選與每用戶獨立的跟蹤計數器時>可用;
b.勾選與每用戶獨立的跟蹤計數器時,勾選每次迭代復原計數器,則每次線程組迭代,都會重置計數器的值,當線程組是在一個循環控制器內時比較有用。
場景2:
前提:勾選與每用戶獨立的跟蹤計數器時,勾選每次迭代復原計數器
5個線程 循環2次
計數器函數運行結果:11111 11111 (也就是每次線程組迭代,都會重置計數器的值)
計數器函數運行結果也是12 12 12 12 12
3) 如果不勾選與每用戶獨立的跟蹤計數器時,即全局的,全局的計數器,比如用戶#1 獲取值為1,用戶#2獲取值還是為1;
(備注:等同於計數器函數設置為false,false:全局計數器,計算的全部線程數一起調用的次數。)
場景2: 不勾選與每用戶獨立的跟蹤計數器時
5個線程 循環2次 ${counter} ${__counter(false,yy)}
計數器函數=
計數器函數運行結果:12345 678910
計數器函數運行結果也是:12345 678910
先忽略:
與每用戶獨立的跟蹤計數器(Track Counter Independently for each User):全局的計數器,如果不勾選,即全局的,3個vuser,兩次循環,則生成6個不同的count,相當於LR的unique each interation
如果勾選,即獨立的,則每個用戶有自己的值,3個vuser,兩次循環,則vuser1從1到2,vuser2從1到2,vuser3從1到2,相當於LR的sequential each interation
每次迭代復原計數器(Reset counter on each Thread Group Iteration):可選,僅勾選與每用戶獨立的跟蹤計數器時可用;
如果勾選,3個vuser,兩次循環,每個vuser的每次循環生成的結果都是1,相當於LR的sequential once