Tôi sẽ dùng xuyên suốt ví dụ "Hệ thống đặt phòng họp nội bộ" — một API GET /api/rooms để lấy danh sách phòng — làm mục tiêu test. Nếu bạn chưa nắm nền kiểm thử hiệu năng, hãy đọc qua Performance testing là gì trước cho chắc.
JMeter là gì & dùng làm gì
Trước khi cài đặt, hãy trả lời gọn câu hỏi jmeter là gì. JMeter là gì? Apache JMeter là một công cụ mã nguồn mở, viết bằng Java, dùng để kiểm thử hiệu năng (performance testing) và tải (load testing) cho ứng dụng web, API và nhiều giao thức khác. Nó mô phỏng nhiều người dùng ảo gửi request đồng thời, rồi đo thời gian phản hồi, throughput và tỷ lệ lỗi của hệ thống.
Nói cách khác, thay vì nhờ 500 đồng nghiệp cùng bấm vào "Hệ thống đặt phòng họp" một lúc, bạn để apache jmeter giả lập 500 người dùng đó và đo xem server chịu được đến đâu. JMeter không chỉ test hiệu năng: nó còn hỗ trợ HTTP/HTTPS, REST/SOAP API, JDBC (database), FTP, và nhiều giao thức khác — nên là lựa chọn số một cho jmeter cho người mới muốn học nghề hiệu năng mà không tốn phí bản quyền.
Cài đặt JMeter (Java + JMeter)
Vì JMeter viết bằng Java, cài đặt jmeter luôn gồm hai phần: cài Java trước, rồi mới tới JMeter. Đây là điểm người mới hay vấp, nên tôi tách rõ từng bước.
- Cài Java: JMeter phiên bản mới yêu cầu Java 8 trở lên (JDK hoặc JRE). Bạn tải bản OpenJDK 8+ (hoặc mới hơn), cài xong kiểm tra bằng lệnh
java -versiontrong terminal — thấy in ra số phiên bản là ổn. - Tải JMeter: vào trang chính thức của Apache JMeter, tải bản binary (
apache-jmeter-x.y.zip), giải nén ra một thư mục bất kỳ. JMeter không cần cài đặt theo kiểu chạy file setup — chỉ giải nén là dùng được. - Khởi động: mở thư mục
bin, chạyjmeter.bat(Windows) hoặcjmeter.sh(macOS/Linux) để mở giao diện đồ họa (GUI).
| Thành phần | Yêu cầu tối thiểu | Cách kiểm tra |
|---|---|---|
| Java | JDK/JRE 8 trở lên | java -version |
| JMeter | Bản binary mới nhất, giải nén | Chạy bin/jmeter.bat |
| RAM | ≥ 2–4 GB khi chạy tải lớn | Theo dõi khi test |
Lưu ý: GUI của JMeter khá "ngốn" tài nguyên. Bạn dùng GUI để dựng và debug kịch bản, còn khi chạy tải thật thì nên chuyển sang chế độ non-GUI (dòng lệnh) cho nhẹ — tôi sẽ nói ở phần mẹo.
Cấu trúc một Test Plan trong JMeter
Mọi thứ trong JMeter đều nằm trong một Test Plan — chính là kịch bản test của bạn, lưu ra file .jmx. Hiểu cấu trúc cây của Test Plan là hiểu 80% cách JMeter vận hành. Từ trên xuống, một Test Plan cơ bản gồm các thành phần sau:
| Thành phần | Vai trò |
|---|---|
| Test Plan | Gốc của kịch bản; chứa mọi thứ, lưu thành file .jmx |
| Thread Group | Nhóm "người dùng ảo" — định số luồng, ramp-up, số vòng lặp |
| Sampler (vd HTTP Request) | Request thực tế gửi đến server (API, trang web) |
| Config Element (vd HTTP Request Defaults) | Cấu hình dùng chung: host, port, header mặc định |
| Listener (vd Summary Report) | Thu thập & hiển thị kết quả sau khi chạy |
Trật tự này quan trọng: Thread Group quyết định bao nhiêu người và gửi bao nhiêu lần, Sampler quyết định gửi gì, Config Element giúp khỏi lặp lại cấu hình, còn Listener giúp đọc kết quả. Một mẹo hay theo hướng dẫn JMeter chuẩn: dùng HTTP Request Defaults để khai báo host/port một lần, các HTTP Request sau chỉ cần điền đường dẫn.
Tạo Thread Group & HTTP Request đầu tiên
Giờ ta dựng bài test đầu tiên cho API GET /api/rooms của "Hệ thống đặt phòng họp". Giả sử server chạy ở localhost:8080.
- Thêm Thread Group: chuột phải vào Test Plan → Add → Threads (Users) → Thread Group. Điền ba thông số cốt lõi: - Number of Threads (users): số người dùng ảo, ví dụ
50. - Ramp-up period (seconds): thời gian để "thả" hết 50 luồng, ví dụ10— nghĩa là cứ mỗi 0,2 giây thêm 1 người dùng, tránh dồn cục. - Loop Count: mỗi luồng lặp bao nhiêu lần, ví dụ5. - Thêm HTTP Request: chuột phải vào Thread Group → Add → Sampler → HTTP Request. Điền: - Protocol:
http· Server Name or IP:localhost· Port:8080- HTTP Method:GET· Path:/api/rooms - Chạy thử: bấm nút Start (hình tam giác xanh). JMeter sẽ bắn 50 người dùng × 5 vòng = 250 request tới API.
Với thông số trên, bạn vừa tạo một kịch bản mô phỏng 50 người cùng xem danh sách phòng họp. Nếu API của bạn theo chuẩn REST, việc điền method/path sẽ rất quen — bạn có thể ôn lại ở API RESTful là gì. Để test API có tham số hay body JSON, bạn thêm ở tab Parameters / Body Data của HTTP Request.
Đọc kết quả (Listener: Summary, Aggregate)
Chạy xong mà không có Listener thì bạn chẳng thấy gì cả. Hai listener phổ biến nhất cho người mới là Summary Report và Aggregate Report — thêm bằng cách chuột phải Thread Group → Add → Listener → Summary Report / Aggregate Report. Chúng tổng hợp kết quả thành bảng số dễ đọc.
| Cột | Ý nghĩa |
|---|---|
| # Samples | Tổng số request đã gửi |
| Average | Thời gian phản hồi trung bình (ms) |
| Median | Trung vị — 50% request nhanh hơn giá trị này |
| 90% Line | 90% request phản hồi nhanh hơn mốc này (chỉ số hay dùng để đặt SLA) |
| Throughput | Số request/giây server xử lý được |
| Error % | Tỷ lệ request lỗi (không phải mã 2xx) |
Cách đọc thực chiến: đừng chỉ nhìn Average, vì một vài request chậm bất thường có thể bị "trung bình hóa" che mất. Hãy nhìn 90% Line và Error % trước. Ví dụ Average = 200 ms nghe êm, nhưng 90% Line = 3.000 ms và Error % = 8% thì hệ thống đang có vấn đề dưới tải. Muốn hiểu vì sao cùng một chỉ số lại khác nhau giữa các loại test, đọc thêm load test vs stress test.
Mẹo cho người mới
Đến đây bạn đã trả lời được jmeter là gì qua thực hành, chứ không chỉ lý thuyết. Vài điều tôi luôn dặn học viên khi mới cầm JMeter, để tránh những lỗi tốn thời gian:
- Chạy tải thật bằng non-GUI mode. GUI chỉ để dựng và debug. Khi chạy load lớn, dùng dòng lệnh:
jmeter -n -t testplan.jmx -l ketqua.jtl. Chế độ non-GUI (-n) nhẹ hơn nhiều và cho số liệu chính xác hơn. - Tắt bớt Listener khi chạy tải. Các listener kiểu "View Results Tree" rất ngốn RAM; chỉ bật khi debug, tắt đi khi đo hiệu năng thật.
- Bắt đầu nhỏ rồi tăng dần. Chạy 5–10 luồng cho chạy trơn đã, rồi mới nâng lên hàng trăm. Đừng bắn 1.000 người dùng ngay lần đầu.
- Lưu file
.jmxvà version nó. Kịch bản là tài sản; nên đưa vào Git để tái sử dụng và chia sẻ trong nhóm. - Kiểm tra assertion. Thêm Response Assertion để chắc chắn API trả đúng nội dung, không chỉ đúng thời gian — nhanh mà sai thì vô nghĩa.
Đây cũng chính là những kỹ năng được luyện sâu trong khóa Performance JMeter của IT LEARN.
Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!