Metamorphic testing: không biết đáp án đúng, vẫn test được
🎯 Mục tiêu học (LO AI-6.1.5 · mức K3 – Áp dụng): dùng metamorphic testing để suy ra test case cho một kịch bản cho trước.
💡 Ý cốt lõi: metamorphic testing (MT) sinh test case follow-up từ một test case gốc đã pass, dựa trên metamorphic relation (MR) — kiểm tra quan hệ giữa các output thay vì giá trị output tuyệt đối.
Metamorphic Relation (MR) là gì
MR dựa trên một thuộc tính của chức năng cần có ở đối tượng test, và mô tả một thay đổi ở input của test case sẽ phản ánh thế nào ở kết quả mong đợi của chính test case đó. Tester thường kiểm tra 3 loại mục tiêu:
| Mục tiêu | Ý nghĩa | Ví dụ |
|---|---|---|
| Consistency (nhất quán) | Output khớp nhau giữa các input liên quan. | Đổi thứ tự các câu trong một đoạn văn không nên đổi kết quả phân loại chủ đề. |
| Monotonicity (đơn điệu) | Output đổi theo một hướng nhất định khi input đổi theo hướng đó. | Model rủi ro dự đoán tuổi thọ: tăng số điếu thuốc hút mỗi ngày phải làm giảm tuổi thọ dự đoán. |
| Invariance (bất biến) | Output giữ nguyên dù input bị nhiễu nhẹ. | Xoay nhẹ một bức ảnh không nên đổi kết quả nhận diện vật thể trong ảnh. |
Khi nào nên chọn MT thay vì test dựa trên oracle truyền thống
- Không có expected output đáng tin cậy do model mờ đục (opacity) hoặc dữ liệu quá lớn để người kiểm tra thủ công.
- Hệ thống là black-box.
- Chỉ cần kiểm tra thuộc tính quan hệ (không cần giá trị tuyệt đối) là đủ để tạo niềm tin.
MT thường dựa trên một test case gốc đã pass, nhưng cũng hữu ích ngay cả khi không thể tạo expected result — ví dụ chương trình cài đặt một hàm quá phức tạp để người test tự tay làm oracle, như một số MLS phức tạp. Trong tình huống này, MT sinh ra các test case mà quan hệ giữa các output (không phải giá trị thực của chúng) được kiểm tra tính hợp lệ — nếu quan hệ đó đúng, ta có thêm niềm tin vào chương trình. MT từng được dùng để test nhận diện ảnh, công cụ tìm kiếm, tối ưu tuyến đường, và nhận diện giọng nói.
Tester rút ra MR từ kiến thức miền, yêu cầu, hoặc thuộc tính lĩnh vực (vd định luật vật lý). MR có thể được xác thực bằng review chuyên gia, chạy thử trên model tham chiếu, và kiểm tra độ bao phủ edge case.
⚠️ Giới hạn: MR sai (vd bỏ sót tương tác phức tạp giữa các biến) hoặc bộ MR chưa đầy đủ có thể dẫn đến niềm tin sai lệch (false confidence). MT phát hiện được lỗi về quan hệ nhưng không phát hiện được mọi lỗi tuyệt đối — nên cần kết hợp cùng các kỹ thuật test khác.
📝 Bẫy hay gặp
Đề hay cho một phát biểu nghe hợp lý nhưng sai — nhớ mấy chỗ gài sau:
- "MT luôn cần biết giá trị expected output tuyệt đối" → SAI: MT kiểm tra quan hệ giữa các output, đặc biệt hữu ích khi không thể tạo expected result.
- "MT phát hiện được mọi loại lỗi" → SAI: MT phát hiện lỗi về quan hệ, không phải mọi lỗi tuyệt đối — cần dùng kết hợp với kỹ thuật khác.
- "Tăng số cua thăng dự đoán tuổi thọ khi hút thuốc nhiều hơn là ví dụ của Invariance" → SAI: đây là Monotonicity (output đổi theo hướng nhất định), không phải Invariance (output giữ nguyên).
📌 Ghi nhớ
MT = test case gốc (đã pass) + MR → test case follow-up, kiểm tra quan hệ output
3 mục tiêu: Consistency · Monotonicity · Invariance
Với tester: khi không biết đâu là "đáp án đúng" cho một output ML (test oracle problem — 4.1.3), đừng bó tay — hỏi "nếu tôi đổi input theo cách X, output nên đổi (hoặc không đổi) theo cách nào?". Đó chính là cách xây một MR.
📖 Thuật ngữ Anh–Việt (mục này)
Đề thi dùng thuật ngữ tiếng Anh — nhớ đúng cụm bên trái. Bấm 🔊 để nghe từng từ, hoặc "Đọc tất cả" để nghe lần lượt Anh → (vài giây) → Việt.
| Thuật ngữ (EN) | Nghĩa & ghi nhớ nhanh |
|---|---|
| Metamorphic testing (MT) | Kiểm thử biến hình — suy test case từ quan hệ input/output |
| Metamorphic relation (MR) | Quan hệ biến hình — quy tắc mô tả thay đổi input phản ánh ở output |
| Source test case | Test case gốc (đã pass) |
| Follow-up test case | Test case suy ra từ test case gốc qua MR |
| Consistency | Tính nhất quán — output khớp nhau ở các input liên quan |
| Monotonicity | Tính đơn điệu — output đổi theo hướng nhất định |
| Invariance | Tính bất biến — output không đổi dù input bị nhiễu nhẹ |
| Model opacity | Tính mờ đục của model — khó hiểu logic bên trong |
🎯 Câu hỏi minh họa (phong cách đề CT-AI · K3)
For an image-classification model, a tester rotates a passed test image slightly and expects the classification output to remain the same. Which metamorphic testing objective is being verified?
- a) Consistency.
- b) Monotonicity.
- c) Invariance.
- d) Transferability.
Xem bản dịch tiếng Việt
Với một model phân loại ảnh, tester xoay nhẹ một ảnh test đã pass và kỳ vọng kết quả phân loại không đổi. Mục tiêu metamorphic testing nào đang được kiểm tra?
a) Consistency.
b) Monotonicity.
c) Invariance.
d) Transferability.
Xem đáp án & giải thích
✅ Đáp án đúng: c — kỳ vọng output giữ nguyên dù input bị nhiễu nhẹ (xoay ảnh) chính là Invariance.
a sai — Consistency là khớp nhau giữa các input liên quan, không phải giữ nguyên khi nhiễu.
b sai — Monotonicity là output đổi theo hướng nhất định, không phải giữ nguyên.
d sai — Transferability là khái niệm của adversarial testing (6.1.4), không phải mục tiêu MT.
Đề để tiếng Anh cho sát đề thi thật; phần giải thích để tiếng Việt cho dễ hiểu. Câu hỏi do maiqai.com tự soạn theo phong cách đề.
📎 Nguồn: Chương 6 – Kiểm thử mô hình cho hệ thống ML, mục 6.1.5 "Metamorphic Testing", trang 59–60 — ISTQB® Certified Tester AI Testing Syllabus v2.0 (© International Software Testing Qualifications Board). Nội dung biên soạn/dịch ý lại bằng tiếng Việt, không sao chép nguyên văn.