Get in touch
or send us a question?
CONTACT

Cách xây dựng tài liệu Test Coverage – Đừng để bug trốn sau “lỗ hổng”

1. “Test Coverage” là gì mà nghe vừa quen vừa xa?

Nói dễ hiểu, Test Coverage chính là mức độ bạn test được bao nhiêu phần của sản phẩm.
Không phải “test nhiều” là tốt — mà là test đúng chỗ, đủ chỗ, và có căn cứ rõ ràng.

Ví dụ:

  • Có 10 tính năng, bạn test được 6 → coverage = 60%.
  • Nhưng nếu 4 cái còn lại toàn là “chức năng chính”, thì 60% đó… chẳng có ý nghĩa gì cả! 😅

2. Vì sao cần làm tài liệu Test Coverage?

Vì thực tế testing giống như… soi nhà tìm gián 🪳.
Không có kế hoạch, bạn chỉ quét qua vài góc sáng và tưởng nhà sạch.
Còn tài liệu Test Coverage giúp bạn biết:

  • Những khu vực nào đã được test
  • Những khu vực nào chưa được động tới
  • Và quan trọng nhất: chưa test vì lý do gì (không cần, không kịp, hay chưa ai dám? 😏)

3. Thành phần cơ bản của tài liệu Test Coverage

Một tài liệu Test Coverage không cần phải dài như tiểu thuyết, chỉ cần rõ ràng và truy vết được.
Dưới đây là khung chuẩn mà các team thực tế hay dùng:

Thành phầnMô tảVí dụ
ScopeNhững phần hệ thống được test“Module: Đăng ký, Đăng nhập, Đặt hàng”
Coverage TypeKiểu coverage bạn theo dõi (requirement, code, feature, risk…)“Requirement coverage”
Traceability MappingLiên kết giữa requirement và test case“REQ-001 → TC-12, TC-15”
Coverage StatusĐã test, chưa test, không test“REQ-001: Tested”, “REQ-004: Not covered”
Gap AnalysisMô tả vùng chưa cover và lý do“Chưa test API payment vì sandbox chưa ổn định”

4. Cách xây dựng Test Coverage – từng bước, dễ hiểu, dễ làm

🪜 Bước 1: Gom hết yêu cầu (Requirement Gathering)

Đọc BRD, Jira story, user flow, API doc — mọi nơi có chữ “phải hoạt động như thế này”.
👉 Ghi chú từng yêu cầu có thể test được.

Ví dụ:

  • REQ-001: Người dùng có thể đăng ký tài khoản bằng email
  • REQ-002: Người dùng không thể đăng ký trùng email

🪜 Bước 2: Tạo bảng Requirement ↔ Test Case Mapping

Đây là linh hồn của tài liệu coverage.
Mỗi requirement nên có ít nhất 1 test case liên kết.

📋 Ví dụ:

Requirement IDMô tảTest Case IDTrạng thái
REQ-001Đăng ký bằng emailTC-001Passed
REQ-002Không cho trùng emailTC-002Failed
REQ-003Mật khẩu yếu bị từ chốiTC-003Not run

→ Nhìn bảng là biết độ phủ test hiện tại, và chỗ nào cần ưu tiên.


🪜 Bước 3: Xác định mức độ coverage mong muốn

Không phải dự án nào cũng cần 100%.
Thực tế, bạn nên cân bằng giữa thời gian, rủi ro và ưu tiên.

🎯 Ví dụ:

  • Core payment flow → cần cover >90%.
  • Màn hình FAQ → 50% cũng đủ.

🪜 Bước 4: Cập nhật liên tục theo sprint

Test Coverage không phải file “đóng khung” một lần rồi xong.
Nó phải được update sau mỗi sprint, vì:

  • Requirement thay đổi.
  • Test case thêm/bớt.
  • Bug fix → cần test lại (retest coverage).

👉 Một tip nhỏ: dùng traceability matrix trong Jira, Zephyr, hoặc Excel pivot table để auto-update trạng thái coverage — vừa nhanh, vừa đẹp, vừa “pro”.


5. Một vài “cạm bẫy” khi làm test coverage

  • Tập trung số lượng mà quên chất lượng “100% coverage” nghe oách, nhưng nếu toàn test trivial case thì cũng vô nghĩa.
  • Không trace tới requirement thật Test case nào cũng “hay ho”, nhưng không biết đang test cho requirement nào.
  • Không cập nhật kịp khi requirement đổi Kết quả: tài liệu đẹp, nhưng “lạc nhịp” với sản phẩm thực tế.

6. Kết luận

Tài liệu Test Coverage không phải để “cho có” trong audit,
mà để giúp team hiểu rõ họ đang ở đâu trong hành trình đảm bảo chất lượng.

Một tester chuyên nghiệp không chỉ biết “test gì”,
mà còn biết “điều gì chưa được test — và vì sao”. 💡


Tóm tắt nhanh:

  • 🧭 Coverage = độ phủ kiểm thử theo yêu cầu, code hoặc risk.
  • 📊 Tài liệu coverage giúp nhìn rõ chỗ trống, không để bug trốn.
  • 🔁 Luôn cập nhật và gắn liền với requirement thật, không test “chay” theo cảm tính.

💬 Câu nói đáng nhớ:

“Tester không phải người test mọi thứ —
mà là người biết chính xác cái gì cần test, cái gì chưa, và cái gì không đáng test.” 😎


Bạn có muốn mình tạo thêm template tài liệu Test Coverage (dạng Excel hoặc Markdown) để bạn có thể áp dụng trực tiếp trong dự án thực tế không?
Mẫu này có luôn công thức tính % coverage tự động và cột “Risk Level” để team dễ ưu tiên.