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