CYBERSOFT
Đăng nhập

Dùng LLM sinh test case & dữ liệu test: grounding, an toàn PII, oracle

Chuyên công nghệTMĐTAI AgentData-drivenThực tếPhỏng vấn
🗓 1 tháng trước21 phút đọc·👁 1,692 lượt xem👤 160 người đọc

Cách dùng LLM sinh bảng case dương/âm/biên và dữ liệu tổng hợp từ acceptance criteria: grounding chống hallucination, tuyệt đối không rò PII/secret, EP + BVA cùng AI, review thêm case domain, template prompt tái sử dụng và đo độ phủ theo phương pháp.

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.

Acceptance Criteria yêu cầu nghiệp vụ thật (grounding, không bịa) LLM + Prompt EP + BVA + adversarial template tái sử dụng Bảng test case positive · negative boundary · dữ liệu Con người: review · thêm case domain AI bỏ sót · chốt oracle nghiệp vụ AI: liệt kê case cơ học nhanh — luôn cần người thẩm định CẤM: dán PII / secret / dữ liệu khách thật vào prompt LLM chỉ dùng dữ liệu tổng hợp / ẩn danh
Từ acceptance criteria đến bảng test case, với ranh giới an toàn.
LLM tăng tốc phần liệt kê, không thay tư duy kiểm thử. Bạn vẫn cần hiểu phân hoạch tương đương, giá trị biên và oracle nghiệp vụ để review nháp AI sinh.

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.

text
# 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.

⚠️ Đừng để LLM 'suy ra' thông báo lỗi hay quy tắc nghiệp vụ. Nếu prompt không có wording chính xác, nó sẽ đoán — và test dựa trên chuỗi bịa sẽ luôn đỏ hoặc luôn xanh sai.

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.

md
<!-- Đầ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.

💡 Yêu cầu LLM thêm cột 'lý do chọn' cho mỗi biên. Nó buộc mô hình giải thích, giúp bạn phát hiện case bịa (lý do vô nghĩa) ngay khi đọc lướt.

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.

🔒

Nội dung bị khoá

Bạn đang xem bản xem trước. Đăng nhập để mở khoá toàn bộ bài viết và tất cả tài liệu Tester/QA.

Đã xem 25% nội dung
  • Đọc trọn vẹn mọi bài viết
  • Lưu bài & ghi chú cá nhân
  • Theo dõi tiến độ đã đọc
  • Luyện phỏng vấn, ISTQB, Mock
Đăng nhập để đọc tiếp

Chưa có mã? Lấy mã qua Fanpage / Zalo CyberSoft.

0

💬 Bình luận (0)

Bạn có thể đọc mọi bình luận. Đăng nhập để bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!