NỘI DUNG BÀI HỌC
✅ JMeter là gì ?
✅ Lịch sử phát triển
✅ Cách JMeter hoạt động
✅ Cách cài đặt JMeter
✅ Cách chạy JMeter
✅ Kiến trúc của JMeter
✅ Cấu trúc thư mục dự án Performance test
1. Giới thiệu về công cụ JMeter
Apache JMeter là một công cụ kiểm thử mã nguồn mở do Apache Software Foundation phát triển, được viết hoàn toàn bằng Java.
Ban đầu JMeter được tạo ra để hỗ trợ kiểm thử chức năng (Automation test) cho ứng dụng.
Về sau, nó được phát triển mạnh mẽ hơn trong lĩnh vực kiểm thử hiệu năng (Performance test).
Hiện nay, JMeter được sử dụng chủ yếu cho:
-
Kiểm thử hiệu năng (Performance Testing).
-
Hỗ trợ kiểm thử chức năng ở mức cơ bản (nhưng không thay thế các công cụ chuyên biệt như Selenium).
2. Lịch sử phát triển và khả năng mở rộng
Vì JMeter là mã nguồn mở (open-source), toàn bộ source code đều được công khai.
👉 Điều này có nghĩa là:
-
Bất kỳ ai cũng có thể đọc, nghiên cứu cách JMeter hoạt động.
-
Người dùng có thể tùy chỉnh (customize) để phục vụ nhu cầu riêng.
a. Lịch sử phát triển
-
Ban đầu, JMeter được xây dựng với mục đích automation test cho ứng dụng.
-
Sau này, nó phát triển mạnh để trở thành công cụ kiểm thử hiệu năng.
-
Đến nay, JMeter vẫn có khả năng automation test nhưng không phải là lựa chọn tối ưu.
👉 Lý do: Các bản phát triển sau tập trung nhiều hơn vào performance, do đó automation test chỉ là tính năng bổ trợ.
b. Ví dụ minh họa
-
Nếu muốn kiểm thử hiệu năng API → JMeter.
-
Nếu muốn kiểm thử chức năng UI (click, nhập liệu, drag-drop…) → Selenium hoặc Cypress phù hợp hơn.
3. Cách Jmeter hoạt động
Về bản chất, JMeter đóng vai trò như một client (người dùng ảo). Nó sẽ:
-
Gửi request lên server.
-
Nhận response từ server.
-
Ghi lại các thông số quan trọng:
-
Thời gian bắt đầu (start time).
-
Thời gian kết thúc (end time).
-
Thời gian phản hồi (response time).
-
Mã phản hồi (status code)…
-
-
Tính toán & tổng hợp các chỉ số: thời gian trung bình, tỷ lệ lỗi, throughput…
👉 Với N request, JMeter sẽ lặp lại quy trình N lần và sinh báo cáo (Report).
Trong khóa học này:
-
Tập trung vào kiểm thử hiệu năng phía server (server-side).
-
Thực tế có nhiều client (web, mobile…), nhưng server thường tập trung xử lý toàn bộ request.
Ví dụ minh họa:
Ứng dụng bán vé online có 1.000 người đặt vé trong 1 phút.
-
Server nhận 1.000 request cùng lúc.
-
JMeter giả lập 1.000 người dùng để đo tốc độ xử lý, lỗi, khả năng chịu tải.
👉 Nguyên tắc này cũng giống các công cụ khác (LoadRunner, Gatling…).
4. Trọng tâm của kiểm thử hiệu năng với Jmeter
👉 90% các bài kiểm thử hiệu năng thực tế tập trung vào server, không phải client.
Ví dụ minh họa:
-
Hệ thống ngân hàng có hàng chục nghìn user giao dịch cùng lúc.
-
Mỗi user gửi request.
-
Server xử lý tất cả.
-
JMeter giúp trả lời:
-
Server chịu bao nhiêu request/giây?
-
Thời gian phản hồi trung bình?
-
Bao nhiêu request lỗi khi tải cao?
-
JMeter có thể làm gì?
👉 Jmeter hỗ trợ rất nhiều protocol. Thực tế hiện nay, HTTP/HTTPS chiếm hơn 90% nhu cầu kiểm thử, vì vậy chúng ta sẽ tập trung nhiều vào phần này trong khóa học.
5. Cách cài đặt JMeter
Vì JMeter viết bằng Java nên máy cần cài Java Development Kit (JDK) trước.
Bước 1: Cài đặt Java
- Tải JDK (ví dụ: JDK 17) từ trang chủ Oracle, hoặc Microsoft.
- Cấu hình biến môi trường JAVA_HOME.
- Ví dụ: C:\Program Files\Eclipse Adoptium\jdk-17.0.16
Bước 2: Cài đặt Maven
- Vào trang chính thức: https://maven.apache.org/download.cgi
- Chọn file Binary zip archive (ví dụ
apache-maven-3.9.9-bin.zip
)
Ví dụ: C:\Program Files\apache-maven-3.9.9 - Tạo
MAVEN_HOME
= C:\Program Files\apache-maven-3.9.9 - Thêm vào path = %MAVEN_HOME%\bin
Bước 3: Cài đặt JMeter
- Tải JMeter từ trang chủ apache-jmeter-x.x.x.zip (bản zip)
- Giải nén và cấu hình biến môi trường JMETER_HOME.
- Ví dụ: C:\apache-jmeter-5.6.3\bin
Bước 4: Cài plugin manager
- Tải plugin manager từ trang chủ Installing Plugins
👉 Sau khi cài đặt xong, bạn có thể chạy JMeter bằng file jmeter.bat (Windows) hoặc jmeter.sh (Linux/Mac).
6. Cách chạy JMeter
JMeter hỗ trợ hai chế độ chạy:
a. Chế độ GUI (Graphical User Interface)
- Dùng khi thiết kế, gỡ lỗi hoặc chạy thử test plan.
- Giao diện trực quan, dễ kéo thả và cấu hình.
- Có thể xem kết quả trực tiếp bằng các Listener (Graph, Tree, Table...).
👉 Ví dụ: Khi mới xây dựng test plan, bạn nên chạy GUI để kiểm tra các bước hoạt động đúng chưa.
b. Chế độ Non-GUI (Command-line Mode)
- Dùng khi chạy kiểm thử tải thực tế trên server.
- Tiết kiệm tài nguyên hệ thống.
- Có thể tích hợp với CI/CD (Jenkins, GitLab).
c. Cú pháp lệnh
jmeter -n -t testplan.jmx -l result.jtlTrong đó:
- -n: chạy ở chế độ non-GUI
- -t: chỉ định file test plan (.jmx)
- -l: file kết quả (.jtl)
👉 Lưu ý: Khi phát triển test → dùng GUI. Khi chạy thật → dùng Non-GUI.
7. Kiến trúc của Jmeter
Một Test Plan trong JMeter gồm nhiều thành phần:
- Thread Group: Xác định số người dùng ảo, thời gian ramp-up, số vòng lặp.
- Samplers: Đại diện cho yêu cầu gửi đi (HTTP Request, JDBC Request...).
- Logic Controllers: Quyết định luồng thực thi (If, Loop, Transaction...).
- Listeners: Thu thập và hiển thị kết quả (Tree, Table, Graph...).
- Timers: Tạo độ trễ giữa các request.
- Assertions: Kiểm tra điều kiện đúng/sai (status code, response time...).
- Config Elements: Cấu hình chung (HTTP Header, CSV Data Set...).
Vị trí của Samplers và Config Elements nó sẽ thể hiện phạm vi sử dụng.
👉 Kiến trúc này giúp xây dựng kịch bản kiểm thử một cách rõ ràng và có tổ chức.
Ví dụ:
Giả sử bạn muốn mô phỏng 500 người dùng cùng đăng nhập vào website:
- Thread Group: 500 users, ramp-up 50s.
- Sampler: HTTP Request đến /login.
- Assertion: Đảm bảo response code = 200.
- Listener: Lưu kết quả ra file và vẽ biểu đồ.
👉 Kiến trúc này giúp xây dựng kịch bản kiểm thử rõ ràng, có tổ chức.