Controllers trong JMeter
Nếu những request được định nghĩa trong các test plan của bạn được thực thi phụ thuộc vào một vài logic, lúc đó sẽ cần đến Logic Controllers. Vậy Logic Controller là gì? Có những loại Logic Controllers nào thường được sử dụng? Hãy đọc bài viết này để hiểu rõ hơn về Logic Controllers nhé.
Logic Controller là gì?
Logic Controller cho phép xác định thứ tự yêu cầu xử lý trong một Thread. Nó cho phép bạn kiểm soát khi nào gửi user request đến máy chủ web. Ví dụ: bạn có thể sử dụng Bộ điều khiển ngẫu nhiên (Random Controllers) để gửi các HTTP requests đến máy chủ một cách ngẫu nhiên.
Logic Controllers xác định thứ tự thực hiện yêu cầu của người dùng.
Một số Logic Controllers thường được sử dụng dưới đây:
Bài viết này được đăng tại [free tuts .net]
Recording Controller
JMeter có thể lưu lại các bước Kiểm thử; recording controller là một placeholder để lưu trữ lại các bước thực hiện.
Simple Controller
Simple Controller là một container lưu trữ user request.
Loop Controller
Loop Controller làm cho các user request chạy trong số lần được xác định hoặc lặp vô hạn như trong hình:
Random Controller
Random Controller làm cho tất cả các user request chạy theo thứ tự ngẫu nhiên trong mỗi vòng lặp.
Ví dụ: bạn có 3 user request đến trang web http://www.google.com theo thứ tự sau:
- HTTP request
- FTP request
- JDBC request
3 request này chạy 5 lần; vậy có tổng số 5 user request sẽ được gửi đến máy chủ Google bởi JMeter.
- Theo sequential, các request được gửi lần lượt theo thứ tự HTTP request ->FTP request->JDBC request trong mỗi vòng lặp.
- Nếu thứ tự là random, các request sẽ được gửi ngẫu nhiên, FTP request ->HTTP request->JDBC request Hoặc là JDBC request ->FTP request->HTTP request trong mỗi vòng lặp.
Module Controller
Mục tiêu của Module Controller là thêm modules cho JMeter.
Các ứng dụng web bao gồm các đơn vị chức năng nhỏ (ví dụ: Đăng nhập, Tạo tài khoản, Đăng xuất ...). Chức năng này có thể được lưu trữ trong Simple Controller dưới dạng "modules". Module Controller sẽ chọn modules cần chạy.
Hãy theo dõi kịch bản sau đây:
Bạn muốn mô phỏng:
- 50 users logging out,
- 100 users logging in
- 30 users search www.google.com
Bạn có thể sử dụng JMeter để tạo 3 modules. Mỗi module mô phỏng từng hoạt động của người dùng: Login, Logout, and Search.
Module controller chọn module cần chạy:
Các bộ điều khiển quan trọng khác
- Interleave Controller: chọn và thực hiện một trong những user request chạy trong mỗi vòng lặp của thread.
- Runtime Controller: kiểm soát thời gian được phép chạy.
Ví dụ: nếu chỉ định Runtime Controller chạy 10 giây, JMeter sẽ chạy thử nghiệm trong 10 giây.
- Transaction Controller: đo tổng thời gian thực hiện để hoàn thành việc thực hiện kiểm thử.
- Include Controller: được thiết kế để sử dụng gói kiểm thử mở rộng. Bộ điều khiển này cho phép bạn sử dụng nhiều test plans trong JMeter. Xem chi tiết trong bài viết Sử dụng JMeter cho performance testing
Loop Controller Example
Phần này hướng dẫn từng bước để thêm Loop Controller vào kế hoạch test performance.
Loop Controller làm cho các samplers chạy theo như số vòng lặp đã chỉ định hay giá trị vòng lặp đã chỉ định cho Thread Group. Ví dụ:
- Thêm một HTTP Request vào Loop Controller với số vòng lặp 50.
- Cấu hình số vòng lặp của Thread Group thành 2.
- Sau đó, JMeter sẽ gửi tổng cộng 50 * 2 = 100 HTTP Requests.
Sau đây là quá trình thực hiện:
Bước 1. Cấu hình Thread Group
Chúng ta sử dụng lại Bước 1, 2 trong bài viết Sử dụng JMeter cho performance testing
1. Thêm Thread Group
Nhấp chuột phải vào Test Plan và thêm một thread group mới: Add-> Threads (Users) ->Thread Group
Nhưng trong bảng điều khiển Thread Group, nhập Thread Properties như sau:
Nó sẽ gửi một user request đến máy chủ web google.com và chạy 2 lần.
2. Thêm JMeter elements
Thêm HTTP request default là www.google.com.
3. Thêm Loop Controller
Nhấp chuột phải vào Thread Group -> Logic Controller -> Loop Controller
Bước 2. Cấu hình Loop Controller
Thêm giá trị 50 vào trường Loop Count như hình dưới đây. Một user request gửi đến máy chủ web google.com sẽ chạy 50 lần. Nếu loop value = 2, JMeter sẽ gửi tổng cộng 2 * 50 = 100 HTTP Requests.
Nhấp chuột phải vào Loop Controller, Add -> Sampler -> HTTP request
Bước 3. Thêm View Results in Table
Sử dụng lại Bước 2 trong Jmeter Timers: Constant, Gaussian Random, Uniform để thêm View Results in Table
Vì vậy, test plan được hiển thị trong hình dưới đây:
Bước 4. Chạy thử nghiệm
Bây giờ hãy trở về View Results in Table, nhấp vào nút Start trên thanh Menu (Ctrl + R) để chạy thử nghiệm.
Như trong hình bên dưới, JMeter mô phỏng một yêu cầu người dùng được gửi 100 lần đến máy chủ web http://www.google.com/. Chương trình kiểm thử dừng sau khi user request được gửi trong 100 lần.
Xử lý sự cố:
Nếu bạn gặp vấn đề trong khi chạy kịch bản trên, hãy làm như sau:
- Kiểm tra xem bạn đang kết nối với internet thông qua proxy. Nếu có, loại bỏ proxy.
- Khởi động Jmeter.
- Mở Trình điều khiểnTestPlan.jmx trong Jmeter.
- Nhấp vào Nhóm chủ đề -> Xem kết quả trong Bảng.
- Chạy thử nghiệm.