Hits: 670
Chào các bạn, cũng lâu rồi mình mới ra bài viết mới vì khoảng thời gian vừa rồi mình khá bận cả trong công việc và cuộc sống.
Nhưng bây giờ mình đã trở lại rồi đây, hy vọng rằng các bạn cùng tiếp tục đón nhận và chia sẻ nhé.
Tiếp tục với JMeter Series quen thuộc, bài viết sau đây mình sẽ giới thiệu và hướng dẫn một cách chi tiết cách sử dụng Timer trong JMeter.
NỘI DUNG CHÍNH
1. JMeter Timer là gì ?
Các chuỗi request trong jmeter thường chạy nối tiếp nhau mà không có bất kỳ độ trễ thời gian nào.
Điều này là không thực tế về bản chất vì người dùng bình thường sẽ mất khoảng thời gian để đọc hoặc suy nghĩ giữa việc thực hiện mọi hành động.
Thời gian đó được gọi là “Think Time” và nó nên được thêm vào để tạo tập lệnh thực tế và đáng tin cậy hơn.
Để thực hiện các hoạt động như vậy, JMeter đã cung cấp 9 loại Timer và người dùng có thể chọn loại phù hợp với tình huống khác nhau:
1. Constant Timer | Trì hoãn từng yêu cầu của người dùng trong cùng một khoảng thời gian cố định. Đây là loại timer đơn giản và thường được sử dụng nhất. |
2. Uniform Random Timer | Trì hoãn từng yêu cầu của người dùng trong khoảng thời gian ngẫu nhiên. |
3. Precise Throughput Timer | Cho phép người dùng đánh giá thông lượng cần thiết để chạy test. Người dùng có thể setting cho mỗi request thông lượng được tính bằng giờ/phút/giây |
4. Constant Throughput Timer | Cũng giống như Precise Throughput Timer, ngoại trừ việc nó có ít cài đặt hơn. Về cơ bản, nó bám sát ngưỡng chịu tải rất chặt chẽ, và không cho phép phương sai linh hoạt của Precise Throughput Timer. |
5. Gaussian Random Timer | Trì hoãn từng yêu cầu của người dùng trong khoảng thời gian ngẫu nhiên. Bộ đếm thời gian này hoạt động trên chức năng phân phối Normal hoặc Gaussian. |
6. JSR223 Timer | Đây là bộ hẹn giờ linh hoạt nhất vì nó cho phép bạn viết kịch bản (script) cho sự trì hoãn và bạn có thể thực hiện điều này đơn giản hoặc phức tạp tùy theo nhu cầu của mình. |
7. Poisson Random Timer | Cũng gần tương tự như Gaussian Random Timer. Poisson Random Timer cung cấp thời gian trễ giữa các yêu cầu trong một khoảng thời gian ngẫu nhiên. Tổng thời gian trễ là tổng của cả độ trễ Lambda (tính bằng mili giây) và độ trễ không đổi (tính bằng mili giây). Việc tạo số ngẫu nhiên dựa trên trên phân phối Poisson. |
8. Synchronizing Timer | Chỉ có 1 tham số là “Number of Simulated Users to Group by”. Số được cung cấp trong tham số này sẽ là số luồng mà nó sẽ đợi để nhóm và phát hành. |
9. BeanShell Timer | Người dùng viết sript để thực hiện logic trì hoãn. |
2. Hướng dẫn sử dụng Timer trong JMeter
2.1. Constant Timer
Properties:
- Thread Delay (in miliseconds): thời gian trì hoãn giữa các Request, không đổi
Thực hiện:
Thêm Request: Tạo 2 Request (Request 1, Request 2) thực hiện mở trang https://google.com
Thêm Constant Timer: Click phải vào Thread Group > Chọn Add > Chọn Timer > Chọn Constant Timer (chỉnh Thread Delay là 3000 milliseconds = 3 giây)
Thêm Listener: Click phải vào Thread Group > Chọn Add > Chọn Listener > Chọn View Results Tree để theo dõi kết quả



Chọn View Results Tree, nhấn Start và theo dõi kết quả theo thời gian:
Sau 3 giây (từ giây thứ 3) Request 1 được thực hiện và sau 3 giây tiếp theo (từ giây thứ 6) Request 2 được thực hiện.

- Lưu ý: Constrant Timer đặt ở những vị trí sau thì kết quả run hoàn toàn giống nhau




- Constrant Timer nếu được đặt trong Request 1 hoặc trong Request 2 thì có kết quả khác như sau
Request 1: sau 3 giây Request 1 được thực hiện rồi đến Request 2 được thực hiện.
Request 2: Request 1 được thực hiện rồi sau 3 giây Request 2 được thực hiện.


2.2. Uniform Random Timer
Thread Delay Properties:
- Random Delay Maximum (in milliseconds): thời gian tối đa để trì hoãn, được lấy ngẫu nhiên
- Constrant Delay Offset (in milliseconds): thời gian trì hoãn được bổ sung, không đổi
Tổng thời gian trì hoãn = Random Delay Maximum + Constrant Delay Offset
Thực hiện:
Thêm Request: Tạo 5 Request (Request 1 ~ Request 5) thực hiện mở trang https://google.com
Thêm Uniform Random Timer: Click phải vào Thread Group > Chọn Add > Chọn Timer > Chọn Uniform Random Timer (Setting Random Delay Maximum = 3000, Constrant Delay Offset = 1000)
Thêm Listener: Click phải vào Thread Group > Chọn Add > Chọn Listener > Chọn View Results in Table




Chọn View Results in Table, nhấn Start và theo dõi kết quả theo thời gian:
Có thể thấy giữa các request thời gian trì hoãn không nhỏ hơn 1000 mili giây (Constrant Delay Offset) và không lớn hơn 4000 mili giây (Constrant Delay Offset + Random Delay Maximum)
- Request 1: 20:55:20.278
- Request 2: 20:55:23.008
- Request 3: 20:55:26.336
- Request 4: 20:55:29.295
- Request 5: 20:55:30.757

2.3. Precise Throughput Timer
Properties:
Delay threads to ensure target throughput: cài đặt số lượng thread được trì hoãn để đảm bảo ngưỡng chịu tải mong muốn.
- Target throughput: ngưỡng chịu tải mong muốn.
- Throughput period: thời gian chịu tải.
- Test duration: thời gian test.
Batched depatures: cài đặt các phần chạy.
- Number of threads in the part (threads): số lượng thread trong mỗi phần.
- Delay between threads in the part (ms): thời gian trì hoãn giữa mỗi thread trong từng phần.
- Test duration: thời gian test.
Setting to ensure repeatable sequence: cài đặt để đảm bảo trình tự lặp lại.
- Random seed (change from 0 to random): ngẫu nhiên từ 0 đến số random.

2.4. Constant Throughput Timer
Constant Throughput Timer (bộ hẹn giờ thông lượng không đổi) được sử dụng như một yếu tố định hướng mục tiêu giúp đạt được thông lượng mong muốn (tổng số yêu cầu). Bộ hẹn giờ này cố gắng duy trì thông lượng không đổi trong suốt quá trình thử nghiệm và đạt được mục tiêu.
Properties:
Delay before each affected sampler: thời gian trì hoãn trước mỗi request bị ảnh hưởng
- Target throughput (in samples per minutes): thông lượng mục tiêu (tính bằng số request mỗi phút)
- Caculate Throungput based on: tính toán thông lượng dựa vào
this thread only: chỉ thread này
all active threads: tất cả thread đang hoạt động
all active threads in current thread group: tất cả thread đang hoạt động trong nhóm thread này
all active threads (shared): tất cả thread đang hoạt động (được chia sẻ)
all active threads in current thread group (shared): tất cả thread đang hoạt động trong nhóm thread này (được chia sẻ)

2.5. Gaussian Random Timer
Gaussian Random Timer được sử dụng để tạo và thêm độ trễ ngẫu nhiên trước khi thực hiện bộ lấy mẫu. Bộ đếm thời gian này dựa trên Hàm phân phối bình thường hoặc Gaussian.
Thread Delay Properties:
- Deviation (in millisecond): Độ lệch (tính bằng mili giây), số cho thấy độ trễ có thể lệch bao nhiêu so với độ lệch đã cho đối với phạm vi cao hơn và thấp hơn.
- Constant Delay Offset (in millisecond): Độ trễ liên tục (tính bằng mili giây), số cho thấy độ trễ không đổi sẽ được thêm vào số ngẫu nhiên được tạo bởi Hàm Gaussian trong phạm vi giá trị độ lệch đã cho.

2.6. JSR223 Timer
Đang cập nhật…
2.7. Poisson Random Timer
Đang cập nhật…
2.8. Synchronizing Timer
Đang cập nhật…
2.9. BeanShell Timer
Đang cập nhật…
3. Lời kết
Sau khi đã hiểu rõ và thực hành các loại Timer nói trên thì bạn có thể sử dụng trong các dự án của mình một cách hữu dụng đấy.
Cám ơn bạn đã dành thời gian để đọc bài viết này. Hẹn gặp lại các bạn trong các bài viết tiếp theo của JMeter Series.
Nếu có thắc mắc hoặc trao đổi vui lòng để lại bình luận bên dưới nhé !