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
✅ Tổng quan về Jmeter
1. Jmeter là gì?

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ó được phát triển mạnh mẽ để trở thành công cụ kiểm thử hiệu năng (performance testing).
- Đến nay, JMeter vẫn có khả năng thực hiện automation test giống như Selenium. Tuy nhiên, nó không phải là lựa chọn tối ưu cho mảng này.
👉 Lý do: Các bản phát triển sau tập trung nhiều hơn vào kiểm thử hiệu năng, nên khi muốn dùng JMeter cho automation test, chúng ta chỉ nên coi đó là tính năng bổ trợ chứ không phải chức năng chính.
b. Ví dụ minh họa:
- Nếu muốn kiểm thử hiệu năng của API → JMeter là lựa chọn số 1.
- Nhưng nếu muốn kiểm thử chức năng giao diện người dùng (UI) như click, nhập liệu, drag-drop… → Selenium hoặc Cypress sẽ 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 (yêu cầu) lên server.
- Nhận response (phản hồi) từ server.
- Ghi lại các thông số quan trọng như:
- 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 và tổng hợp các chỉ số hiệu năng (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ày N lần. Sau khi kết thúc, JMeter sẽ sinh ra báo cáo (Report) để chúng ta phân tích kết quả.
👉 Trong khóa học này, khi nói đến Performance Test, chúng ta tập trung vào việc kiểm thử hiệu năng phía server (server-side).
- Trong thực tế, có thể có rất nhiều client khác nhau: ứng dụng web, mobile, tablet…
- Nhưng server thường chỉ có một (hoặc một cụm máy chủ) để tiếp nhận và xử lý tất cả request.
- Hầu hết logic xử lí của Nghiệp vụ đều nằm ở phía server
- Khi có N client gửi N request, server phải xử lý toàn bộ những request đó đồng thời.
- Vai trò của JMeter là mô phỏng các client này và giúp chúng ta đo lường khả năng xử lý của server (thời gian phản hồi, số lượng request tối đa mà server chịu được, tỉ lệ lỗi...).
Ví dụ minh họa:
Giả sử một ứng dụng bán vé online có 1.000 người cùng đặt vé trong 1 phút.
- Mỗi người dùng gửi một request đặt vé → server nhận 1.000 request cùng lúc.
- JMeter sẽ giả lập 1.000 người dùng này, đo xem server xử lý nhanh hay chậm, có lỗi hay không.
👉 Thực chất, các công cụ test hiệu năng khác (như LoadRunner, Gatling...) cũng hoạt động theo nguyên tắc tương tự: gửi request đến server và quan sát cách server phản hồi.
4. Trọng tâm của kiểm thử hiệu năng với Jmeter
👉 Nói cách khác, 90% các bài kiểm thử hiệu năng trong thực tế đều hướng đến việc đánh giá hiệu năng của server, chứ không phải phía client.
Ví dụ minh họa:
Một hệ thống ngân hàng trực tuyến có thể có hàng chục nghìn người dùng đăng nhập và thực hiện giao dịch cùng lúc.
- Mỗi người dùng là một “client” gửi request.
- Server là trung tâm xử lý tất cả các request này.
- JMeter sẽ giúp chúng ta trả lời câu hỏi:
- Server chịu được bao nhiêu request/giây?
- Thời gian phản hồi trung bình là bao lâu?
- Có bao nhiêu request bị lỗi khi tải tăng cao?Jmeter có thể làm gì?
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
Đây là tool mà dễ cài đặt nhất hiện tại. 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.
- 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 JMeter
- Tải JMeter từ trang chủ Apache (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 3: 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.