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.
Nội dung bài viết
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