JMeter có thể tạo ra các bộ lấy mẫu yêu cầu HTTP bằng cách hoạt động như một proxy ghi cục bộ giữa trình duyệt và ứng dụng mục tiêu được ủy quyền. Các phiên bản hiện tại gọi thành phần này là Trình ghi kịch bản kiểm thử HTTP(S) . Nó ghi lại một hành trình của trình duyệt vào Bộ điều khiển ghi, sau đó kịch bản phải được làm sạch, tương quan, xác thực và thực thi như một bài kiểm thử ở cấp độ giao thức.

Chỉ kiểm tra các hệ thống mà bạn sở hữu hoặc được ủy quyền rõ ràng để đánh giá. Các bản ghi có thể chứa mật khẩu, cookie, mã thông báo và dữ liệu cá nhân. Nên sử dụng tài khoản thử nghiệm, xóa thông tin bí mật trước khi chia sẻ tệp JMX và tuân thủ giới hạn tải đã được phê duyệt.

Máy chủ proxy HTTP của JMeter là gì?

Máy ghi âm lắng nghe trên một cổng cục bộ, thường là 8888Trình duyệt gửi các yêu cầu HTTP và HTTPS đến máy chủ proxy đó, và JMeter chuyển đổi lưu lượng truy cập phù hợp thành các bộ lấy mẫu dưới bộ điều khiển đã chọn. Trong quá trình phát lại, JMeter gửi yêu cầu trực tiếp; nó không khởi chạy trình duyệt cho mỗi người dùng ảo.

Tại sao nên thu âm thay vì viết kịch bản thủ công?

  • Ghi lại thứ tự yêu cầu thực tế, chuyển hướng, biểu mẫu và API chạy ngầm.
  • Giúp phát hiện các lệnh XHR hoặc fetch dễ bị bỏ sót.
  • Tạo ra một điểm tham chiếu nhanh chóng cho hành trình người dùng phức tạp.
  • Giảm thiểu lỗi sao chép trong tiêu đề và tham số.

Việc xây dựng thủ công vẫn gọn gàng hơn đối với một API nhỏ có tài liệu đầy đủ. Việc ghi lại hữu ích khi hành vi mạng của trình duyệt chưa được hiểu rõ. Để biết thêm về thuật ngữ, hãy xem hướng dẫn về các loại proxy của chúng tôi.

Hướng dẫn cách ghi lại kịch bản trong JMeter 5.x

  1. Khởi động JMeter ở chế độ GUI để tạo kịch bản.
  2. Thêm Nhóm Luồng vào Kế hoạch Kiểm thử.
  3. Thêm Bộ điều khiển ghi (Recording Controller) vào Nhóm luồng (Thread Group).
  4. Thêm các thiết lập mặc định cho yêu cầu HTTP và trình quản lý cookie HTTP khi cần thiết.
  5. Thêm Trình ghi kịch bản kiểm thử HTTP(S) và chọn Bộ điều khiển ghi làm mục tiêu của nó.
  6. Sử dụng các mẫu bao gồm/loại trừ để hạn chế lưu lượng truy cập không liên quan.

Hướng dẫn ghi lại chính thức của Apache JMeter là tài liệu tham khảo chính thức dành riêng cho từng phiên bản.

Hãy sử dụng hồ sơ trình duyệt sạch: Các tiện ích mở rộng, đồng bộ hóa, đo từ xa và các tab không liên quan tạo ra các yêu cầu gây nhiễu.

Bước 1) Đặt máy chủ HTTP Proxy

Máy ghi âm: Chọn một cổng cục bộ chưa được sử dụng, chẳng hạn như... 8888, thiết lập bộ điều khiển mục tiêu và nhấp chuột Bắt đầu.

Cấu hình trình duyệt thử nghiệm với máy chủ proxy HTTP và HTTPS. 127.0.0.1 và cùng một cổng. Nếu trình duyệt chạy trong một máy ảo hoặc container khác, localhost sẽ tham chiếu đến môi trường đó; thay vào đó, hãy sử dụng một địa chỉ riêng tư có thể truy cập được đã được phê duyệt.

Proxy host: 127.0.0.1
Proxy port: 8888

Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$

Không nên lọc quá mạnh tay ngay từ lần đầu tiên vì API ứng dụng có thể sử dụng một tên miền phụ khác. Chỉ ghi lại một lần, kiểm tra máy chủ, sau đó tinh chỉnh các mẫu.

Bước 2) Ghi lại hoạt động của bạn

  1. Khởi động trình ghi và chỉ tin tưởng chứng chỉ tạm thời của nó trong trình duyệt thử nghiệm riêng biệt.
  2. Mở môi trường kiểm thử được ủy quyền.
  3. Thực hiện một hành trình hoàn hảo với tốc độ của con người.
  4. Ngừng ghi âm ngay lập tức sau khi hoàn tất hành động kinh doanh cuối cùng.
  5. Khôi phục cài đặt proxy mặc định của trình duyệt.

Đổi tên các bộ lấy mẫu theo hành động nghiệp vụ và nhóm các yêu cầu liên quan trong Bộ điều khiển giao dịch. Loại bỏ phân tích, quảng cáo, cập nhật trình duyệt, tiện ích trò chuyện và các tài nguyên tĩnh trùng lặp trừ khi chúng được nêu rõ trong phạm vi.

Kiểm tra kỹ lưỡng mọi bộ lấy mẫu để tìm các thông tin bí mật. Mật khẩu nên được lấy từ dữ liệu thời gian chạy được bảo vệ, trong khi việc thay đổi mã thông báo yêu cầu sự tương quan.

Bước 3) Chạy kế hoạch kiểm tra của bạn

Xác thực một người dùng và một lần lặp trước khi tăng tải. Tạm thời sử dụng View Results Tree, kiểm tra các chuyển hướng và nội dung phản hồi, đồng thời thêm các xác nhận cho kết quả nghiệp vụ mong muốn. Chỉ riêng mã HTTP 200 không chứng minh được rằng đăng nhập hoặc thanh toán đã thành công.

Threads: 1
Ramp-up: 1 second
Loop Count: 1

Sau khi gỡ lỗi, hãy loại bỏ các trình lắng nghe nặng và chạy ở chế độ không giao diện đồ họa:

jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report

Thư mục báo cáo phải là thư mục mới hoặc trống. Tăng tải dần dần và theo dõi hệ thống mục tiêu cũng như JMeter.

Bước 4) Lưu kết quả kiểm tra của bạn

Lưu kế hoạch có thể tái sử dụng dưới dạng .jmx Lưu trữ và tách riêng dữ liệu đã tạo:

  • JMX: bộ lấy mẫu, bộ điều khiển, các khẳng định, bộ hẹn giờ, biến và cấu hình.
  • JTL: Kết quả mẫu thô để phân tích.
  • Bảng điều khiển HTML: phần trăm, thông lượng, lỗi và luồng hoạt động.
  • Số liệu thống kê máy chủ: CPU, bộ nhớ, cơ sở dữ liệu, hàng đợi và dữ liệu đo từ xa của dịch vụ.

Lập phiên bản kế hoạch với các thuộc tính không bí mật và dữ liệu thử nghiệm. Ghi lại phiên bản JMeter và Java, bản dựng mục tiêu, môi trường, số lượng người dùng, giai đoạn tăng dần và thời gian thực hiện.

Không nên chạy các tác vụ nặng từ giao diện người dùng đồ họa (GUI). Các trình lắng nghe giao diện người dùng (GUI listener) tiêu tốn bộ nhớ và có thể làm sai lệch kết quả.

Ghi lại lưu lượng HTTPS và chứng chỉ

Đối với HTTPS, JMeter tạo ra một chứng chỉ tạm thời khi trình ghi bắt đầu. Chỉ nhập chứng chỉ này vào trình duyệt kiểm thử chuyên dụng, ghi lại trang web được ủy quyền, sau đó xóa nó đi.

  1. Khởi động Trình ghi kịch bản kiểm thử HTTP(S).
  2. Tìm chứng chỉ ApacheJMeterTemporaryRootCA đã được tạo.
  3. Nhập nó như một nguồn đáng tin cậy trong hồ sơ riêng biệt.
  4. Ghi lại quá trình chuyển đổi HTTPS đã được phê duyệt.
  5. Hãy gỡ bỏ chứng chỉ khi hoàn tất.

Việc ghim chứng chỉ, TLS hai chiều, trình duyệt được quản lý, ứng dụng di động và các giao thức vận chuyển mới hơn có thể ngăn chặn việc đánh chặn. Không nên làm suy yếu các biện pháp kiểm soát an ninh trong môi trường sản xuất. Hãy sử dụng bản dựng thử nghiệm, đặc tả API hoặc phương pháp thu thập dữ liệu thay thế đã được phê duyệt.

Tương quan: Biến kịch bản đã ghi âm thành bản phát lại được

ID phiên, mã thông báo CSRF, trạng thái OAuth, chữ ký yêu cầu và ID tài nguyên thay đổi giữa các lần chạy. Quá trình tương quan trích xuất một giá trị mới từ một phản hồi và thay thế nó vào các yêu cầu sau đó.

  1. Hãy tìm câu trả lời đầu tiên chứa giá trị động.
  2. Thêm trình trích xuất JSON, CSS, XPath hoặc biểu thức chính quy.
  3. Lưu kết quả vào một biến JMeter có tên.
  4. Thay thế các giá trị được mã hóa cứng sau này bằng tham chiếu biến.
  5. Báo lỗi rõ ràng khi quá trình trích xuất không tìm thấy kết quả phù hợp.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND

Later header:
X-CSRF-Token: ${csrfToken}

Việc tham số hóa cung cấp dữ liệu người dùng độc lập, thường từ tệp CSV. Việc tương quan thu thập dữ liệu do máy chủ tạo ra trong quá trình thực thi. Các kế hoạch thực tế thường cần cả hai.

Xử lý sự cố

Vấn đềNguyên nhân có thểSửa chữa
Không có yêu cầu nào được ghi nhận.Sai proxy, trình ghi đã dừng, xung đột cổng hoặc bỏ qua quy tắc.Xác nhận máy chủ và cổng, khởi động trình ghi và xóa các mục loại trừ.
Cảnh báo HTTPSGiấy phép tạm thời CA bị thiếu hoặc hết hạn.Tạo chứng chỉ ghi âm mới và chỉ nhập nó vào hồ sơ thử nghiệm.
Quá nhiều xe cộTiện ích mở rộng, dữ liệu đo từ xa, các tab khác hoặc các mô hình tổng quát.Sử dụng hồ sơ sạch và tinh chỉnh các bộ lọc bao gồm/loại trừ.
Đăng nhập lại thất bạiThiếu cookie, mã thông báo, luồng OAuth hoặc tương quanThêm trình quản lý cookie, trích xuất các giá trị động và kiểm tra các chuyển hướng.
Trình duyệt ngoại tuyến sau đóNó vẫn trỏ đến máy chủ proxy cục bộ đã dừng hoạt động.Khôi phục cài đặt tự động hoặc không sử dụng proxy.
Lỗi bộ nhớ JMeterTrình lắng nghe giao diện người dùng hoặc bộ nhớ phản hồi lớnSử dụng chế độ không có giao diện đồ họa và giới hạn dữ liệu phản hồi được lưu trữ.
Khác với trình duyệtJMeter không hiển thị hoặc thực thi JavaScript của trang.Kiểm tra các API cơ bản và sử dụng các công cụ trình duyệt để đo lường hiệu suất hiển thị.

JMeter là một công cụ đo hiệu năng giao thức. Bản thân nó không thể đo lường các sự kiện trực quan như Largest Contentful Paint (Lớp nội dung lớn nhất được vẽ).

Câu Hỏi Thường Gặp

Tên máy chủ HTTP Proxy trong JMeter đã được thay thế bằng tên nào?

Thành phần này hiện được gọi là HTTP(S) Test Script Recorder.

Tôi nên sử dụng cổng ghi âm nào?

Bất kỳ cổng cục bộ nào chưa được sử dụng đều có thể dùng được. Cổng 8888 là cổng phổ biến và trình duyệt phải sử dụng cùng giá trị đó.

JMeter có thể ghi lại lưu lượng truy cập HTTPS không?

Đúng vậy, khi trình duyệt kiểm thử độc lập tin tưởng chứng chỉ ghi tạm thời của JMeter.

Tại sao kịch bản đã ghi âm lại bị lỗi khi phát lại?

Các token động, cookie, luồng xác thực, sự khác biệt giữa các máy chủ và dữ liệu bị thiếu thường đòi hỏi sự tương quan và tham số hóa.

JMeter có thể ghi lại hoạt động của Chrome không?

Vâng. Hãy cấu hình một hồ sơ Chrome sạch để sử dụng trình ghi cục bộ của JMeter.

Tôi có nên chạy kiểm thử tải từ giao diện người dùng JMeter không?

Không. Hãy biên dịch và gỡ lỗi ở chế độ giao diện đồ họa (GUI), sau đó thực thi quá trình tải ở chế độ không có GUI.

JMeter có hoạt động giống như một trình duyệt thực thụ không?

Không. Nó gửi các yêu cầu giao thức nhưng không hiển thị HTML hoặc thực thi JavaScript của trình duyệt.

Việc ghi lại thông tin đăng nhập vào môi trường sản xuất có an toàn không?

Nên ưu tiên sử dụng tài khoản thử nghiệm và dàn dựng. Việc thu thập dữ liệu trong môi trường sản xuất yêu cầu sự cho phép rõ ràng và xử lý bí mật nghiêm ngặt.