Các loại Timer trong Jmeter

Trong Jmeter có 1 số loại Timer giúp việc tạo ra các test plan mà gần với scenario thực tế của end-user. End-user có thể hành động nhanh chậm, chờ đợi, hoặc dừng lại đọc thông tin trên web trước khi có action tiếp theo. Nếu chúng ta giả lập test plan càng giống thực tế thì kết quả của performance test càng đáng tin cậy. Tuy nhiên, jmeter cung cấp nhiều loại Timer khác nhau, có loại rất dễ hiểu, nhưng có loại cũng không dễ chút nào.

I. Timer nằm đâu trong Jmeter

Thread Group > Add > Timer

II. Timer tác dụng vào đối tượng nào

Timer sẽ có tác dụng vào các request mà trong cùng tập hợp với nó.

Ví dụ 1: Timer nằm trong Thread Group

  • Cả 2 request Req1Req2 đều bị ảnh hưởng

Ví dụ 2: Timer nằm trong controller

  • Chỉ có Req1Req2 bị ảnh hưởng
  • Req3 không bị ảnh hưởng

Ví dụ 3: Timer nằm trong 1 request

  • Chỉ có Req2 bị ảnh hưởng
  • Các request khác không bị tác động

III. Các loại Timer

1. Constant Timer

  • Delay 1 khoảng thời gian trước khi run request mà nó tác động
Delay 5s cho request 2
  • Req1 chạy ngay lập tức
  • Req2 chờ đủ 5s sau khi Req1 kết thúc
  • Req3 chạy ngay khi Req2 kết thúc

2. Uniform Random Timer

  • Random Delay Maximum: thời gian request sẽ delay, random linh động và không vượt quá con số này.
  • Constant Delay Offset: Thời gian request mặc định delay.
Tổng thời gian delay = Constant Delay Offset + Random Delay Maximum

Giả sử:

  • Constant Delay Offset = 2000 (miliseconds)
  • Random Delay Maximum = 3000 (miliseconds)
  • –> Tổng thời gian delay sẽ là 2000 < delay time < 5000

Ví dụ:

Thời gian delay ~ 3.7s = 2s + 1.7s

3. Gaussian Random Timer

Gaussian graph là cái histogram/curve mà chúng ta có học ở xác suất thống kê, nó chính là cái tháp hình chuông. Với điểm nằm giữa là Constant Delay Offset , còn Deviation là độ biến thiên sang 2 bên.

Như vậy thời gian delay sẽ là: offset - deviation <= delay <= offset + deviation . Tuy nhiên nó sẽ phân bổ phần nhiều vào khu vực Offset thay vì 2 bên rìa của cái chuông.

4. JSR223 Timer

Viết code groovy để cho biết là sẽ delay bao lâu. Mấu chốt là phải return được 1 number. Ví dụ:

Nếu logic của bạn phức tạp thì bạn có thể thêm logic vào trong đó. Ví dụ bạn muốn kiểm tra xem tên của request trước khi áp dụng con số Timer

Kết quả là:

  • Req1 sẽ delay 2000 milisecond
  • Req2 sẽ delay 5000 milisecond
switch (ctx.getCurrentSampler().getName()) {
	case "Req1":
		return 2000
		break
	case "Req2":
		return 5000
		break
	default:
		return 0
}

5. Poisson Random Timer

Đây là cái Timer khá phức tạp, nó cũng như Gaussian Timer ở trên, tuy nhiên nó phân bổ theo mô hình gọi là Poisson Distribution. Mình cũng cố đọc xem nó là cái quái gì mà đau đầu, nhức mắt quá. =))) Bạn nào muốn đọc tí để thử thì tự google nhé. Mình không nghĩ là mình cần dùng đến loại Timer này, phức tạp quá là phức tạp.

6. BeanShell Timer

Loại này giống như JSR223 Timer ở phía trên, điểm khác là chúng ta viết code Java ở đây. Tuy nhiên BeanShell được coi là performace kém hơn so với JSR223 Groovy nên giờ chẳng còn ai dùng BeanShell.

7. Cái loại Timer khác

IV. Tổng kết

Dùng Timer là 1 việc cần thiết cho performace, giúp tạo ra test plan giống với các case thực tế, nhưng bạn cũng không cần phải học hết tất cả các loại Timer. Chúc các bạn sớm master Jmeter, chứ mình chịu, đau đầu đau mắt quá. @@

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments