·

Tiếng Việt: Defining test scope, entry/exit criteria

Defining test scope, entry/exit criteria

Một trong những sai lầm phổ biến nhất của QA Engineer không phải là test thiếu case, mà là test sai thứ — dành ba ngày để viết 40 test case cho một tính năng phụ, trong khi luồng thanh toán chính chỉ được smoke test qua loa. Gốc rễ của vấn đề này thường không nằm ở kỹ năng viết test case, mà ở việc thiếu một bản định nghĩa scope (phạm vi kiểm thử) rõ ràng ngay từ đầu sprint hoặc release.

Bài này sẽ đi sâu vào bốn kỹ năng nền tảng của test strategy: xác định scope, thiết lập entry/exit criteria (điều kiện bắt đầu/kết thúc), map feature vào đúng test level, và document lại toàn bộ quyết định để cả team — và cả auditor sau này — đều hiểu tại sao QA quyết định test như vậy. Với mỗi bước, chúng ta sẽ dùng AI (thường là LLM qua chatbot hoặc AI coding agent) như một trợ lý phân tích và soạn thảo, chứ không phải để AI tự quyết định thay QA.

Làm Sao Xác Định Phạm Vi In-Scope Và Out-Of-Scope Cho Sprint Hoặc Release Bằng AI?

Scope definition (định nghĩa phạm vi kiểm thử) là hoạt động trả lời câu hỏi: "Trong sprint/release này, QA sẽ test cái gì, không test cái gì, và vì sao?". Nghe đơn giản nhưng phần lớn team bỏ qua bước này hoặc làm nó một cách hời hợt — chỉ liệt kê tên feature mà không nói rõ ranh giới.

Scope Definition Cần Bao Gồm Những Gì

Một bản scope definition chất lượng phải trả lời được ít nhất 6 câu hỏi sau, không chỉ là danh sách feature:

  1. In-scope features/changes: Những feature, bug fix, hoặc thay đổi kỹ thuật nào sẽ được test trong phạm vi này (ví dụ: "Checkout flow — thêm phương thức thanh toán ví điện tử").
  2. Out-of-scope items: Những gì cố ý KHÔNG test, và lý do (ví dụ: "Không test lại toàn bộ luồng đăng nhập vì không có thay đổi liên quan").
  3. Environments covered: Test trên staging, UAT, hay cả production (canary — triển khai giới hạn trên một phần traffic thật để kiểm tra trước khi rollout toàn bộ)? Trên thiết bị/browser nào?
  4. Test types included: Functional, regression, performance, security, accessibility... loại nào nằm trong scope lần này.
  5. Data & integration boundaries: Có test với third-party integration thật hay chỉ mock? Data nào được dùng (dữ liệu thật đã ẩn danh, hay dữ liệu sinh bằng AI)?
  6. Assumptions & dependencies: Những giả định QA đưa ra (ví dụ: "Giả định API backend đã được deploy lên staging trước ngày X").

Nếu thiếu bất kỳ mục nào trong 6 mục trên, sẽ luôn có một bên (dev, PM, hoặc stakeholder) hiểu sai về những gì QA đã cam kết kiểm tra — và đó chính là nguồn gốc của các cuộc tranh luận "tại sao bug này không bị bắt" sau khi release.

Mẹo: Luôn viết out-of-scope trước, rồi mới viết in-scope. Khi bạn buộc mình liệt kê rõ "cái gì KHÔNG test", bạn sẽ phát hiện ra những giả định ngầm (implicit assumption) mà nếu không viết ra, không ai trong team biết là bạn đang giả định.

Dùng AI Để Phác Thảo Test Scope

AI coding agent (như Claude Code, Cursor) hoặc LLM chat có thể đọc trực tiếp Jira ticket, PR diff, hoặc acceptance criteria để tự động phác thảo bản scope draft trong vài giây — việc mà QA thường mất 30-45 phút để tự viết tay. Điểm mạnh của AI ở đây là khả năng đọc code diff và suy luận ra vùng ảnh hưởng (impact area) mà con người dễ bỏ sót.

Ví dụ prompt để dùng với AI coding agent có quyền đọc repo:

Bạn là Senior QA Engineer đang chuẩn bị test scope cho sprint hiện tại.

Context:
- Đây là PR diff / Jira ticket: [paste PR link hoặc diff, hoặc paste nội dung ticket]
- Sprint goal: [ví dụ: "Ra mắt phương thức thanh toán MoMo cho checkout"]
- Codebase liên quan: [đường dẫn thư mục, ví dụ src/checkout/, src/payment/]

Yêu cầu:
1. Đọc diff/ticket và liệt kê TẤT CẢ module/file bị ảnh hưởng trực tiếp và
   gián tiếp (ví dụ: shared component, service dùng chung).
2. Đề xuất danh sách IN-SCOPE: feature/luồng nào cần test kỹ (functional +
   regression), kèm lý do dựa trên code diff.
3. Đề xuất danh sách OUT-OF-SCOPE: phần nào có thể bỏ qua trong lần này,
   kèm lý do (ví dụ: không có thay đổi logic, chỉ đổi text UI).
4. Chỉ ra RỦI RO nếu out-of-scope list sai (ví dụ: module X tuy không đổi
   code nhưng có shared state với module đang sửa).
5. Trình bày dưới dạng bảng: Feature/Module | In/Out scope | Lý do | Test type đề xuất.

Không tự thêm feature ngoài phạm vi PR/ticket đã cung cấp. Nếu thiếu thông
tin để quyết định, hãy hỏi lại tôi thay vì tự đoán.

Sau khi AI trả về bản draft, QA lead vẫn phải review lại — đặc biệt phần "out-of-scope" — vì AI có xu hướng quá tự tin khi đánh giá "không có thay đổi logic" dựa trên diff tĩnh, mà không biết runtime behavior thực tế (ví dụ feature flag, A/B test đang chạy).

Mẹo: Khi paste PR diff vào prompt, luôn kèm thêm câu lệnh yêu cầu AI trích dẫn số dòng code cụ thể làm bằng chứng cho từng đề xuất in/out-of-scope. Việc này giúp bạn verify nhanh gấp nhiều lần so với đọc lại toàn bộ diff, và cũng hạn chế AI hallucination (bịa lý do không có thật).

Scope Creep Và Chi Phí QA Của Thay Đổi Ngoài Kế Hoạch

Scope creep (phạm vi kiểm thử phình ra ngoài kế hoạch ban đầu) là kẻ thù âm thầm của mọi kế hoạch test. Nó xảy ra khi:

  • Dev thêm một fix "nhỏ" giữa sprint mà không thông báo QA.
  • PM đổi acceptance criteria sau khi QA đã viết xong test case.
  • Một bug được fix "tiện tay" kéo theo thay đổi ở module khác chưa nằm trong scope ban đầu.

Chi phí của scope creep không chỉ là thời gian — nó phá vỡ toàn bộ ước lượng effort, khiến QA phải chọn giữa: (1) test vội vàng phần mới thêm mà bỏ qua regression đầy đủ, hoặc (2) trễ deadline release. Cả hai lựa chọn đều là rủi ro chất lượng.

Cách xử lý scope creep hiệu quả với AI hỗ trợ:

  • Dùng AI để diff lại commit history của sprint so với bản scope draft ban đầu mỗi 2-3 ngày, phát hiện sớm những thay đổi "lọt lưới".
  • Prompt mẫu: "So sánh danh sách file đã thay đổi trong nhánh feature/xxx tính đến hôm nay với danh sách in-scope tôi đã chốt ở đầu sprint [paste lại]. Liệt kê những file/module MỚI xuất hiện chưa nằm trong scope ban đầu, và đánh giá mức độ rủi ro nếu không test."
  • Khi phát hiện scope creep, đừng tự động mở rộng test case — hãy đưa ra bảng "impact + effort ước tính" để PM/Product Owner quyết định: chấp nhận rủi ro, dời sang sprint sau, hay bổ sung thời gian test.

Mẹo: Thiết lập một quy tắc đơn giản trong team: "Bất kỳ file nằm ngoài scope ban đầu bị đụng tới đều phải được flag trong daily standup trước khi merge." Quy tắc này rẻ hơn nhiều so với chi phí một production bug do scope creep gây ra.

Làm Sao Tạo Entry Và Exit Criteria Cho Mỗi Test Phase Bằng AI?

Entry criteria (điều kiện đầu vào) và exit criteria (điều kiện đầu ra) là hai "cổng kiểm soát" giúp QA tránh test một hệ thống chưa sẵn sàng, và tránh release một hệ thống chưa đạt chất lượng. Không có hai bộ điều kiện này, testing dễ trở thành hoạt động cảm tính — "tester cảm thấy ổn rồi" — điều không thể đứng vững trước audit hay khi có sự cố production.

Entry Criteria: Điều Kiện Cần Đúng Trước Khi Bắt Đầu Test

Entry criteria xác định: build/feature này ĐỦ ĐIỀU KIỆN để bắt đầu test hay chưa. Nếu QA bắt đầu test khi entry criteria chưa đạt, hậu quả thường là: log bug "vô nghĩa" (do build lỗi cơ bản), lãng phí thời gian test lại nhiều lần, và làm loãng độ tin cậy của báo cáo bug.

Các entry criteria điển hình cho một test phase (ví dụ System Testing):

  • Build đã được deploy thành công lên environment target, có build number/version rõ ràng.
  • Smoke test (kiểm tra nhanh các luồng cốt lõi) đã pass — hệ thống "sống" và các chức năng chính hoạt động.
  • Test case/test script cho phase này đã được review và approve.
  • Test data cần thiết đã được chuẩn bị (hoặc sinh bằng công cụ AI test data generator) và verify tính hợp lệ.
  • Các dependency bên ngoài (API bên thứ ba, service khác) đã sẵn sàng hoặc có mock ổn định.
  • Không còn blocker/critical bug nào đang mở từ phase trước chưa được fix.

Mẹo: Đưa entry criteria vào CI/CD pipeline dưới dạng automated check (ví dụ: smoke test tự động chạy ngay sau deploy, nếu fail thì tự động block và thông báo QA không cần bắt đầu manual test). Điều này biến entry criteria từ "văn bản để đọc" thành "cổng chặn tự động", giảm phụ thuộc vào việc con người nhớ và tự kiểm tra.

Exit Criteria: Điều Kiện Cần Đúng Trước Khi Kết Thúc Test

Exit criteria xác định: khi nào QA được coi là "đã test xong" phase này và có thể chuyển sang phase tiếp theo hoặc release. Đây là tiêu chí dễ bị áp lực thời gian bóp méo nhất — khi deadline cận kề, "exit criteria" dễ bị hạ chuẩn ngầm mà không ai ghi lại quyết định đó.

Các exit criteria điển hình:

  • Tỷ lệ test case pass đạt ngưỡng đã thống nhất (ví dụ ≥ 95% pass, không có test case Priority 1 fail).
  • Không còn bug mức Critical/Blocker nào mở; số bug High severity nằm dưới ngưỡng cho phép (ví dụ ≤ 2, đều có workaround).
  • Test coverage cho các luồng chính (critical path) đạt 100%, coverage tổng thể đạt mức đã cam kết trong test plan.
  • Regression suite đã chạy đầy đủ (thường là automated) và không phát sinh lỗi mới.
  • Tất cả defect được log đều có trạng thái rõ ràng: fixed & verified, deferred (có approval), hoặc won't fix (có lý do ghi lại).

Khi exit criteria không đạt nhưng team vẫn buộc phải release (áp lực business), hãy yêu cầu formal sign-off (ký duyệt chính thức) từ Product Owner hoặc Engineering Manager — biến "quyết định ngầm" thành "quyết định có trách nhiệm rõ ràng, có ghi chép".

Prompt ví dụ để AI hỗ trợ đánh giá exit criteria dựa trên dữ liệu thực tế:

Tôi có exit criteria cho System Testing phase như sau:
- Pass rate ≥ 95%
- Không còn Critical/Blocker bug mở
- High severity bug ≤ 2 (có workaround)
- Regression suite pass 100%

Dữ liệu hiện tại (paste từ test management tool, ví dụ Jira/TestRail):
- Tổng số test case: 240, Passed: 221, Failed: 12, Blocked: 7
- Bug mở: 1 Critical, 3 High (2 có workaround, 1 chưa), 5 Medium
- Regression suite: 98/100 pass, 2 fail (chi tiết: [paste])

Yêu cầu:
1. Đánh giá: exit criteria đã đạt hay chưa, chỉ rõ điều kiện nào KHÔNG đạt.
2. Với mỗi điều kiện không đạt, ước tính mức độ rủi ro nếu vẫn release
   (Low/Medium/High) và lý do.
3. Đề xuất 2 phương án: (a) trì hoãn release để fix, (b) release có điều
   kiện kèm risk acceptance — nêu rõ cần ai approve cho phương án (b).

Mẹo: Không bao giờ để AI tự quyết định "đạt exit criteria hay không" nếu dữ liệu đầu vào chưa được verify chính xác — AI chỉ nên đóng vai trò tổng hợp và tính toán dựa trên số liệu do QA cung cấp, quyết định cuối cùng luôn thuộc về con người có quyền sign-off.

Entry/Exit Criteria Riêng Cho Từng Phase Trong Multi-Phase Testing

Trong một dự án có nhiều test phase (Unit → Integration → System → UAT → Production canary), mỗi phase cần một bộ entry/exit criteria RIÊNG — không dùng chung một bộ tiêu chí cho tất cả các phase, vì mục tiêu và rủi ro của mỗi phase khác nhau hoàn toàn.

Bảng ví dụ minh họa sự khác biệt:

Test Phase Entry Criteria chính Exit Criteria chính
Integration Testing Unit test coverage ≥ 80%, các service liên quan đã deploy lên dev env Không còn lỗi tích hợp Critical, API contract test 100% pass
System Testing Integration testing đạt exit criteria, environment staging ổn định Pass rate ≥ 95%, functional coverage 100% cho critical path
UAT (User Acceptance Testing) System testing đạt exit criteria, có business user sẵn sàng tham gia Business user sign-off, không còn bug ảnh hưởng business flow chính
Production Canary UAT sign-off, rollback plan đã sẵn sàng Error rate/latency trong ngưỡng SLO sau X giờ theo dõi, không có alert Critical

Điểm quan trọng: exit criteria của phase trước thường CHÍNH LÀ một phần của entry criteria phase sau — đây là cơ chế đảm bảo chất lượng được "chuyền tay" liên tục, không có khoảng trống giữa các phase.

Mẹo: Khi dùng AI để soạn bộ entry/exit criteria cho multi-phase project, hãy yêu cầu AI trình bày dưới dạng bảng liên kết (như bảng trên) và tự kiểm tra tính nhất quán — ví dụ hỏi thẳng: "Exit criteria của Integration Testing có đủ để làm entry criteria hợp lý cho System Testing không? Nếu thiếu, bổ sung gì?".

Làm Sao Map Feature Vào Đúng Test Level — Manual, E2E, API, Exploratory?

Không phải feature nào cũng cần test theo cùng một cách. Map (ánh xạ) sai feature vào test level là nguyên nhân phổ biến khiến QA tốn effort vào chỗ ROI (hiệu quả đầu tư) thấp — ví dụ viết E2E UI test cho một validation logic đơn giản ở backend, thay vì test nhanh qua API.

Hiểu Rõ Mỗi Test Level Validate Điều Gì

Mỗi test level trả lời một câu hỏi khác nhau, và hiểu đúng câu hỏi đó giúp bạn chọn đúng công cụ:

  • Unit test: "Hàm/class này có hoạt động đúng logic theo thiết kế không, khi cô lập khỏi hệ thống?" — nhanh, rẻ, nhưng không phát hiện lỗi tích hợp.
  • API test: "Contract giữa các service có đúng như thiết kế không? (request/response, status code, business rule ở tầng service)" — nhanh hơn UI test, ổn định hơn, phù hợp để test business logic không phụ thuộc UI.
  • E2E test (End-to-End): "Toàn bộ luồng người dùng thực tế, đi qua nhiều layer (UI → API → DB → service khác), có hoạt động đúng không?" — giá trị cao cho critical path nhưng chậm, dễ flaky (không ổn định), chi phí maintain cao.
  • Manual test: "Trải nghiệm thực tế, các trường hợp cần đánh giá chủ quan (UX, visual, edge case phức tạp) có ổn không?" — cần con người, không thể (và không nên) tự động hoá 100%.
  • Exploratory test: "Có lỗi nào chưa ai nghĩ tới, nằm ngoài các test case đã viết sẵn không?" — dựa vào kinh nghiệm và trực giác của tester, giá trị đặc biệt cao với feature mới, phức tạp, hoặc có rủi ro cao.

Mẹo: Khi phân tích một feature mới, hãy tự hỏi "câu hỏi nào tôi cần trả lời ở đây?" trước khi hỏi "tôi nên viết test loại nào?". Việc bắt đầu từ câu hỏi cần trả lời sẽ tự nhiên dẫn bạn đến đúng test level, tránh tình trạng chọn test level theo thói quen hoặc theo template có sẵn.

Heuristic Map Test Level

Một heuristic (quy tắc suy luận thực dụng) hữu ích để map feature vào test level dựa trên 3 câu hỏi:

  1. Logic này nằm ở layer nào? — Business logic thuần túy (validation, calculation) → ưu tiên Unit + API test. Logic liên quan trình bày, tương tác UI (drag-drop, responsive) → cần UI/E2E test.
  2. Có bao nhiêu hệ thống/service tham gia vào luồng này? — 1 service → API test đủ. Nhiều service phối hợp (ví dụ: order → payment → inventory → notification) → cần E2E test cho ít nhất luồng chính (happy path).
  3. Mức độ rủi ro và tần suất thay đổi của feature này? — Rủi ro cao + thay đổi thường xuyên → đầu tư automation (API/E2E). Rủi ro thấp, ít thay đổi, hoặc mang tính khám phá (feature mới, chưa rõ hành vi người dùng) → exploratory/manual testing hợp lý hơn là đổ effort viết automation.

Bảng ví dụ áp dụng heuristic cho một feature "Checkout với thanh toán ví điện tử":

Khía cạnh cần test Test level đề xuất Lý do
Validate số dư ví trước khi thanh toán API test Business logic thuần, không cần UI để verify
Format hiển thị số tiền, currency theo locale Manual/Visual test Cần đánh giá thị giác, khó automation hoá hiệu quả
Luồng đầy đủ: chọn ví → xác nhận OTP → thanh toán thành công → cập nhật đơn hàng E2E test Đi qua nhiều service, là critical path, rủi ro cao
Hành vi khi user thoát app giữa lúc chờ OTP Exploratory test Edge case khó dự đoán trước, cần trực giác tester
Retry logic khi timeout kết nối tới payment gateway API test + Unit test Logic xử lý lỗi ở tầng service, không cần UI

Mẹo: Dùng AI để hỏi ngược lại chính bạn trước khi chốt test level — prompt kiểu: "Đây là mô tả feature: [paste]. Với mỗi hành vi cần kiểm tra, hãy hỏi tôi 3 câu: logic nằm ở layer nào, bao nhiêu service tham gia, rủi ro/tần suất thay đổi ra sao — rồi đề xuất test level phù hợp nhất, giải thích ngắn." Cách này biến AI thành "bạn tập luyện phản xạ" cho chính QA, không chỉ là công cụ ra quyết định hộ.

Đánh Giá Automation Candidate

Không phải mọi test case đều nên tự động hoá — quyết định automation candidate (ứng viên phù hợp để automation) cần dựa trên phân tích chi phí/lợi ích, không dựa trên cảm tính "cái gì automation được thì automation".

Tiêu chí đánh giá một test case có nên automation hay không:

  • Tần suất chạy lại: Test case chạy mỗi build/mỗi sprint → ưu tiên automation cao. Test case chỉ chạy một lần (ví dụ test cho tính năng one-off, sắp deprecated) → không đáng automation.
  • Độ ổn định của feature: Feature đã ổn định, ít thay đổi UI/logic → automation bền, ROI cao. Feature đang trong giai đoạn thử nghiệm nhanh, UI thay đổi liên tục → automation sẽ tốn công maintain hơn giá trị mang lại.
  • Độ phức tạp khi automation: Một số luồng (ví dụ: xác thực qua SMS OTP thật, thanh toán qua cổng bên thứ ba không có sandbox tốt) rất khó/tốn kém để automation đáng tin cậy — cân nhắc giữ manual hoặc dùng mock có kiểm soát.
  • Giá trị phát hiện lỗi: Ưu tiên automation những luồng critical path có khả năng gây thiệt hại lớn nếu lỗi lọt qua (thanh toán, bảo mật, dữ liệu tài chính).

Prompt ví dụ để AI hỗ trợ đánh giá automation candidate cho một danh sách test case:

Đây là danh sách test case (kèm mô tả, tần suất liên quan chạy lại, độ ổn
định của feature): [paste danh sách hoặc link test management tool]

Với mỗi test case, hãy đánh giá theo 4 tiêu chí:
1. Tần suất chạy lại (cao/trung bình/thấp)
2. Độ ổn định của feature liên quan (ổn định/đang thay đổi)
3. Độ phức tạp kỹ thuật nếu automation (thấp/trung bình/cao, nêu rõ vì sao,
   ví dụ có phụ thuộc bên thứ ba không kiểm soát được)
4. Giá trị phát hiện lỗi nếu miss (critical path hay không)

Từ đó, phân loại mỗi test case vào: "Automation ngay", "Automation sau khi
ổn định", hoặc "Giữ Manual/Exploratory". Trình bày dạng bảng, sắp xếp theo
độ ưu tiên automation giảm dần.

Mẹo: Đặt ngưỡng ROI rõ ràng trước khi hỏi AI, ví dụ "chỉ automation nếu test case này sẽ chạy lại ít nhất 5 lần trong 3 tháng tới" — nếu không có ngưỡng cụ thể, AI (và cả con người) dễ đề xuất automation cho mọi thứ "vì nghe có vẻ tốt", dẫn đến một bộ automation suite phình to nhưng nhiều phần không ai chạy hoặc không đáng maintain.

Cân Bằng Coverage Theo Test Pyramid

Test pyramid (mô hình kim tự tháp kiểm thử) là hình ảnh kinh điển: nhiều Unit test ở đáy, ít hơn ở tầng API/Integration, và ít nhất ở tầng E2E trên đỉnh. Lý do là chi phí và độ ổn định: Unit test rẻ, nhanh, ổn định; E2E test đắt, chậm, dễ flaky.

Vấn đề thực tế nhiều team gặp là "ice-cream cone" ngược — quá nhiều E2E test, quá ít Unit/API test, dẫn đến suite chạy chậm, hay fail vì lý do không liên quan (flaky), và feedback loop (thời gian từ lúc code đến lúc biết pass/fail) quá dài.

Với vai trò QA, dù không viết Unit test (thường là việc của dev), bạn vẫn có trách nhiệm giám sát sự cân bằng này ở tầng test strategy:

  • Theo dõi tỷ lệ test case theo level trong toàn bộ suite (ví dụ dùng dashboard từ test management tool).
  • Khi phát hiện quá lệ thuộc vào E2E test cho những gì có thể test ở tầng API, đề xuất chuyển dịch (shift) một phần coverage xuống tầng thấp hơn — vừa nhanh hơn vừa ổn định hơn.
  • Làm việc với dev để đảm bảo Unit test coverage cho logic nghiệp vụ quan trọng không bị bỏ trống, vì QA không nên là tầng duy nhất "bắt" các lỗi logic đơn giản.

Mẹo: Định kỳ (mỗi quý hoặc mỗi release lớn) yêu cầu AI phân tích tỷ lệ test case theo pyramid dựa trên export từ test management tool, và so sánh với tỷ lệ khuyến nghị (thường khoảng 70% Unit, 20% API/Integration, 10% E2E — tỷ lệ này có thể điều chỉnh theo đặc thù hệ thống). Đây là cách biến một khái niệm lý thuyết thành chỉ số theo dõi được (trackable metric), giúp thuyết phục team đầu tư đúng chỗ.

Làm Sao Document Và Truyền Đạt Quyết Định Test Scope Bằng AI?

Một quyết định scope/entry-exit criteria đúng nhưng không được document (ghi lại thành văn bản) và communicate (truyền đạt) rõ ràng thì giá trị thực tế gần như bằng không — vì không ai khác trong team biết để tuân theo, và chính QA sau vài tuần cũng có thể quên lý do mình đã quyết định như vậy.

Tài Liệu Test Strategy Summary

Test Strategy Summary là bản tóm tắt ngắn gọn (thường 1-2 trang, không phải bản Test Plan đầy đủ hàng chục trang) chứa các quyết định cốt lõi: scope, entry/exit criteria, test level mapping, và rủi ro đã biết. Mục tiêu của document này là để bất kỳ ai trong team (dev, PM, stakeholder) đọc trong 5 phút đều hiểu được "QA đang test gì và vì sao".

Cấu trúc gợi ý cho một Test Strategy Summary:

  • Mục tiêu & phạm vi: Sprint/release này test cái gì, không test cái gì.
  • Entry/Exit criteria: Tóm tắt bảng, không cần chi tiết như Test Plan gốc.
  • Test level mapping: Bảng feature → test level đã chọn, kèm lý do ngắn.
  • Rủi ro đã biết & quyết định risk acceptance (nếu có): Ghi rõ ai đã approve.
  • Người chịu trách nhiệm & thời hạn: Ai review, ai sign-off, deadline từng mốc.

Prompt ví dụ để AI hỗ trợ tổng hợp Test Strategy Summary từ các tài liệu rời rạc:

Tôi có các thông tin sau về sprint hiện tại (paste rời rạc từ nhiều
nguồn: Jira ticket, ghi chú họp, bảng scope đã thống nhất, entry/exit
criteria, bảng test level mapping):
[paste toàn bộ]

Hãy tổng hợp thành một "Test Strategy Summary" dài KHÔNG QUÁ 1.5 trang,
theo cấu trúc: Mục tiêu & phạm vi | Entry/Exit criteria (dạng bảng) |
Test level mapping (dạng bảng) | Rủi ro đã biết | Người chịu trách
nhiệm & deadline.

Viết ngắn gọn, dùng ngôn ngữ business-friendly (người không phải QA
cũng đọc hiểu được), tránh thuật ngữ kỹ thuật khi không cần thiết.

Mẹo: Luôn để Test Strategy Summary ở một nơi TẤT CẢ stakeholder truy cập được (Confluence, Notion, hoặc ghim trong Jira epic) — không phải chỉ trong inbox email hay Slack DM cá nhân của QA lead. Một document tốt nhưng khó tìm thì hiệu quả communicate gần như bằng không.

Truyền Đạt Quyết Định Scope Trong Sprint Ceremony

Viết document là chưa đủ — scope decision cần được nói ra, chủ động, trong các sprint ceremony (sprint planning, refinement, daily standup, sprint review) để mọi người có cơ hội phản hồi TRƯỚC khi quá muộn để thay đổi.

Vài nguyên tắc thực tế:

  • Sprint Planning: Đây là lúc tốt nhất để trình bày draft scope (không cần hoàn chỉnh 100%) và hỏi thẳng: "Có ai biết có thay đổi nào tôi chưa nắm được, ảnh hưởng đến scope này không?". Việc hỏi sớm giúp phát hiện scope creep từ trước khi nó xảy ra.
  • Refinement: Khi acceptance criteria thay đổi, ngay lập tức nói rõ điều đó ảnh hưởng gì đến scope/test level đã chốt trước đó — đừng để đến sprint review mới phát hiện ra sự lệch pha.
  • Daily Standup: Chỉ cần một câu ngắn khi có thay đổi, ví dụ: "Phát hiện file X bị đụng vào ngoài scope ban đầu, tôi đang đánh giá impact, sẽ update lại vào cuối ngày." — không cần trình bày cả document, chỉ cần flag sớm.
  • Sprint Review/Retro: Đối chiếu lại scope ban đầu với thực tế đã test, để cả team học được: lần sau ước lượng scope tốt hơn ở đâu.

Mẹo: Dùng AI để chuẩn bị trước một "bản tóm tắt 3 câu" (elevator summary) cho mỗi ceremony trước khi họp — prompt kiểu: "Từ Test Strategy Summary sau [paste], viết 3 câu ngắn gọn nhất để tôi nói trong standup sáng nay, tập trung vào những gì thay đổi so với hôm qua." Việc chuẩn bị sẵn giúp bạn communicate súc tích, tự tin, và không bị lan man khi họp.

Tạo Test Scope Record Sẵn Sàng Cho Audit

Trong nhiều ngành (tài chính, y tế, bảo hiểm), hoặc với các công ty cần tuân thủ compliance (SOC 2, ISO, PCI-DSS...), test scope và entry/exit criteria không chỉ là công cụ nội bộ — chúng là audit trail (dấu vết kiểm toán) bắt buộc phải có khi auditor yêu cầu chứng minh quy trình QA.

Một audit-ready record cần đảm bảo:

  • Tính bất biến theo thời gian (immutability): Ghi lại phiên bản scope tại từng thời điểm quyết định, không chỉ giữ bản mới nhất — vì auditor thường hỏi "tại thời điểm release ngày X, scope đã chốt là gì?".
  • Có người chịu trách nhiệm rõ ràng: Mỗi quyết định (đặc biệt risk acceptance khi exit criteria không đạt 100%) phải gắn tên người approve, ngày giờ approve.
  • Liên kết được với kết quả thực tế: Scope record phải link được tới test execution report, bug report liên quan — để chứng minh "đã làm đúng như đã nói sẽ làm".
  • Lưu trữ ở hệ thống có version history: Dùng Confluence/Jira/Git (thay vì Google Docs không có version control rõ ràng, hoặc file Word gửi qua email) để đảm bảo có thể truy lại lịch sử thay đổi.

AI có thể hỗ trợ tạo bản ghi này nhanh và nhất quán, nhưng KHÔNG nên để AI tự quyết định nội dung risk acceptance — vai trò của AI ở đây là chuẩn hóa format và đảm bảo không thiếu trường thông tin bắt buộc.

Prompt ví dụ:

Tạo một "Test Scope Audit Record" cho release [tên release], dựa trên
thông tin sau: [paste scope đã chốt, exit criteria, kết quả test, risk
acceptance nếu có kèm tên người approve].

Bản ghi phải có đầy đủ các trường: Ngày lập | Phiên bản scope | Người
lập | Danh sách in/out-of-scope | Entry/Exit criteria đã áp dụng | Kết
quả đạt/không đạt (kèm số liệu) | Risk acceptance (nếu có, kèm người
approve và ngày) | Link tới test execution report.

Nếu tôi thiếu trường thông tin nào bắt buộc, hãy chỉ rõ tôi cần bổ sung
gì trước khi coi record này là hoàn chỉnh.

Mẹo: Đừng chờ đến khi có audit mới bắt đầu tạo audit-ready record — hãy biến việc này thành một bước chuẩn trong Definition of Done (định nghĩa hoàn thành) của mỗi release. Khi audit-ready record được tạo ngay tại thời điểm ra quyết định (không phải viết lại hồi tưởng sau này), độ chính xác và độ tin cậy của nó cao hơn rất nhiều — và bạn sẽ không phải vã mồ hôi khi auditor gõ cửa bất ngờ.