1. Vì sao dùng LLM để sinh test case và dữ liệu test
Viết test case đầy đủ từ một bộ tiêu chí chấp nhận (acceptance criteria) là công việc tỉ mỉ và dễ bỏ sót: một người mệt mỏi thường chỉ nghĩ ra vài case happy path, quên mất các nhánh âm và các giá trị biên. Mô hình ngôn ngữ lớn (LLM) rất giỏi phần liệt kê cơ học này — nó có thể trong vài giây bung ra một bảng case dương, âm và biên từ cùng một mô tả yêu cầu. Với người kiểm thử, đây là công cụ tăng tốc mạnh nếu dùng đúng cách và giữ đúng ranh giới an toàn.
Nhưng phải nói rõ ngay từ đầu: LLM là trợ lý sinh nháp, không phải nguồn chân lý. Nó có thể bịa ra (hallucination) những case không tồn tại trong hệ thống, hoặc bỏ sót những case đặc thù domain mà chỉ người trong cuộc mới biết. Vì vậy quy trình đúng luôn là: grounding trên yêu cầu thật, LLM sinh nháp, con người thẩm định và bổ sung. AI làm phần rộng và nhanh; người giữ phần sâu và chịu trách nhiệm.
2. Grounding: bám vào yêu cầu thật để tránh hallucination
Hallucination là hiện tượng LLM tự tin bịa ra thông tin không có thật. Trong kiểm thử, nó biểu hiện thành những case cho tính năng không tồn tại, những thông báo lỗi sai chữ, hay những luồng nghiệp vụ tưởng tượng. Cách phòng chống hiệu quả nhất là grounding: dán chính xác acceptance criteria, mô tả trường dữ liệu, bảng trạng thái và ràng buộc thật vào prompt, rồi yêu cầu LLM chỉ sinh case dựa trên đó và đánh dấu rõ khi nó phải suy đoán.
# PROMPT có grounding — nêu rõ nguồn sự thật, cấm bịa
Bạn là kỹ sư QA. CHỈ sinh test case dựa trên các yêu cầu dưới đây.
Nếu thiếu thông tin, hãy liệt kê "GIẢ ĐỊNH" thay vì bịa.
## Acceptance Criteria (nguồn sự thật)
- Trường "Tuổi": số nguyên, hợp lệ 18..65 (bao gồm cả 18 và 65).
- Ngoài khoảng -> báo lỗi "Tuổi phải từ 18 đến 65".
- Trường bỏ trống -> báo lỗi "Vui lòng nhập tuổi".
## Yêu cầu đầu ra
Bảng Markdown: | ID | Loại (positive/negative/boundary) | Input | Kỳ vọng |
Áp dụng phân hoạch tương đương + phân tích giá trị biên.
Đánh dấu [SUY ĐOÁN] cho bất kỳ dòng nào không suy ra trực tiếp từ AC.Chú ý cụm 'nếu thiếu thông tin, hãy liệt kê GIẢ ĐỊNH thay vì bịa'. Đây là mẹo prompt quan trọng: bạn cho LLM một lối thoát trung thực, để nó bộc lộ chỗ nó không chắc thay vì lấp liếm bằng thông tin sai. Khi review, bạn xem những dòng [SUY ĐOÁN] trước tiên — đó chính là nơi rủi ro hallucination cao nhất và nơi kiến thức domain của bạn cần can thiệp.
3. Mẫu prompt sinh bảng case dương/âm/biên
Một prompt tốt có cấu trúc rõ ràng: vai trò, nguồn sự thật, kỹ thuật thiết kế test cần áp dụng, và định dạng đầu ra. Khi bạn yêu cầu cụ thể 'phân hoạch tương đương và phân tích giá trị biên', LLM không chỉ liệt kê ngẫu nhiên mà bám theo phương pháp có kỷ luật. Kết quả nên là một bảng có cột phân loại (positive/negative/boundary) để bạn dễ kiểm độ phủ và phát hiện lỗ hổng.
<!-- Đầu ra LLM sinh cho trường "Tuổi" (18..65) — người review sau -->
| ID | Loại | Input | Kỳ vọng |
|------|-----------|-------|----------------------------------------|
| T01 | positive | 18 | Chấp nhận (biên dưới) |
| T02 | positive | 42 | Chấp nhận (giá trị đại diện lớp hợp lệ) |
| T03 | positive | 65 | Chấp nhận (biên trên) |
| T04 | boundary | 17 | Lỗi "Tuổi phải từ 18 đến 65" |
| T05 | boundary | 19 | Chấp nhận (cạnh trong biên dưới) |
| T06 | boundary | 64 | Chấp nhận (cạnh trong biên trên) |
| T07 | boundary | 66 | Lỗi "Tuổi phải từ 18 đến 65" |
| T08 | negative | 0 | Lỗi "Tuổi phải từ 18 đến 65" |
| T09 | negative | -5 | Lỗi (số âm) |
| T10 | negative | (trống)| Lỗi "Vui lòng nhập tuổi" |
| T11 | negative | "abc" | Lỗi (không phải số) |
| T12 | negative | 42.5 | Lỗi (không phải số nguyên) |Bảng trên cho thấy giá trị của việc yêu cầu đúng phương pháp: các biên 17/18/19 và 64/65/66 xuất hiện đầy đủ — đúng chỗ bug thường ẩn nấp (lỗi off-by-one, dùng '<' thay vì '<='). Nếu chỉ bảo LLM 'cho tôi vài test case', bạn sẽ nhận một danh sách hời hợt thiếu biên. Prompt càng nêu rõ kỹ thuật, độ phủ càng cao mà không phình số case vô ích.
4. Phân hoạch tương đương + giá trị biên cùng AI
Phân hoạch tương đương (EP) chia miền đầu vào thành các lớp mà mọi giá trị trong cùng lớp được xử lý như nhau; ta chỉ cần một đại diện mỗi lớp. Phân tích giá trị biên (BVA) tập trung vào ranh giới giữa các lớp, nơi lỗi hay xuất hiện nhất. Hai kỹ thuật kinh điển này chính là bộ khung để chỉ đạo LLM: bạn mô tả miền đầu vào, LLM đề xuất các lớp và các biên, còn bạn kiểm rằng nó không bỏ sót lớp nào và các biên đúng inclusive/exclusive.
💬 Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!