Jmeter(五)— 定時器
定時器
所有“Timer”測試元素的目的是將代表虛擬使用者的 JMeter 執行緒暫停一段時間。使用計時器的主要目標是模擬虛擬使用者的“思考時間”。在負載測試的世界中,“思考時間”代表模擬真實的使用者行為,這會導致人們在與 Web 應用程式的互動之間等待
作用域
定時器在其作用域內的每個取樣器之前執行。如果定時器中有多個定時器,則所有定時器都將在取樣器發生之前處理。另外,定時器執行時間沒有被記錄,所以如果定時器暫停執行緒1秒,取樣器執行時間為3秒,3秒將被記錄為取樣器執行時間
1、Constant Timer
Constant Timer用來設定固定延時,放在某個請求下,表示在指定延時時間後,再開始發起請求操作,一般用來模擬思考時間(實際操作中,模擬真實使用者在操作過程中的等待時間)使得業務邏輯更接近實際操作情況。
Thread Delay ( in milliseconds ),執行緒延遲時間(ms),如:在每個取樣器的執行之前增加一個5秒的延遲
2、Synchronizing Timer
同步定時器實現LR集合點功能,在效能測試中模擬多使用者併發場景,即多個執行緒在同一時刻併發請求
Synchronizing Timer是在每個sampler(取樣器)之前執行的,而不是之後,不管這個定時器的位置放在sampler之後,還是之前.
引數說明:
Number of Simulated Users to Group by:
要按分組的模擬使用者數,如3,每3個使用者同時啟動(集合點集合夠N個使用者開始併發),如果設定為0,等同於設定為執行緒租中的執行緒數量
Timeout in milliseconds:等待時間(ms)
如果設定為0,Timer將會等待執行緒數達到“Number of Simulated Users to Group by”中設定的值才釋放,如果大於0,那麼如果炒股“Timeout in milliseconds”中設定的最大等待值後還沒有到達指定的執行緒數,Timer將不再等待,釋放已到達的執行緒。
注:
如果設定Timeout in milliseconds為0,且執行緒數量無法達到"Number of Simultaneous Users toGroup by"中設定的值,那麼Test將無限等待,除非手動終止。
Synchronizing timer 僅作用於同一個JVM中的執行緒,所以,如果使用併發測試,確保"Number of Simultaneous Users toGroup by"中設定的值不大於它所線上程組包含的使用者數。
3、Constant Throughput Timer
恆定吞吐量計時器可以方便地控制給定的取樣器傳送請求的吞吐量
恆定吞吐量計時器只能暫停JMeter 執行緒以減慢它們以達到目標吞吐量,因此請確保您有足夠的執行緒以保證每秒所需的請求量
恆定吞吐量計時器可以暫停執行緒,以便可以實現面向目標的場景。面向目標的場景是一種負載測試型別,其目標不是模擬 X 個併發使用者,而是每秒 X 個請求。恆定吞吐量計時器精確地在“分鐘”級別上工作,因此請確保您的測試持續足夠長(1 分鐘或更長時間)並使用合理的加速時間來避免峰值(除非您正在做某種形式的壓力測試)
引數說明:
Target throughput(in samples per minute):目標吞吐量,每分鐘傳送的請求數
Calculate Throughput based on(計算吞吐量策略)
- this thread only:控制每個執行緒的吞吐量,總的吞吐量為設定的 target Throughput 乘以執行緒的數量。
- all active threads : 設定的target Throughput 將分配在每個活躍執行緒上,每個活躍執行緒在上一次執行結束後等待合理的時間後再次執行。活躍執行緒指同一時刻同時執行的執行緒。
- all active threads in current thread group :設定的target Throughput將分配在當前執行緒組的每一個活躍執行緒上,當測試計劃中只有一個執行緒組時,該選項和all active threads選項的效果完全相同
- all active threads (shared ):與All active threads 的選項基本相同,唯一的區別是,每個活躍執行緒都會在所有活躍執行緒上一次執行結束後等待合理的時間後再次執行。
- all cative threads in current thread group (shared ):與All active threads in current thread group 基本相同,唯一的區別是,每個活躍執行緒都會在所有活躍執行緒的上一次執行結束後等待合理的時間後再次執行
4、Uniform Random Timer
5、Poisson Random Timer
6、Precise Throughput Timer
7、Gaussian Random Timer
8、JSR223 Timer
9、BeanShell Timer