Helpex - Trao đổi & giúp đỡ Đăng nhập

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Một thời gian tương đối ngắn đã trôi qua kể từ khi Apache JMeter ™ 4.0 được phát hành. JMeter mới giới thiệu nhiều cải tiến và tính năng hữu ích (kiểm tra "Có gì mới trong JMeter 4.0?" Để biết chi tiết). Trong bài viết này, chúng tôi sẽ tập trung vào phần tử Boundary Extractor , là một thành viên mới của gia đình JMeter Post Processors. Đặc biệt, chúng tôi sẽ trình bày cách sử dụng Trình trích xuất ranh giới và sẽ so sánh nó với Trình trích xuất biểu thức chính quy , là một trong những Trình xử lý bài đăng nổi tiếng và rất phổ biến. Ngoài ra, đừng bỏ lỡ bảng ưu và nhược điểm cuối cùng.

Dịch vụ được sử dụng trong hướng dẫn hiện tại này được tải lên kho lưu trữ GitHub có tên là Bookshelf . Để chạy dịch vụ này, chúng tôi cần .Net Core SDK 2.1 trở lên. Vui lòng tải xuống và cài đặt nó từ trang web chính thức .Net Core nếu bạn chưa có.

Sau khi sao chép dự án cục bộ, hãy mở thư mục dự án trong một công cụ dòng lệnh và chạy "dotnet run" để bắt đầu dịch vụ tương ứng. Những ai muốn biết thêm thông tin về công cụ dotnet cli có thể tham khảo thêm chi tiết tại đây .

Các DotNet chạy kết quả sẽ trông giống như thế này:

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Sau khi ứng dụng đã khởi động, chúng tôi đã sẵn sàng để bắt đầu thử nghiệm!

Boundary Extractor, như đã đề cập ở trên, là một thành phần xử lý hậu kỳ được giới thiệu trong JMeter 4.0. Khi tìm hiểu về một thành phần mới, bạn nên bắt đầu với tài liệu chính thức . Chúng ta hãy xem xét tất cả các thành phần chính của Boundary Extractor và xem nó hoạt động như thế nào.

Theo tài liệu chính thức, nó trích xuất các giá trị từ phản hồi của máy chủ bằng cách sử dụng ranh giới bên trái và bên phải. Hãy xuống phần hướng dẫn để xem - chính xác thì điều này có nghĩa là gì?

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Hai phần đầu tiên không chứa bất cứ điều gì mang tính cách mạng và thực tế là giống nhau đối với tất cả các trình trích xuất. Đầu tiên là đặt tên và mô tả của bộ giải nén. Thứ hai là để sử dụng trong các trình lấy mẫu có thể tạo ra các mẫu con như Trình lấy mẫu HTTP và Trình đọc thư.

  • Phần "Đã nộp để kiểm tra" cũng không phải là một phần mới và khá dễ hiểu. Nó cho phép bạn thiết lập phần nào của phản hồi nên được đánh giá.
  • "Tên của biến tạo ra" chỉ ra chìa khóa sẽ được sử dụng để lưu trữ các giá trị phân tích cú pháp vào vars xác định trước các biến. Có thể tìm thấy thêm chi tiết về vars trong tài liệu chính thức.
  • Trường "Ranh giới bên trái" là duy nhất cho Trình trích xuất ranh giới. Nó cho phép bạn đặt giá trị ranh giới bên trái cho chuỗi đang được xác minh.
  • "Ranh giới bên phải" thực hiện tương tự như trường trước đó nhưng từ phía bên phải.
  • "Số trận đấu" cho phép bạn đặt chỉ mục cho giá trị tìm thấy nếu nhiều giá trị được tìm thấy theo các tiêu chí đã cho. Chỉ mục bắt đầu từ 1, vì 0 là giá trị dành riêng.
  • "Giá trị mặc định" là để đặt giá trị mặc định cho biến nếu tiêu chí đã cho không tìm thấy giá trị nào.

Hãy tạo một dự án sử dụng Boundary Extractor để phân tích cú pháp phản hồi. Dịch vụ được kiểm tra sẽ là dịch vụ Bookshelf được đề cập trong đoạn trước.

1. Đầu tiên, thêm một Nhóm chủ đề.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

2. Thêm bộ lấy mẫu Yêu cầu HTTP vào Nhóm chủ đề mới được tạo.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

3. Định cấu hình Trình lấy mẫu yêu cầu HTTP để gửi yêu cầu đến dịch vụ Giá sách.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Nếu bạn chạy dịch vụ Giá sách từ GitHub mà không sửa đổi, thì cấu hình Yêu cầu HTTP sẽ như sau:

  • Tên máy chủ hoặc IP - máy chủ cục bộ
  • Số cổng - 60657
  • Đường dẫn - / api / books

Điều đó sẽ gửi một yêu cầu HTTP đến dịch vụ mà chúng tôi đang thử nghiệm.

4. Thêm Trình trích xuất ranh giới để phân tích cú pháp các giá trị từ phản hồi dịch vụ.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

5. Bây giờ chúng ta sẽ định cấu hình thành phần mà chúng ta đã thêm trong bước trước để phân tích cú pháp tác giả của cuốn sách ra khỏi phản hồi. Đây là phản hồi mong đợi từ dịch vụ Bookshelf:

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Hãy cấu hình trình giải nén để phân tích cú pháp tên tác giả và lưu trữ tên đó trong biến tác giả .

Vì dữ liệu mong đợi được bao quanh bởi tác giả của chuỗi : " " từ bên trái và ' " ' từ bên phải, chúng ta nên đặt các giá trị này làm ranh giới trái và phải trong cấu hình trình trích xuất ranh giới.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Ở đây, chúng tôi cũng đã thêm tên biến và chỉ mục đối sánh để chúng tôi có thể dễ dàng truy cập giá trị được phân tích cú pháp đầu tiên sau này.

6. Hãy đảm bảo rằng chúng ta đã thực sự phân tích cú pháp một cái gì đó từ phản hồi. Hãy truy xuất biến "tác giả" và đăng nhập vào bảng xem nhật ký.

Để làm điều đó, hãy thêm JSR223 PostProcessor.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Và thêm đoạn script sau vào phần script:

Sau đó, JSR223 PostProcessor sẽ giống như trong ảnh chụp màn hình bên dưới:

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

7. Hãy chạy thử nghiệm và đảm bảo rằng biến tác giả không trống. Mở trình xem nhật ký bằng cách nhấn Option => mục menu Trình xem nhật ký.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

8. Chạy thử nghiệm và đảm bảo rằng có tên tác giả trong nhật ký.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Hãy tổng hợp những gì đã được thực hiện trong phần này. Chúng tôi đã xây dựng một dự án thử nghiệm sử dụng Boundary Extractor để phân tích cú pháp phản hồi từ một dịch vụ. Điều có thể gây nhầm lẫn là JMeter đã có rất nhiều thành phần cho phép bạn tìm nạp dữ liệu từ một phản hồi.

Trong phần tiếp theo, chúng ta sẽ so sánh Boundary Extractor với các thành phần trích xuất giá trị được cho là mạnh mẽ nhất - Regular Expression Extractor.

Phần này hoàn toàn không phải là mô tả đầy đủ và toàn diện về Trình trích xuất biểu thức chính quy. Có một bài viết khác dành riêng cho chính Trình trích xuất biểu thức chính quy.

Phần này chỉ là sự so sánh giữa Trình trích xuất ranh giới và Trình trích xuất biểu thức chính quy. Để bắt đầu so sánh, hãy xem Trình trích xuất biểu thức chính quy hoạt động như thế nào trong cùng một kịch bản như trước. Sau đó, chúng tôi sẽ so sánh mã nguồn, KPI và kết thúc với danh sách ưu và nhược điểm của từng cái.

Chạy trình trích xuất cụm từ thông dụng

1. Hãy thêm một Trình trích xuất biểu thức chính quy vào dự án mà chúng ta đã tạo trước đó.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

2. Trình trích xuất biểu thức chính quy được cấu hình đầy đủ cho thử nghiệm này, được định cấu hình để chạy cùng một kịch bản mà chúng tôi đã chạy với Trình trích xuất biên giới, sẽ giống như trong ảnh chụp màn hình bên dưới.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Như đã hứa trước đó, chúng tôi sẽ không đi vào chi tiết về cách bất kỳ giá trị nào trong số này hoạt động. Điều đáng nói duy nhất ở đây là kết quả sẽ được phân tích cú pháp với biểu thức chính quy " author": "([\ w] *) " và kết quả sẽ được lưu trữ vào biến author như trước đây.

Hãy tạm thời vô hiệu hóa thành phần Boundary Extractor và đảm bảo rằng trình trích xuất biểu thức chính quy hoạt động như dự kiến.

Sau khi chạy thử nghiệm, cửa sổ nhật ký sẽ chứa tên tác giả được lấy từ phản hồi.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Như chúng tôi đã phát hiện ra, Trình trích xuất ranh giới và Trình trích xuất biểu thức chính quy có thể giải quyết các vấn đề tương tự. Sự khác biệt của chúng sau đó là gì?

Hãy cùng tìm hiểu sâu hơn để tìm ra câu trả lời. Sâu bao nhiêu? Đối với mã nguồn!

So sánh mã nguồn của trình trích xuất biểu thức ranh giới và biểu thức chính quy

JMeter là một dự án mã nguồn mở, vì vậy có thể tải xuống mã nguồn và xem bên trong các trình giải nén mà chúng tôi đang so sánh. Ở đây, mã từ máy nhân bản GitHub của dự án JMeter đã được sử dụng. Vì vậy, chúng ta hãy nhìn vào bên trong.

Con ngựa làm việc của Boundary Extractor là phương thức String.indexOf. Mặt khác, Trình trích xuất biểu thức chính quy sử dụng lớp Perl5Matcher . Có thể dễ dàng tìm thấy nghiên cứu trên mạng chỉ ra rằng String.indexOf nhanh hơn nhiều so với các biểu thức chính quy. Mặt khác, indexOf không hỗ trợ tìm kiếm theo mẫu. Nếu một bài kiểm tra yêu cầu tìm kiếm với một mẫu phức tạp, thì Bộ trích xuất biểu thức chính quy sẽ là thành phần được lựa chọn.

So sánh KPI của Trình trích xuất ranh giới và Trình trích xuất biểu thức chính quy

Trước khi tiếp tục, chúng ta thực sự có thể thử thực hiện một so sánh sơ bộ giữa Bộ trích xuất Boundary và Regular Expression. JMeter có thành phần Báo cáo tổng hợp cung cấp các số liệu kiểm tra khác nhau như thời gian xử lý tối thiểu, thời gian trung bình, v.v. Hãy sử dụng nó để đo sự khác biệt giữa các thành phần được thử nghiệm.

Thêm thành phần Báo cáo tổng hợp vào Nhóm chủ đề thử nghiệm.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Đặt số lượng người dùng là 100, để gửi nhiều yêu cầu song song đến dịch vụ cùng một lúc.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Vô hiệu hóa Trình trích xuất ranh giới khỏi dự án thử nghiệm và bật Trình trích xuất biểu thức chính quy.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeterTrình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Hãy xem thành phần báo cáo tổng hợp. Trong hệ thống của tôi, các con số ít nhiều gần với những gì trong ảnh chụp màn hình bên dưới.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Bây giờ, hãy bật Trình trích xuất ranh giới và tắt Trình trích xuất biểu thức chính quy.

Xóa cửa sổ báo cáo tổng hợp, chạy thử nghiệm và kiểm tra báo cáo. Bây giờ hình ảnh là một chút khác nhau.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Mặc dù kỹ thuật so sánh được sử dụng không hoàn toàn chính xác, nhưng nhiều chu kỳ chạy cho thấy rằng Boundary Extractor nhanh hơn so với Regular Expression Extractor.

Vì vậy, nếu để đưa những gì đã nói ở trên vào danh sách ưu / nhược điểm, chúng ta sẽ có hình ảnh sau:

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Nếu các bài kiểm tra tải của bạn bao gồm giải nén và bạn cần chia tỷ lệ chúng hoặc nếu bạn muốn chia sẻ kết quả kiểm tra của mình với người quản lý, bạn có thể muốn xem xét việc chạy thử nghiệm của mình trong BlazeMeter .

Sau khi tạo tệp JMX, hãy tải tệp đó lên BlazeMeter và chạy các bài kiểm tra của bạn. Với BlazeMeter, bạn sẽ có thể cộng tác trong các bài kiểm tra và báo cáo của mình với các thành viên trong nhóm và người quản lý, mở rộng quy mô đến nhiều người dùng hơn từ nhiều vị trí địa lý hơn và nhận các báo cáo nâng cao.

Trình trích xuất ranh giới so với Trình trích xuất biểu thức chính quy trong JMeter

Bài đăng trên blog này đã chứng minh hoạt động của Boundary Extractor, một thành phần xử lý hậu kỳ mới được giới thiệu trong JMeter 4.0. Ngoài ra, một so sánh cơ bản của Boundary Extractor với Regular Expression Extractor đã được thực hiện.

Tôi hy vọng điều này sẽ hữu ích vào lần tới khi bạn đang băn khoăn không biết chọn trình trích xuất nào để phân tích kết quả kiểm tra.

3 hữu ích 0 bình luận 8.0k xem chia sẻ

Có thể bạn quan tâm

loading