Tất tần tật về HTTP Cache Manger, HTTP Cookie Manager, HTTP Authorization Manager trong JMeter

Tổng quan về HTTP Cache Manger, HTTP Cookie Manager, HTTP Authorization Manager trong JMeter


Như bạn đã biết JMeter là một trong những bộ công cụ mã nguồn mở hỗ trợ load testing, perfomance testing,v.v. Bạn có thể tìm hiểu thêm tại bài viết này nếu là lần đầu tiếp cận với JMeter. Mặc dù Jmeter không phải là một trình duyệt web, nhưng nó cung cấp các cấu hình để tái tạo hành vi duyệt thực tế. 
Sau đây tôi và bạn sẽ cùng tìm hiểu về 3 cấu hình, 3 trong những tính năng quan trọng nhất của Jmeter là HTTP Cache Manger, HTTP Cookie Manager và HTTP Authorization Manager.

HTTP-Manager-in-jmeter


HTTP Cache Manager

Trước hết, chúng ta cần phải hiểu được caching là gì? Nguyên tắc caching của browser như nào?

Browser Cache là gì?

Khi user sử dụng trình duyệt để truy cập 1 trang web bất kỳ, trình truyền sẽ tải về các tài nguyên của trang web đó: hình ảnh, font, files,... Có một số tài nguyên như font chữ, icon web,... đây là những loại dữ liệu rất ít khi cập nhật, nhưng mỗi lần truy cập vào trang web ta lại phải gửi request để load lại nó. Chính vì vậy, hầu hết các website hiện nay đều tận dụng tối đa bộ nhớ đệm của trình duyệt để lưu lại những dữ liệu này để tái sử dụng cho lần truy cập tiếp theo (người ta gọi đó là cơ chế caching). Khi đến một thời gian được chỉ định, các dữ liệu này sẽ được xoá đi hoặc cập nhật mới.

Vậy bộ nhớ đệm của trình duyệt ảnh hưởng thế nào đến hiệu năng của website? Tại sao khi testing ta phải quan tâm đến nó?

Bộ đệm trình duyệt giúp giảm tải cho server, giúp server phục vụ được nhiều request khác, các request được xử lý nhanh hơn vì giảm thời gian chờ. Với các dữ liệu được lưu trên bộ nhớ đệm, khi người dùng truy cập vào trang web, trình duyệt sẽ lấy từ bộ nhớ đệm ra, thay vì gửi yêu cầu lên webserver, chờ server xử lý và gửi kết quả về.

Hãy hình dung một chút, nếu trước đó chúng ta cần phải gửi 1000 request, thì bây giờ do sẽ có một số client lấy data từ bộ nhớ đệm ra nên số request giờ sẽ giảm xuống chỉ khoảng 600-700 request.

Việc server xử phải xử lý ít request hơn thì sẽ giảm tải số lượng task queue, việc xử lý sẽ nhanh hơn, trong cùng 1 khoảng thời gian sẽ phục vụ được nhiều người dùng hơn.

Bởi lẽ các trình duyệt hiện đại hiện nay hầu hết đều mặc định hỗ trợ caching, nên việc mô phỏng nó sẽ làm cho test plan của chúng ta sẽ có kết quả sát và tối ưu nhất.

Làm sao để cấu hình HTTP cache manager trên JMeter


Jmeter sẽ không tải nội dung tĩnh trừ khi nó được chỉ định để làm như vậy. Nếu bạn đã chọn tùy chọn Retrieve All Embedded Resources, Jmeter sẽ tải tất cả các tệp tĩnh (như HTML, CSS, js, hình ảnh, v.v.) trong khi thực thi. Cache Manager sẽ lưu tất cả tệp tin tĩnh và không tải lại từ server cho đến khi được sửa lại. Khá là đơn giản đúng không. Bây giờ chúng ta sẽ thêm HTTP Cache Manager và hiểu về các thuộc tính của nó nhé.

  • Chọn test plan của bạn và click chuột phải để mở danh sách lựa chọn
  • Chọn Add -> Config Element -> HTTP Cache Manager


cau-hinh-jmeter-http-cache-manager-1

Tại đây một cửa sổ sẽ hiện ra. Hãy cấu hình những gì bạn cần:

  • Name: Đặt tên cho file của bạn
  • Comments: Để đưa ra những bình luận tùy ý (nếu có)
  • Clear cache each iteration: Nếu tùy chọn này được chọn thì bộ đệm sẽ bị xóa khi bắt đầu 1 thread.
  • Use Thread Group configuration to control cache clearing: Tùy chọn này cung cấp khả năng định cấu hình xem lần lặp mới là với người dùng mới hay với cùng một người dùng. Nó được ánh xạ với tùy chọn Cùng một người dùng trên mỗi lần lặp Thread Group.
  • Use Cache Control/Expires header when processing GET requests: Nếu tùy chọn này được chọn thì giá trị Kiểm soát bộ đệm/Hết hạn sẽ được chọn theo thời gian hiện tại. Nếu yêu cầu là yêu cầu GET và dấu thời gian ở trong tương lai thì bộ lấy mẫu sẽ trả về ngay lập tức mà không yêu cầu URL từ máy chủ từ xa. Điều này nhằm mục đích mô phỏng hành vi của trình duyệt. Đơn giản là tôi có thể nói rằng nếu tệp/thành phần được yêu cầu không thay đổi kể từ khi nó được lưu vào bộ đệm, thì phần nội dung phản hồi sẽ trống và nó sẽ được lấy từ bộ đệm.
  • Max Number of elements in cache: Theo mặc định, giá trị được đặt thành 5000 cho biết trình quản lý bộ đệm sẽ lưu trữ 5000 mục trong bộ đệm. Bạn càng tăng giá trị này thì bộ nhớ sẽ càng bị tiêu tốn nhiều hơn và JMeter có thể đưa ra ngoại lệ "hết bộ nhớ".


cau-hinh-jmeter-http-cache-manager-2


Theo định nghĩa, Cookie là các tệp văn bản được lưu trữ trên máy tính của khách hàng và chúng được lưu giữ cho nhiều mục đích theo dõi thông tin khác nhau. Nói chung, một cookie được thêm vào phản hồi từ servlet và nó được lưu trong bộ đệm của trình duyệt. Sau đó, nếu người dùng gửi yêu cầu, cookie sẽ được thêm vào yêu cầu theo mặc định. Do đó, máy chủ nhận ra người dùng là người dùng cũ. Đó là lý do tại sao tập lệnh được ghi của ứng dụng bảo mật không thành công trong quá trình lặp nếu bạn không xử lý cookie bằng JMeter – Trình quản lý cookie HTTP.

Cookie được xử lý trong JMeter bằng HTTP Cookie Manager. Sử dụng phần tử cấu hình này, bạn có thể mô phỏng các hoạt động của trình duyệt. Trình quản lý cookie HTTP hoạt động theo hai cách: 
  • Stores and sends: Nếu yêu cầu HTTP và phản hồi chứa cookie thì Trình quản lý cookie sẽ tự động lưu trữ cookie đó và sẽ sử dụng cookie đó cho tất cả các yêu cầu trong tương lai tới trang web cụ thể đó. Bằng cách này, nó mô phỏng trình duyệt thực. Mỗi luồng JMeter có “vùng lưu trữ cookie” riêng. Ngoài ra, một điều hay nữa trong JMeter là bạn có thể lưu trữ các Cookie đã nhận trong một biến luồng JMeter. Để lưu cookie dưới dạng biến, hãy xác định thuộc tính “CookieManager.save.cookies=true”. Để thực hành tốt, bạn có thể cung cấp tên cookie có tiền tố “COOKIE_” trước khi chúng được lưu trữ (điều này tránh việc vô tình làm hỏng các biến cục bộ). Để hoàn nguyên về hành vi ban đầu, hãy xác định thuộc tính “CookieManager.name.prefix= ” (một hoặc nhiều khoảng trắng). Nếu được bật, giá trị của cookie có tên TEST có thể được gọi là ${COOKIE_TEST}. 
  • Add Manually: Bạn có thể thêm cookie vào Cookie Manager. Tuy nhiên, nếu bạn làm điều này, cookie sẽ được chia sẻ bởi tất cả các luồng JMeter.
Cookie Manager Properties: JJMeter cho phép thay đổi hành vi/cấu hình mặc định của trình quản lý cookie bằng cách thay đổi giá trị thuộc tính của nó. Ví dụ: 
  • save.cookies=true/false (đặt nó thành true nếu bạn muốn giữ cookie dưới dạng biến)
  • check.cookies=true/false (đặt thành sai nếu bạn muốn lưu trữ cookie tên miền chéo và có thể sử dụng chúng sau này) 
  • name.prefix=true/false 
  • delete_null_cookies=true/false
Thêm HTTP Cookie Manager vào JMeter
  • Chọn test plan của bạn và click chuột phải để mở danh sách lựa chọn
  • Chọn Add -> Config Element -> HTTP Cookie Manager

cau-hinh-jmeter-http-cookie-manager-1

Một bảng cấu hình chi tiết được hiện ra:

cau-hinh-jmeter-http-cookie-manager-2



  • Name: Để cung cấp tên thành phần 
  • Comments: Để đưa ra những bình luận tùy ý (nếu có) 
  • Clear cookies each iteration: Nếu tùy chọn này được chọn thì cookie sẽ bị xóa khi bắt đầu chuỗi. Mọi cookie được xác định trong GUI sẽ không bị xóa. Sử dụng cấu hình Nhóm luồng để kiểm soát việc xóa cookie: Tùy chọn này cung cấp khả năng định cấu hình xem lần lặp lại mới với người dùng mới hay với cùng một người dùng. Nó được ánh xạ với tùy chọn Same user on each iteration trong Thread Group. 
  • Cookie Policy: Cookie Policy sẽ được sử dụng để quản lý cookie và các tùy chọn là: 
    • standard
    • standard-strict
    • ignoreCookies
    • netscape
    • default
    • rfc2109
    • rfc2965
    • best-match
    • compatibility
  • User-Defined Cookie: Tùy chọn này được sử dụng để thêm cookie theo cách thủ công. Điều này mang lại cho bạn cơ hội sử dụng các cookie được mã hóa cứng sẽ được tất cả các luồng sử dụng trong quá trình thực hiện thử nghiệm. Bạn có thể thêm giá trị của ‘Name’, ‘Value’, ‘Domain’, ‘Path’ and ‘Secure’.

HTTP Authorization Manager

HTTP Authorization Manager được sử dụng để xử lý cửa sổ bật lên xác thực trình duyệt trong tập lệnh JMeter. Nhiều khi bạn đã thấy khi tải xuống tệp từ máy chủ FTP, cửa sổ bật lên 'gatekeeper' xuất hiện như hiển thị bên dưới:
authorization-image

Cửa sổ bật lên này được trình duyệt tạo ra khi máy chủ yêu cầu tên người dùng/mật khẩu. Khung sẽ khác nhau tùy theo trình duyệt (ví dụ: Mozilla Firefox, Apple Safari hoặc Microsoft Internet Explorer), nhưng bất kể, cần phải có tên người dùng/mật khẩu để truy cập một số tài nguyên cơ bản. 
Đó là nguồn gốc của thuật ngữ 'HTTP Authorization' và bạn phải xử lý vấn đề này bằng cách sử dụng 'HTTP Authorization Manager'. Trình quản lý ủy quyền cho phép bạn chỉ định một hoặc nhiều thông tin đăng nhập của người dùng cho các trang web bị hạn chế sử dụng xác thực máy chủ. 

Lưu ý: Các tiêu đề 'HTTP Authorization Manager không được hiển thị trong Trình xử lý cây xem kết quả nên chúng tôi sẽ không thể kiểm tra giá trị của chúng từ tập lệnh kiểm tra.

Thêm HTTP Authorization Manager vào JMeter
  • Chọn test plan của bạn và click chuột phải để mở danh sách lựa chọn
  • Chọn Add -> Config Element -> HTTP Manager Manager

Name: Để cung cấp tên thành phần

Comments: Để đưa ra những bình luận tùy ý (nếu có)

Clear auth on each iteration: Tùy chọn này được sử dụng bởi xác thực Kerberos authentication. Nếu được chọn, xác thực sẽ được thực hiện trên mỗi lần lặp của vòng lặp Nhóm luồng chính ngay cả khi nó đã được thực hiện ở vòng lặp trước đó. Điều này thường hữu ích nếu mỗi lần lặp lại nhóm luồng chính thể hiện hành vi của một Người dùng ảo.

Sử dụng cấu hình Nhóm luồng để kiểm soát việc xóa: Tùy chọn này cung cấp khả năng định cấu hình xem lần lặp mới có với người dùng mới hay với cùng một người dùng hay không. Nó được ánh xạ với tùy chọn 'Cùng một người dùng trên mỗi lần lặp' trong thread group.

Username: Tên người dùng để cung cấp cho ủy quyền. 

Password: Mật khẩu để cung cấp cho việc ủy ​​quyền. 

Domain: Miền sử dụng cho NTLM.

Realm: Vương quốc được sử dụng cho NTLM. Vương quốc chỉ áp dụng cho bộ lấy mẫu HttpClient.

Mechanism: Với kiểu xác thực cần thực hiện. JMeter có thể thực hiện các loại xác thực khác nhau dựa trên Bộ lấy mẫu http đã sử dụng:

  1. Java
    1. BASIC
  2. HttpClient 3.1
    1. BASIC
    2. DIGEST
  3. HttpClient 4
    1. BASIC
    2. DIGEST
    3. KERBEROS
Tất tần tật về HTTP Cache Manger, HTTP Cookie Manager, HTTP Authorization Manager trong JMeter Tất tần tật về HTTP Cache Manger, HTTP Cookie Manager, HTTP Authorization Manager trong JMeter Reviewed by David on tháng 9 28, 2024 Rating: 5

Không có nhận xét nào:

Được tạo bởi Blogger.