NỘI DUNG BÀI HỌC
✅ Cấu trúc Boundary Extractor
✅ Ví dụ minh họa
📘 Boundary Extractor
1. Giới thiệu
Boundary Extractor là một Post-Processor trong Apache JMeter, dùng để trích xuất giá trị từ Response dựa trên cặp Left Boundary (LB) và Right Boundary (RB).
Nó hoạt động giống như hàm SUBSTRING: tìm phần văn bản nằm giữa LB và RB.
2. Cấu hình chính
- Left Boundary (LB): Chuỗi bắt đầu trước dữ liệu cần lấy.
- Right Boundary (RB): Chuỗi kết thúc sau dữ liệu cần lấy.
- Match No.: Chỉ định lấy kết quả thứ mấy (1 = đầu tiên, -1 = tất cả).
- Default Value: Giá trị trả về nếu không tìm thấy.
3. Ví dụ thực tế nâng cao
Ví dụ 1: Trích xuất token từ JSON Response
Response Body:
{
"status": "success",
"user": "tester01",
"roles": ["admin", "editor"],
"session": {
"token": "abc123xyz456",
"refresh": "rToken987654",
"expires": "2025-12-31T23:59:59Z"
}
}
LB = "token": "
RB = ",
Kết quả: abc123xyz456
Ví dụ 2: Trích xuất nhiều Cookie từ Response Header
HTTP/1.1 200 OK
Date: Thu, 11 Sep 2025 12:00:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Set-Cookie: SESSIONID=xyz987; Path=/; Secure; HttpOnly
Set-Cookie: PREF=lang=en; Path=/; Secure
Content-Type: text/html; charset=UTF-8
LB = "Set-Cookie: SESSIONID=" | RB = ";" → Kết quả: xyz987
LB = "Set-Cookie: PREF=lang=" | RB = ";" → Kết quả: en
Ví dụ 3: Trích xuất dữ liệu từ HTML Response
<html>
<head><title>Dashboard</title></head>
<body>
<h1>Welcome, John Doe!</h1>
<input type="hidden" name="csrf_token" value="token987xyz">
<a href="/logout?uid=5566">Logout</a>
</body>
</html>
LB = "value=\"" | RB = "\"" → Kết quả: token987xyz
LB = "uid=" | RB = "\"" → Kết quả: 5566
Ví dụ 4: Trích xuất dữ liệu từ XML Response
<Response>
<User>
<ID>U12345</ID>
<Name>Alice</Name>
<Role>Manager</Role>
</User>
<User>
<ID>U67890</ID>
<Name>Bob</Name>
<Role>Developer</Role>
</User>
</Response>
LB = "<ID>" | RB = "</ID>" | Match No. = 1 → Kết quả: U12345
LB = "<ID>" | RB = "</ID>" | Match No. = 2 → Kết quả: U67890
4. Câu hỏi trắc nghiệm
Câu 1: Với response header, nếu cần lấy giá trị của 'lang' trong PREF=lang=en, cấu hình nào đúng?
- LB = "lang=" | RB = "\""
- LB = "PREF=lang=" | RB = ";"
- LB = "PREF=" | RB = "="
- LB = "Set-Cookie:" | RB = "PREF"
Giải thích: Cần chỉ rõ 'PREF=lang=' và kết thúc tại dấu ';' để lấy đúng giá trị.
Câu 2: Nếu muốn lấy tất cả ID thì Match No. để bao nhiêu?
<Response>
<User>
<ID>U12345</ID>
<Name>Alice</Name>
<Role>Manager</Role>
</User>
<User>
<ID>U67890</ID>
<Name>Bob</Name>
<Role>Developer</Role>
</User>
</Response>
- 0
- 1
- 2
- -1
Giải thích: Match No. = -1 sẽ lấy tất cả các giá trị phù hợp.
Câu 3: Nếu LB hoặc RB không tồn tại trong response, Boundary Extractor trả về gì?
- NULL
- Giá trị mặc định (Default Value)
- 0
- Dừng test case
Giải thích: Nếu không tìm thấy, sẽ trả về Default Value (nếu có).
5. Kết luận
Boundary Extractor hữu ích trong trường hợp dữ liệu có cấu trúc rõ ràng với LB và RB xác định.
Regex Extractor linh hoạt hơn cho dữ liệu phức tạp, nhưng Boundary Extractor dễ dùng và nhanh hơn trong nhiều trường hợp.