Throughput Contoller,直譯是吞吐量控制器,它是用來控制該控制器下面元件的執行次數,與控制吞吐量的功能無關。(注:用Constant Throughput Timer可以控制吞吐量。)
Throughput Contoller有兩種模式:Total Executions 和Percent Executions。
參數說明如下:
- Total Executions:按吞吐量值來指定執行次數。選擇此模式,吞吐量值的單位為“次”。
- Percent Executions:按百分比來指定執行次數。選擇此模式,吞吐量值的單位為“%”。
- 吞吐量:該值可以是任意整數,如果小於等於0,則一次也不執行。
- Per User:如果勾選該項則按虛擬用戶數(線程數)來計算執行次數,如果沒有選中該項則按所有虛擬用戶數來計算執行次數。
那么如何計算Throughput Controller其下的執行次數?
下面添加循環控制器,在Throughput Controller下添加Debug Sampler元件來做實驗:
實驗一:測試按Percent Executions模式執行次數
TestCase1:線程數3,線程循環次數2,循環控制器循環次數2,吞吐量值50%,勾選Per User
測試結果:查看“聚合報告”里Debug Sampler執行次數,Debug Sampler=6,即執行了6次,如圖:
TestCase2:線程數3,線程循環次數2,循環控制器循環次數2,吞吐量值50%,不勾選Per User
測試結果,查看“聚合報告”里Debug Sampler執行次數,Debug Sampler=6,即執行了6次,如圖:
TestCase1與TestCase2測試結果對比表:
線程數 |
線程組循環次數 |
控制器循環次數 |
模式 |
吞吐量值 |
Per User |
執行次數 |
3 |
2 |
2 |
Percent Executions |
50 |
勾選 |
6 |
3 |
2 |
2 |
Percent Executions |
50 |
不勾選 |
6 |
由此,得出結論:
無論Per User是否勾選,按Percent Executions模式的執行次數都不受Per User影響,Percent Executions模式的執行次數=線程數*循環次數*吞吐量%。
PS:循環次數=線程組循環次數*循環控制器循環次數。
實驗二:測試按Total Executions模式執行次數
同樣,按照實驗一的初始條件不變:線程數3,線程循環次數2,循環控制器循環次數2,然后改變吞吐量值和是否勾選Per User來做實驗。
測試的實驗結果如下表:
線程數 |
線程組循環次數 |
控制器循環次數 |
模式 |
吞吐量值 |
Per User |
執行次數 |
3 |
2 |
2 |
Total Executions |
13 |
勾選 |
12 |
3 |
2 |
2 |
Total Executions |
13 |
不勾選 |
12 |
3 |
2 |
2 |
Total Executions |
12 |
勾選 |
12 |
3 |
2 |
2 |
Total Executions |
12 |
不勾選 |
12 |
3 |
2 |
2 |
Total Executions |
11 |
勾選 |
12 |
3 |
2 |
2 |
Total Executions |
11 |
不勾選 |
11 |
3 |
2 |
2 |
Total Executions |
10 |
勾選 |
12 |
3 |
2 |
2 |
Total Executions |
10 |
不勾選 |
10 |
3 |
2 |
2 |
Total Executions |
5 |
勾選 |
12 |
3 |
2 |
2 |
Total Executions |
5 |
不勾選 |
5 |
3 |
2 |
2 |
Total Executions |
4 |
勾選 |
12 |
3 |
2 |
2 |
Total Executions |
4 |
不勾選 |
4 |
3 |
2 |
2 |
Total Executions |
3 |
勾選 |
9 |
3 |
2 |
2 |
Total Executions |
3 |
不勾選 |
3 |
3 |
2 |
2 |
Total Executions |
2 |
勾選 |
6 |
3 |
2 |
2 |
Total Executions |
2 |
不勾選 |
2 |
分析數據,得出結論:
- 當勾選Per User時:
- 線程數*循環次數>=線程數*吞吐量時,Total Executions模式的執行次數=線程數*吞吐量。
- 當線程數*循環次數<線程數*吞吐量時,Total Executions模式的執行次數=當線程數*循環次數。
- 當不勾選Per User時:
- 線程數*循環次數<=吞吐量時,Total Executions模式的執行次數=線程數*循環次數。
- 當線程數*循環次數>吞吐量時,Total Executions模式的執行次數=吞吐量。