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} > 7thì 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