If controller trong jmeter

Khi bạn muốn run 1 hoặc nhiều sampler dựa vào condition (điều kiện) thì là lúc bạn cần đến If controller.

Bạn sẽ điền vào 1 giá trị boolean: true hoặc false

Nhưng vì nếu đã biết rõ true hay false ngay từ đầu thì mình chả cần đến If-controller làm gì cả. Chính vì mình không biết trước nên chỗ này thường sẽ là mình sẽ có 2 cách:

  • đặt biến
  • hoặc 1 expression (biểu thức)

Ví dụ: Giả sử request ở phía trên, trả về 1 số ngẫu nhiên nào đó, nếu số đó lớn hơn 7 thì run request ở trong If controller.

I. Đặt biến

Bạn sẽ đặt biến dạng boolean vào chỗ If controller

Biến này sẽ được tạo ra từ phần JSR 223 PostProcessor ở request 1.

import groovy.json.JsonSlurper;

//Convert response from String to JsonSlurper
def response = new JsonSlurper().parseText(prev.getResponseDataAsString());

//Get ID
def id = response.id;

//If id > 7 --> save `true` to var TEST
def TEST = false
if (id > 7) {
	TEST = true
}
vars.putObject("TEST", TEST)

Kết quả:

  • id > 7 run Request 2
  • id < 7 không run Request 2

II. Viết expression

Bạn sẽ thấy cách đặt biến ở phía trên nó hơi cồng kềnh vì có thể viết đoạn so sánh vào If controller trực tiếp luôn.

Step 1: Extract id từ response và save vào biến ID

Step 2: Viết expression vào If controller

Lưu ý:

  • Nếu chỉ viết ${ID} > 7 thì không thể chạy được, vì Jmeter sẽ coi đó là Text thông thường, ko phải biểu thức để run, do đó mình phải viết nó với ${__groovy(expression)} hoặc ${__jexl3(expression)}
  • Chỗ này bạn có thể có nhiều điều kiện nối vào nhau, sử dụng && (AND) hay || (OR).

III. Tổng kết

If-controller cũng đương đối đơn giản và hữu dụng khi cần thiết. Còn 1 vài chi tiết mình chưa viết trong bài, bạn có thể đọc ở đây. Nếu bạn thấy hay, hãy tặng 1 like cho người viết bài nha. Thanks

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