jMeter - Biểu thức chính quy
Biểu thức chính quy được sử dụng để tìm kiếm và thao tác văn bản, dựa trên các mẫu. JMeter diễn giải các dạng biểu thức chính quy hoặc các mẫu đang được sử dụng trong suốt kế hoạch kiểm tra của JMeter, bằng cách đưa vào phần mềm đối sánh mẫu Apache Jakarta ORO .
Với việc sử dụng các biểu thức chính quy, chúng tôi chắc chắn có thể tiết kiệm rất nhiều thời gian và đạt được tính linh hoạt cao hơn khi chúng tôi tạo hoặc nâng cao Kế hoạch kiểm tra. Cụm từ thông dụng cung cấp một phương pháp đơn giản để lấy thông tin từ các trang khi không thể hoặc rất khó dự đoán kết quả.
Một ví dụ sử dụng tiêu chuẩn của việc sử dụng biểu thức là lấy ID phiên từ phản hồi của máy chủ. Nếu máy chủ trả về một khóa phiên duy nhất, chúng tôi có thể dễ dàng lấy nó bằng cách sử dụng các biểu thức trong tập lệnh tải của chúng tôi.
Để sử dụng cụm từ thông dụng trong kế hoạch thử nghiệm của mình, bạn cần sử dụng Trình trích xuất cụm từ thông dụng của JMeter. Bạn có thể đặt biểu thức chính quy trong bất kỳ thành phần nào trong Kế hoạch kiểm tra.
Cần nhấn mạnh sự khác biệt giữa contains và matches, như được sử dụng trên phần tử kiểm tra Xác nhận phản hồi -
containscó nghĩa là cụm từ thông dụng phù hợp với ít nhất một số phần của mục tiêu, vì vậy 'bảng chữ cái' "chứa" "ph.b." bởi vì biểu thức chính quy khớp với chuỗi con 'phabe'.
matchescó nghĩa là biểu thức chính quy khớp với toàn bộ mục tiêu. Do đó 'bảng chữ cái' được "khớp" bởi 'al. * T'.
Giả sử bạn muốn đối sánh phần sau của trang web -
name = "file" value = "readme.txt"
Và bạn muốn giải nén readme.txt. Một biểu thức chính quy phù hợp sẽ là -
name = "file" value = "(.+?)">
Các ký tự đặc biệt ở trên là -
( và ) - những thứ này bao gồm phần của chuỗi đối sánh được trả về
. - phù hợp với bất kỳ ký tự nào
+ - một hoặc nhiều lần
? - dừng khi trận đấu đầu tiên thành công
Tạo kế hoạch kiểm tra JMeter
Hãy để chúng tôi hiểu việc sử dụng Biểu thức chính quy trong Trình trích xuất biểu thức chính quy — một Phần tử xử lý sau bằng cách viết một kế hoạch kiểm tra. Phần tử này trích xuất văn bản từ trang hiện tại bằng Biểu thức chính quy để xác định mẫu văn bản mà phần tử mong muốn tuân theo.
Đầu tiên, chúng tôi viết một trang HTML có danh sách mọi người và ID email của họ. Chúng tôi triển khai nó đến máy chủ tomcat của chúng tôi. Nội dung của html (index.html) như sau:
<html>
<head>
</head>
<body>
<table style = "border: 1px solid #000000;">
<th style = "border: 1px solid #000000;">ID</th>
<th style = "border: 1px solid #000000;">name</th>
<th style = "border: 1px solid #000000;">Email</th>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">3</td>
<td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">4</td>
<td id = "Name" style = "border: 1px solid #000000;">joe</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
</table>
</body>
</html>
Khi triển khai nó trên máy chủ tomcat, trang này sẽ giống như được hiển thị trong ảnh chụp màn hình sau:
Trong kế hoạch thử nghiệm của chúng tôi, chúng tôi sẽ chọn người ở hàng đầu tiên của bảng người được nhìn thấy trong trang danh sách người ở trên. Để nắm bắt ID của người này, trước tiên chúng ta hãy xác định mẫu mà chúng ta sẽ tìm thấy người đó ở hàng thứ hai.
Như có thể thấy trong ảnh chụp nhanh sau, ID của người thứ hai được bao quanh bởi <td id = "ID"> và </ td>, và đó là dòng dữ liệu thứ hai có dạng này. Chúng tôi có thể sử dụng điều này để khớp với mẫu chính xác mà chúng tôi muốn trích xuất thông tin. Khi chúng tôi muốn trích xuất hai phần thông tin từ trang này, ID người và tên người, các trường được xác định như sau:
Khởi động JMeter, thêm một nhóm Chủ đề Test Plan → Add→ Threads(Users)→ Thread Group.
Tiếp theo thêm Yêu cầu HTTP của trình lấy mẫu, chọn kế hoạch thử nghiệm, nhấp chuột phải Add → Sampler → HTTP Request và nhập các chi tiết như hình dưới đây -
Name - Quản lý
Server Name or IP - localhost
Port Number - 8080
Protocol - Chúng tôi sẽ để trống phần này, có nghĩa là chúng tôi muốn HTTP làm giao thức.
Path - jmeter / index.html
Tiếp theo, thêm Trình trích xuất biểu thức chính quy. Chọn Trình lấy mẫu yêu cầu HTTP (Quản lý), nhấp chuột phảiAdd → Post Processor → Regular Expression Extractor.
Bảng sau cung cấp mô tả về các trường được sử dụng trong ảnh chụp màn hình ở trên -
Sr.No | Trường & Mô tả |
---|---|
1 | Reference Name Tên của biến trong đó kiểm tra được trích xuất sẽ được lưu trữ (đổi tên). |
2 | Regular Expression Mẫu mà văn bản được trích xuất sẽ được khớp với nhau. Các nhóm văn bản sẽ được trích xuất được bao quanh bởi các ký tự '(' và ')'. Chúng tôi sử dụng '. +?' để chỉ ra một phiên bản duy nhất của văn bản được bao quanh bởi các thẻ <td ..> .. </td>. Trong ví dụ của chúng tôi, biểu thức là - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s * |
3 | Template Mỗi nhóm văn bản được trích xuất được đặt làm thành viên của biến Person, tuân theo thứ tự của mỗi nhóm mẫu bao quanh bởi '(' và ')'. Mỗi nhóm được lưu trữ dưới dạng refname_g #, trong đó refname là chuỗi bạn đã nhập làm tên tham chiếu và # là số nhóm. $ 1 $ để chỉ nhóm 1, $ 2 $ để chỉ nhóm 2, v.v. $ 0 $ dùng để chỉ bất kỳ điều gì mà toàn bộ biểu thức khớp. Trong ví dụ này, ID chúng tôi trích xuất được duy trì trong Person_g1, trong khi giá trị Tên được lưu trữ trong Person_g2. |
4 | Match No. Vì chúng tôi dự định chỉ trích xuất lần xuất hiện thứ hai của mẫu này, khớp với tình nguyện viên thứ hai, chúng tôi sử dụng giá trị 2. Giá trị 0 sẽ tạo kết hợp ngẫu nhiên, trong khi giá trị âm cần được sử dụng với ForEach Controller. |
5 | Default Nếu mục không được tìm thấy, đây sẽ là giá trị mặc định. Đây là một trường tùy chọn. Bạn có thể để trống. |
Thêm người nghe để nắm bắt kết quả của Kế hoạch kiểm tra này. Nhấp chuột phải vào Nhóm chủ đề và chọn tùy chọn Thêm → Trình nghe → Xem Cây kết quả để thêm trình nghe.
Lưu kế hoạch thử nghiệm dưới dạng reg_express_test.jmx và chạy thử nghiệm. Kết quả sẽ thành công như thể hiện trong ảnh chụp màn hình sau: