Hôm nay chúng ta sẽ tìm hiểu về 1 trong những công cụ test performance phổ biến nhất hiện nay, đó là JMeter.
JMeter là 1 mã nguồn mở, viết bằng Java và được thiết kế để test performance. Ngoài ra, có thể sử dụng JMeter để manual/automation test API. JMeter mô phỏng thao tác trên ứng dụng của một lượng user nhất định. Khi bắt đầu thực hiện test, JMeter gửi các request đến server và lưu lại tất cả phản hồi. Sau khi tính toán, JMeter sẽ tạo một báo cáo về performance của hệ thống vừa test. JMeter có thể test performance nhiều loại applications/server/protocol khác nhau:
JMeter có thể chạy trên tất cả hệ điều hành (Windows, MacOS,…) miễn là có cài đặt Java 8+. Mọi người search Google để biết cách cài đặt Java nha ^^. Còn JMeter thì chỉ cần download file nén về, giải nén và có thể sử dụng luôn. (JMeter version 5.4.1 có một số bug khi chạy trên Java 14+, không biết version 5.5 các bác đã fix chưa ><)
https://jmeter.apache.org/download_jmeter.cgi
Binaries
, download apache-jmeter-5.5.zip
đối với Windows và apache-jmeter-5.5.tgz
đối với MacOS và Linux. Nếu muốn chỉnh sửa hoặc phát triển thêm tính năng thì download tại mục Source
nhé ^^
cd <file path>/apache-jmeter-5.5/bin
./jmeter
JMeter GUI trông sẽ như thế này nè ^^
Test plan mô tả series of step
mà JMeter sẽ thực hiện khi chạy test. Test plan cần tối thiểu một thread group và một hoặc nhiều samplers. Các elements của test plan gồm:
Thread group là thành phần bắt buộc và là điểm bắt đầu trong test plan. Tất cả controller và sampler đều phải nằm trong thread group. Nó điều khiển số lượng thread mà JMeter sử dụng khi chạy test. Để tạo thread group, click chuột phải vào Test Plan > Chọn Add > Chọn Threads > Chọn Thread Group. Có thể điều chỉnh các thông số sau:
Sampler gửi request đến server và đợi response. Nó được thực thi theo thứ tự xuất hiện trong test plan.
Để tạo sampler, click chuột phải vào Thread Group > Chọn Add > Chọn Sampler > Chọn loại sampler
Ví dụ về HTTP request:
Với URL https://jmeter.apache.org/index.html
> Điền data vào sampler như sau:
Index
(Có thể điền tuỳ ý)https
jmeter.apache.org
GET
/index.html
Listener cung cấp toàn bộ thông tin mà JMeter thu thập được trong quá trình chạy test. Để tạo listener, click chuột phải vào nơi muốn đặt > Chọn Add > Chọn Listener > Chọn loại listener Ví dụ: View Results Tree sẽ hiển thị chi tiết sampler request và response dưới dạng HTML hoặc XML. Listener có thể xuất file data dạng CSV hoặc XML. Tất cả listener đều lưu cùng 1 data/kết quả chạy test, chỉ khác nhau về cách hiển thị trên màn hình. Có thể đặt listener ở bất cứ đâu trong test plan. Nếu đặt listener trong thread group thì nó sẽ thu thập data của tất cả element trong thread group. Nếu đặt listener trong sampler thì nó chỉ thu thập data của sampler đó thôi.
Configuration element sẽ làm việc với các sampler. Nó không gửi request mà chỉ thêm hoặc chỉnh sửa request. Một configuration element chỉ có thể truy cập từ trong nhánh nơi mà đặt nó. Để tạo configuration element, click chuột phải vào nơi muốn đặt > Chọn Add > Chọn Config element > Chọn loại config element Ví dụ về HTTP request default: Thông thường các sampler sẽ có cùng domain, vì vậy có thể đặt config domain ở 1 chỗ, nếu muốn thay đổi môi trường test thì chỉ cần thay đổi ở 1 chỗ thôi. Nếu config domain trong sampler để trống thì sẽ tự động lấy từ HTTP request default.
Logic controller thay đổi thứ tự chạy test của JMeter. Ví dụ: Mặc định JMeter sẽ gửi request lần lượt theo thứ tự xuất hiện của Sampler. Nếu không muốn chạy theo thứ tự mặc định đó, mà muốn chạy random thì có thể sử dụng Random Order Controller. Để tạo Random Order Controller, click chuột phải vào thread group > Chọn Add > Chọn Logic controller > Chọn Random Order Controller. Sau đó kéo thả các Sampler muốn chạy random vào trong Random Order Controller. Mỗi lần chạy test thì thứ tự gửi request sẽ là random.
Mặc định, JMeter sẽ thực thi sampler theo thứ tự mà không dừng. Một timer element sẽ tạo ra một khoảng thời gian chờ trước mỗi sampler. Nếu có nhiều timer element trong 1 thread group thì sẽ cộng dồn. Để thêm timer, click chuột phải vào nơi muốn đặt > Chọn Add > Chọn Timer > Chọn loại timer Ví dụ về Constant Timer: Nếu đặt constant timer trong thread group với thread delay = 3000ms thì cứ sau mỗi 3s sẽ thực thi 1 sampler theo thứ tự. Nếu chỉ muốn delay 1 sampler thì đặt constant timer trong sampler đó.
Assertions dùng để verify giữa kết quả thực tế và kết quả mong muốn. Assertions tác động lên tất cả sampler trong phạm vi, nếu chỉ muốn verify 1 sampler thì đặt assertion trong sampler đó.
Pre-Processor định nghĩa những hành động thực hiện trước khi thực thi sampler. Pre-Processor thường dùng để điều chỉnh thiết lập, cập nhật biến trước khi thực thi Sampler. Ngược lại Post-Processor định nghĩa những hành động thực hiện sau khi thực thi sampler. Post-Processor thường dùng để xử lý response mà server trả về. Note: Assertion, Pre-Processor và Post-Processer khá rộng nên mình sẽ viết chi tiết trong các bài khác nhé. Thứ tự ưu tiên thực thi trong 1 test plan: