Timers: Constant, Gaussian Random, Uniform
Timers cho phép JMeter trì hoãn giữa mỗi request. Một Timers có thể giải quyết vấn đề quá tải của máy chủ. Trong thực tế, client có thể truy cập đến website ở các khoảng thời gian khác nhau. Vì vậy, Timer sẽ giúp mô phỏng các hành vi theo thời gian thực.
Timers là gì?
Theo mặc định, JMeter gửi nhiều requests mà không tạm dừng giữa mỗi request. JMeter có thể áp đảo máy chủ bằng cách thực hiện nhiều requests trong một khoảng thời gian ngắn.
Hãy tưởng tượng rằng bạn gửi hàng ngàn request đến một máy chủ web được kiểm thử trong vài giây. Điểu gì sẽ xảy ra?
Sau đây là một số loại timer phổ biến trong Jmeter:
Bài viết này được đăng tại [free tuts .net]
Constant Timer
Constant timer trì hoãn mỗi user request trong cùng một khoảng thời gian.
Gaussian Random Timer
Gaussian Random Timer trì hoãn mỗi user request trong một khoảng thời gian ngẫu nhiên.
Parameters:
Thuộc tính | Mô tả |
Name | Tên mô tả cho timer này được hiển thị trong tree |
Deviations (milliseconds) | Một parameter của hàm phân phối Gaussian |
Constant Delay Offset (milliseconds) | Giá trị bổ sung tính bằng mili giây |
Vì vậy, tổng độ trễ được mô tả như hình dưới đây:
Uniform Random Timer:
Uniform random timer làm chậm trễ mỗi user request trong một khoảng thời gian ngẫu nhiên.
Parameters:
Thuộc tính | Mô tả |
Name | Tên mô tả cho timer này được hiển thị trong tree |
Random Delay Maximum | Số lượng ngẫu nhiên tối đa của mili giây để trì hoãn |
Constant Delay Offset (milliseconds) | Giá trị bổ sung tính bằng mili giây |
Tổng độ trễ là tổng của giá trị ngẫu nhiên và giá trị bù.
BeanShell Timer
BeanShell Timer có thể được sử dụng để tạo thời gian trễ giữa mỗi user request
BSF Timer
BSF Timer có thể được sử dụng để tạo độ trễ giữa mỗi user request bằng ngôn ngữ kịch bản BSF.
JSR223 Timer
JSR223 Timer có thể được sử dụng để tạo độ trễ giữa mỗi user request bằng ngôn ngữ kịch bản JSR223
Cách sử dụng Constant Timer
Sử dụng Constant Timer để đặt độ trễ cố định giữa các user request với google.com.
Hãy bắt đầu với một kịch bản kiểm thử đơn giản:
- JMeter tạo một user request tới http://www.google.com 100 lần
- Độ trễ giữa mỗi user request là 5000 ms
Dưới đây là quá trình thực tế:
Pre-condition:
Chúng ta sử dụng lại Bước 1 và Bước 2 trong bài hướng dẫn Sử dụng JMeter cho Performance Testing.
Bước 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
Trong bảng điều khiển Thread Group, nhập Thread Properties như sau:
Cài đặt này cho phép JMeter tạo một user request tới http://www.google.com trong 100 lần.
Bước 2: Thêm JMeter elements
- Thêm HTTP request default
- Thêm HTTP request
Bước 3: Thêm Constant Timer
Nhấp chuột phải vào Thread Group -> Timer -> Constant Timer
Cấu hình độ trễ của luồng 5000 mili giây.
Bước 4: Thêm View Results in Table
Xem Results in Table hiển thị kết quả kiểm tra ở định dạng bảng.
Nhấp chuột phải vào Add -> Listener -> View Result in Table
Xem kết quả trong Bảng hiển thị như hình dưới đây:
Bước 5: Chạy kiểm thử
Khi bạn đã sẵn sàng để chạy kiểm thử, hãy nhấp vào nút Run trên thanh menu hoặc nhấn phím tắt Ctrl + R
Đây là kết quả:
Trong hình trên, ta cùng phân tích Sample 2
- Start time là 22: 05: 01.866
- Sample Time của Sample 2 là 172 ms
- Constant Timer: 5000 ms (như đã cấu hình)
- End Time của sample này là = 22: 05: 01.866 + 172 + 5000 = 22:05:07.038
Vì vậy, sample 3 nên bắt đầu tại thời điểm là 22:05:07.039 (Như hình trên).
Độ trễ của mỗi mẫu là 5000 ms.
Nếu bạn thay đổi Constant Timer bằng 0, bạn sẽ thấy kết quả được thay đổi.
Phâm tích Sample 1:
- Start time là 22: 17: 39.141
- Sample Time của sample 2 là 370 ms
- Constant Timer: 0 ms (như đã cấu hình)
- End Time của Sample này là = 22: 17: 39.141+ 370 + 0 = 22:17:39.511
Vì vậy, Sample 2 nên bắt đầu tại thời điểm là 22:17:39.512 (Hiển thị như hình trê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ở TimerTestPlan.jmx trong Jmeter.
- Nhấp đúp chuột vào Thread Group -> View Result in Table.
- Chạy kiểm thử.