NỘI DUNG BÀI HỌC
✅ JMeter HTTP(S) Test Script Recorder
✅ Proxy Settings
✅ Correlation, Parameterization, Think Time, Transaction Controller
1. Mục tiêu bài học
Sau phần này, học viên sẽ có thể:
-
Hiểu khái niệm recording và proxy trong JMeter.
-
Biết cách cấu hình HTTP(S) Test Script Recorder để ghi thao tác web.
-
Cấu hình proxy trên trình duyệt và xử lý HTTPS certificate.
-
Hiểu cách JMeter hoạt động như một proxy server.
-
Biết tinh chỉnh script sau khi ghi: parameterization, correlation, think time.
-
Xử lý các lỗi thường gặp khi ghi script.
2. Khái niệm về proxy
1. Proxy là gì?
Proxy (máy chủ trung gian) là một máy chủ nằm giữa Client (trình duyệt) và Server (ứng dụng web).
Nó có nhiệm vụ chuyển tiếp yêu cầu (request) từ client đến server và trả lại phản hồi (response) ngược lại.
🔸 Mô hình hoạt động:
🔸 Vai trò:
-
Giúp theo dõi, ghi lại, hoặc lọc request.
-
Che giấu IP thật của client (trong các hệ thống an toàn).
-
Trong JMeter: phục vụ mục đích ghi lại luồng request thực tế của người dùng.
3. Jmeter proxy
🔹 Cơ chế hoạt động:
-
Khi bạn nhấn Start trong
HTTP(S) Test Script Recorder
, JMeter:-
Khởi tạo proxy server nội bộ tại
localhost:8888
. -
Lắng nghe mọi request từ trình duyệt gửi đến.
-
-
Trình duyệt được cấu hình để gửi tất cả request qua JMeter Proxy.
-
Khi bạn thao tác (login, search, logout,…):
-
Request đi qua JMeter → được ghi lại dưới dạng HTTP Sampler trong Thread Group.
-
Response từ server cũng đi qua JMeter → JMeter trả lại cho trình duyệt.
-
🔸 Sơ đồ minh họa:
🔹 Đối với HTTPS:
-
Vì dữ liệu HTTPS được mã hóa, JMeter sẽ tạo chứng chỉ tạm (CA) để giải mã request/response.
-
Chứng chỉ nằm tại:
-
Bạn cần import chứng chỉ này vào trình duyệt để cho phép ghi HTTPS mà không bị lỗi bảo mật.
4. Cấu trúc script trong recording
Ví dụ cấu trúc sau khi ghi:
5. Thực hành
🪜 Bước 1: Tạo cấu trúc cơ bản
-
Mở JMeter
-
Thêm Thread Group:
Add → Threads → Thread Group
-
Thêm các thành phần hỗ trợ:
-
HTTP Request Defaults (cấu hình domain)
-
HTTP Cookie Manager
-
HTTP Header Manager
-
🪜 Bước 2: Thêm HTTP(S) Test Script Recorder
-
Mở tab WorkBench
-
Add → Non-Test Elements → HTTP(S) Test Script Recorder
-
Cấu hình:
-
Port: 8888
-
Target Controller: chọn nơi lưu các request (thường là Thread Group hoặc Recording Controller)
-
URL Patterns to Exclude:
(.*\.png|.*\.css|.*\.js|.*\.jpg)
để bỏ các request tài nguyên không cần thiết
-
🪜 Bước 3: Cấu hình Proxy trong trình duyệt
-
Mở trình duyệt (Chrome/Firefox)
-
Vào phần Network Proxy Settings
-
HTTP Proxy:
localhost
-
Port:
8888
-
-
Tắt cache để đảm bảo ghi được mọi request.
🪜 Bước 4: Xử lý HTTPS (nếu có)
-
Trong JMeter → nhấn Start trong Recorder
→ sinh fileApacheJMeterTemporaryRootCA.crt
-
Mở Chrome:
-
Import chứng chỉ trên vào Trusted Root Certification Authorities.
🪜 Bước 5: Bắt đầu ghi (Record)
-
Nhấn Start trong Recorder
-
Mở trình duyệt và thao tác trên ứng dụng:
-
Đăng nhập
-
Tìm kiếm sản phẩm
-
Xem chi tiết
-
Đăng xuất
-
-
Sau khi hoàn tất → nhấn Stop trong JMeter.
-
Toàn bộ request sẽ xuất hiện trong Thread Group.
6. Tinh chỉnh test script
Mục tiêu | Công cụ / Cách làm |
---|---|
Xóa request không cần | Chọn request ảnh, CSS, JS → Delete |
Gom nhóm hành động | Dùng Transaction Controller (Login, Search, Logout) |
Biến hóa dữ liệu (Parameterization) | Dùng CSV Data Set Config |
Xử lý giá trị động (Correlation) | Dùng Regular Expression Extractor hoặc JSON Extractor |
Thêm thời gian chờ người dùng (Think Time) | Dùng Constant Timer hoặc Gaussian Random Timer |
7. Bài tập thực hành
Kịch bản: Ghi lại thao tác Đăng nhập → Tìm kiếm → Đăng xuất
-
Ghi lại thao tác thật trên website demo.
-
Xóa các request tài nguyên phụ.
-
Thêm
CSV Data Set Config
chứa danh sách user/password. -
Thêm
Transaction Controller
cho từng hành động. -
Chạy lại script với 5 users, 2 vòng lặp.
8. Kiểm tra và debug script
-
Dùng View Results Tree để xem chi tiết request/response.
-
Dùng Debug Sampler để in giá trị biến.
-
Kiểm tra lỗi thường gặp:
-
403/401 → Thiếu token hoặc session
-
404 → Sai đường dẫn
-
500 → Lỗi server do dữ liệu test không hợp lệ
-
9. Các lỗi thường gặp và cách khắc phục
Lỗi | Nguyên nhân | Cách xử lý |
---|---|---|
Không ghi được request | Proxy sai port hoặc chưa cấu hình trong browser | Kiểm tra lại cổng 8888 và proxy browser |
Lỗi HTTPS “Untrusted” | Chưa import CA của JMeter | Import ApacheJMeterTemporaryRootCA.crt |
Request chứa ảnh, CSS, JS | Không lọc khi ghi | Dùng “URL Patterns to Exclude” |
Không lưu session | Thiếu Cookie Manager | Thêm HTTP Cookie Manager |
CSRF token sai | Ứng dụng có giá trị động | Thêm Extractor để lấy token từ response |
10. Bestpractice
-
Dùng Recording Template (File → Templates → Recording) để tạo cấu trúc mẫu.
-
Dùng BlazeMeter Chrome Extension nếu không muốn cấu hình proxy thủ công.
-
Chia nhỏ luồng test (modular recording) → dễ quản lý.
-
Dùng cURL → Import cURL vào JMeter khi không thể ghi bằng proxy.
11. Tổng kết
Kiến thức | Đạt được |
---|---|
Hiểu Proxy là gì | ✅ |
Biết JMeter hoạt động như proxy | ✅ |
Cấu hình Recorder và Browser | ✅ |
Ghi và tinh chỉnh test script | ✅ |
Debug và khắc phục lỗi ghi | ✅ |
12. Tài liệu và công cụ tham khảo
-
Trang chủ Apache JMeter: https://jmeter.apache.org
-
JMeter Recording Template:
File → Templates → Recording
-
Video hướng dẫn: BlazeMeter Academy – JMeter Recording
-
Website demo khuyến nghị:
-
https://demo.testfire.net
-
https://the-internet.herokuapp.com
-
13. Kết luận
Phần “Recording Test Script” là bước khởi đầu quan trọng nhất trong việc xây dựng bài kiểm thử hiệu năng.
Hiểu rõ cách JMeter hoạt động như một proxy, cách cấu hình và xử lý dữ liệu động giúp tester:
-
Ghi đúng luồng nghiệp vụ thực tế.
-
Tiết kiệm thời gian thiết kế test.
-
Đảm bảo script chạy ổn định trong load test quy mô lớn.