Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đảm bảo Chất lượng và Hỗ trợ Kiểm thử

Đã đọc 0/14 mục · còn khoảng 13 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Mở đầu — vì sao bài này quan trọng

Có một quan niệm sai lầm rất phổ biến trong ngành phần mềm: "Đảm bảo chất lượng là việc của đội QA, Business Analyst (BA) chỉ lo viết yêu cầu thôi". Nếu bạn tin vào điều đó, bạn đang bỏ lỡ một trong những phần giá trị nhất mà một BA có thể đóng góp cho dự án.

Hãy nghĩ thử mà xem: ai là người hiểu rõ nhất "phần mềm này đáng lẽ phải làm gì"? Không phải lập trình viên — họ hiểu code phải chạy thế nào. Cũng không phải tester thuần kỹ thuật — họ giỏi tìm lỗi nhưng chưa chắc nắm hết bối cảnh nghiệp vụ. Người nắm rõ nhất chính là BA, bởi vì chính bạn là cầu nối đã ngồi nghe stakeholder than phiền, đã đào sâu từng quy tắc nghiệp vụ, đã viết ra từng acceptance criteria. Vì vậy, khi đến lúc kiểm tra xem sản phẩm có "đúng" hay không, BA gần như không thể đứng ngoài cuộc.

Trong thực tế tại các công ty ở Việt Nam như FPT Software, KMS Technology hay các startup fintech như MoMo, vai trò của BA trong khâu kiểm thử ngày càng được coi trọng. Một lỗi nghiệp vụ lọt ra production — ví dụ tính sai phí giao dịch, áp sai mức khuyến mãi — có thể gây thiệt hại hàng trăm triệu đồng và mất niềm tin của khách hàng. Bài học hôm nay sẽ giúp bạn hiểu cụ thể BA tham gia vào đảm bảo chất lượng như thế nào: từ hỗ trợ lập kế hoạch kiểm thử, rà soát test case, đến điều phối kiểm thử chấp nhận người dùng (UAT — User Acceptance Testing). Đây là những kỹ năng giúp bạn trở thành một BA "có sản phẩm", chứ không chỉ là người viết tài liệu rồi biến mất.

Khái niệm cốt lõi

Đảm bảo chất lượng (QA) so với Kiểm thử (Testing)

Trước tiên cần phân biệt hai khái niệm hay bị gộp làm một. Quality Assurance (QA) là toàn bộ tập hợp các hoạt động nhằm ngăn ngừa lỗi ngay từ đầu — đảm bảo quy trình làm việc tạo ra sản phẩm đúng. Testing (kiểm thử) là hoạt động phát hiện lỗi đã có trong sản phẩm. QA mang tính phòng bệnh, Testing mang tính chữa bệnh.

BA tham gia mạnh nhất ở mảng QA "phòng bệnh": khi yêu cầu rõ ràng, không mâu thuẫn, có acceptance criteria đo lường được, thì lỗi đã được chặn từ gốc. Một acceptance criteria viết tốt chính là một test case nằm sẵn trong yêu cầu. Đây là lý do người ta hay nói "yêu cầu chất lượng kém là nguồn gốc của phần lớn lỗi production".

Vai trò của BA trong vòng đời kiểm thử

BA không thay thế tester, nhưng đồng hành cùng họ qua từng giai đoạn:

  • Hỗ trợ lập kế hoạch kiểm thử (Test Planning): BA giúp đội QA xác định phạm vi kiểm thử, các kịch bản nghiệp vụ quan trọng cần ưu tiên, các rủi ro nghiệp vụ cao (high-risk areas) nào cần kiểm thử sâu hơn.
  • Rà soát/đánh giá test case (Test Case Review): BA đọc các test case do QA viết để xác nhận chúng phản ánh đúng yêu cầu, đúng quy tắc nghiệp vụ, và bao phủ đủ các trường hợp biên (edge cases).
  • Điều phối UAT (User Acceptance Testing): BA là người tổ chức để chính người dùng cuối hoặc đại diện nghiệp vụ kiểm thử sản phẩm trước khi go-live, đảm bảo nó giải quyết đúng vấn đề kinh doanh.
  • Phân loại và phân tích defect: Khi lỗi được phát hiện, BA giúp đánh giá đây có thực sự là lỗi không (so với yêu cầu), mức độ ưu tiên nghiệp vụ, và đôi khi làm rõ lại yêu cầu nếu phát hiện mâu thuẫn.

Khái niệm độ bao phủ yêu cầu (Requirements Coverage)

Một câu hỏi BA phải luôn đặt ra: "Mọi yêu cầu của tôi có được kiểm thử ít nhất một lần không?". Đây gọi là requirements coverage. Công cụ kinh điển để theo dõi việc này là Traceability Matrix (ma trận truy xuất) — bảng liên kết mỗi yêu cầu với test case tương ứng. Nếu có một yêu cầu nào không gắn với test case nào, đó là khoảng trống nguy hiểm. (Chủ đề truy xuất nguồn gốc được đào sâu ở một bài riêng; ở đây ta chỉ dùng nó như công cụ phục vụ kiểm thử.)

Acceptance Criteria — chiếc cầu nối giữa yêu cầu và test case

Acceptance criteria là các điều kiện cụ thể, có thể kiểm chứng, mà một tính năng phải thỏa mãn để được chấp nhận. Cách viết phổ biến là định dạng Given–When–Then:

  • Given (cho trước bối cảnh): Khách hàng có giỏ hàng trị giá 450.000đ
  • When (khi hành động): Áp mã giảm giá "FREESHIP" cho đơn từ 500.000đ
  • Then (thì kết quả): Hệ thống từ chối mã và hiển thị thông báo "Đơn hàng chưa đủ điều kiện"
Khi acceptance criteria được viết theo dạng này, tester chỉ việc chuyển nó thành test case. Đó là cách BA "đặt nền móng" cho chất lượng ngay từ khâu phân tích.

Tình huống thực tế

Tình huống 1: Lỗi tính phí tại một ví điện tử (fintech Việt Nam)

Một công ty ví điện tử (gọi là PayViet) triển khai tính năng "rút tiền về ngân hàng". Quy tắc nghiệp vụ: miễn phí cho 3 lần rút đầu tháng, từ lần thứ 4 thu phí 5.500đ/giao dịch. Đội phát triển code xong, QA test thấy "rút tiền thành công" nên đánh dấu pass.

Hai tuần sau khi lên production, bộ phận chăm sóc khách hàng nhận hàng loạt khiếu nại: hệ thống thu phí ngay từ lần rút thứ 3 thay vì thứ 4. Nguyên nhân? Test case của QA chỉ kiểm tra "rút được tiền", không kiểm tra ngưỡng đếm số lần. Mà QA không biết quy tắc "3 lần miễn phí" đủ chi tiết — họ tưởng đếm từ 0.

Diễn giải: Đây chính xác là chỗ BA lẽ ra phải tham gia rà soát test case. Nếu BA đọc bộ test case trước khi chạy, BA sẽ lập tức nhận ra thiếu các kịch bản biên: rút lần thứ 3 (vẫn miễn phí), lần thứ 4 (bắt đầu thu phí), và reset đầu tháng. BA hiểu nghiệp vụ "đếm từ 1, miễn phí đến lần 3" — một chi tiết mà tester thuần kỹ thuật dễ hiểu nhầm.

Bài học: Test case đúng về mặt kỹ thuật chưa đủ; nó phải đúng về mặt nghiệp vụ. BA là người duy nhất bảo vệ tính đúng đắn nghiệp vụ này. Sau sự cố, PayViet đưa BA vào quy trình review test case bắt buộc cho mọi tính năng liên quan đến tiền.

Tình huống 2: UAT cứu một dự án ERP cho chuỗi bán lẻ

Một chuỗi siêu thị mini ở TP.HCM (gọi là MartGo, 80 cửa hàng) triển khai hệ thống ERP mới để quản lý tồn kho. Đội dự án của nhà cung cấp phần mềm đã test rất kỹ về mặt kỹ thuật: nhập kho, xuất kho, báo cáo đều chạy đúng. Tất cả test nội bộ đều pass.

BA của dự án quyết định tổ chức một đợt UAT nghiêm túc: mời 6 quản lý cửa hàng thực tế đến dùng thử trong 1 tuần với dữ liệu giống thật. Kết quả bất ngờ: hệ thống đúng về logic, nhưng quy trình kiểm kê cuối ngày yêu cầu nhân viên nhập tay từng mã sản phẩm — trong khi thực tế cửa hàng dùng máy quét mã vạch và cần quét hàng loạt. Tính năng "đúng" nhưng không khớp với cách làm việc thực tế. Nếu go-live như vậy, mỗi cửa hàng sẽ mất thêm 2 tiếng mỗi tối, 80 cửa hàng nghĩa là thảm họa vận hành.

Diễn giải: Đây là giá trị cốt lõi của UAT mà BA điều phối. UAT không tìm lỗi kỹ thuật (việc đó đã làm ở các vòng test trước) — nó kiểm tra xem sản phẩm có thực sự dùng được trong bối cảnh kinh doanh thật hay không. BA đã thiết kế kịch bản UAT bám theo công việc hằng ngày của người dùng, chứ không phải theo danh sách tính năng.

Bài học: Một sản phẩm "không lỗi" vẫn có thể "thất bại" nếu không phù hợp với quy trình thực tế. UAT do BA dẫn dắt là tấm lưới an toàn cuối cùng. Nhờ phát hiện sớm, MartGo lùi go-live 3 tuần để bổ sung tính năng quét hàng loạt — một quyết định rẻ hơn rất nhiều so với triển khai hỏng trên 80 cửa hàng.

Tình huống 3: Test plan thiếu vùng rủi ro cao tại một ngân hàng

Một ngân hàng số tại Đông Nam Á phát triển tính năng "chuyển khoản liên ngân hàng tức thời". BA tham gia ngay từ buổi lập kế hoạch kiểm thử cùng đội QA. Khi QA đề xuất phân bổ đều thời gian test cho mọi chức năng, BA can thiệp: "Chức năng chuyển khoản và đối soát số dư là vùng rủi ro nghiệp vụ cao nhất — sai một đồng cũng là sự cố pháp lý. Còn phần đổi ảnh đại diện thì rủi ro thấp." BA đề nghị dồn 70% công sức kiểm thử vào các luồng tiền và các trường hợp lỗi (giao dịch timeout, trùng lệnh, mất kết nối giữa chừng).

Diễn giải: BA đã đóng góp tư duy risk-based testing (kiểm thử dựa trên rủi ro) ngay ở khâu test planning. BA không cần biết viết script tự động, nhưng hiểu cái gì quan trọng với doanh nghiệp — và đó chính là thông tin định hướng nguồn lực kiểm thử.

Bài học: Thời gian kiểm thử luôn có hạn. BA giúp đội QA tiêu thời gian đó vào đúng chỗ đáng tiền nhất bằng cách mang góc nhìn rủi ro nghiệp vụ vào kế hoạch.

Hướng dẫn từng bước

Dưới đây là quy trình thực tế để BA tham gia đảm bảo chất lượng một tính năng, từ đầu đến cuối:

Bước 1 — Chuẩn bị nền móng chất lượng từ khâu yêu cầu. Trước khi nói đến test, hãy đảm bảo mỗi yêu cầu của bạn có acceptance criteria rõ ràng, đo lường được, viết theo dạng Given–When–Then. Đây là khoản đầu tư phòng ngừa lỗi lớn nhất.

Bước 2 — Tham gia buổi lập kế hoạch kiểm thử. Ngồi cùng QA Lead. Đóng góp: xác định vùng rủi ro nghiệp vụ cao, các kịch bản nghiệp vụ then chốt, dữ liệu thử nghiệm sát thực tế. Thống nhất phạm vi: cái gì test, cái gì nằm ngoài.

Bước 3 — Rà soát test case. Đọc bộ test case của QA và đối chiếu với yêu cầu. Tự hỏi ba câu: (1) Có yêu cầu nào chưa được test case nào bao phủ không? (2) Test case có phản ánh đúng quy tắc nghiệp vụ không? (3) Các trường hợp biên và luồng ngoại lệ (lỗi, nhập sai, hủy giữa chừng) đã được tính đến chưa?

Bước 4 — Lập/cập nhật Traceability Matrix. Gắn mỗi yêu cầu với ít nhất một test case. Mọi ô trống là một khoảng trống bao phủ cần giải quyết.

Bước 5 — Lập kế hoạch UAT. Xác định ai là người tham gia (đại diện nghiệp vụ, người dùng cuối thật), kịch bản UAT bám theo công việc hằng ngày của họ, dữ liệu thật, môi trường UAT riêng, và tiêu chí "đậu/rớt" rõ ràng (exit criteria).

Bước 6 — Điều phối thực thi UAT. Hướng dẫn người dùng, ghi nhận phản hồi, phân loại: đây là lỗi, là yêu cầu mới (change request), hay là hiểu nhầm. Đừng để mọi phàn nàn đều bị gắn nhãn "bug".

Bước 7 — Phân loại defect và quyết định go/no-go. Cùng đội dự án đánh giá mức độ nghiêm trọng của các lỗi còn lại theo góc nhìn nghiệp vụ, và tham mưu cho quyết định có nên go-live hay không.

Lỗi thường gặp & mẹo

Lỗi 1 — BA "khoán trắng" chất lượng cho QA. Nhiều BA nghĩ viết xong yêu cầu là hết việc. Hậu quả là lỗi nghiệp vụ lọt lưới như tình huống PayViet. Mẹo: Hãy coi việc review test case là một phần công việc mặc định của bạn, không phải việc làm thêm.

Lỗi 2 — Nhầm UAT với test kỹ thuật. Nếu bạn bắt người dùng cuối đi tìm lỗi giao diện, lỗi nút bấm trong UAT, bạn đang dùng sai công cụ. Mẹo: UAT chỉ trả lời một câu hỏi: "Sản phẩm này có giúp tôi làm tốt công việc thật của mình không?". Lỗi kỹ thuật phải được xử lý xong ở các vòng test trước UAT.

Lỗi 3 — Acceptance criteria mơ hồ. Viết "hệ thống phải nhanh" hay "giao diện thân thiện" thì không test được. Mẹo: Mọi tiêu chí phải đo lường được — "trang tải dưới 3 giây với 1000 người dùng đồng thời".

Lỗi 4 — Bỏ quên luồng ngoại lệ (negative testing). BA và QA thường chỉ test "đường hạnh phúc" (happy path) — khi mọi thứ suôn sẻ. Mẹo: Luôn hỏi "điều gì xảy ra nếu người dùng làm sai?" — nhập số âm, mất mạng giữa chừng, bấm nút hai lần.

Lỗi 5 — UAT không có dữ liệu thật. Test với dữ liệu giả "Nguyễn Văn A, 1.000đ" sẽ không lộ ra các vấn đề thật. Mẹo: Dùng dữ liệu sát thực tế (đã ẩn danh nếu nhạy cảm) để người dùng kiểm thử trong bối cảnh quen thuộc.

Mẹo vàng: Hãy giữ thái độ trung lập khi phân loại phản hồi UAT. Người dùng thường mô tả "mong muốn mới" như thể đó là "lỗi". Tách bạch lỗi (sai so với yêu cầu đã chốt) và change request (yêu cầu mới) là kỹ năng giúp dự án không bị phình phạm vi (scope creep) ngay phút chót.

Bài tập thực hành

Bài tập 1 — Viết acceptance criteria. Cho yêu cầu: "Khách hàng có thể đặt lại mật khẩu qua email". Hãy viết tối thiểu 4 acceptance criteria theo dạng Given–When–Then, trong đó có ít nhất 2 luồng ngoại lệ (ví dụ: email không tồn tại, link đã hết hạn).

Bài tập 2 — Săn lỗ hổng test case. Cho quy tắc nghiệp vụ: "Đơn hàng trên 300.000đ được miễn phí ship; dưới ngưỡng thu 30.000đ; khách VIP luôn miễn phí". Một QA viết 2 test case: (a) đơn 350.000đ — miễn phí; (b) đơn 200.000đ — thu 30.000đ. Hãy chỉ ra những kịch bản còn thiếu mà bạn sẽ yêu cầu bổ sung (gợi ý: trường hợp biên đúng 300.000đ, khách VIP, đơn rất nhỏ...).

Bài tập 3 — Thiết kế kế hoạch UAT. Bạn là BA cho một ứng dụng đặt lịch khám tại một phòng khám đa khoa. Hãy phác thảo kế hoạch UAT gồm: ai tham gia, 3 kịch bản UAT bám theo công việc thực tế, dữ liệu cần chuẩn bị, và tiêu chí để quyết định UAT "đậu".

Bài tập 4 — Phân loại phản hồi. Trong đợt UAT, bạn nhận 4 phản hồi: (1) "Bấm Lưu mà không thấy gì xảy ra"; (2) "Tôi muốn thêm nút xuất file Excel"; (3) "Màn hình báo lỗi khi nhập ngày sinh tương lai"; (4) "Phông chữ hơi nhỏ, tôi thích to hơn". Hãy phân loại từng phản hồi: lỗi (bug), change request, hay vấn đề cần thảo luận thêm — và giải thích ngắn gọn.

Tóm tắt

Đảm bảo chất lượng không phải là việc bạn "bàn giao" cho người khác sau khi viết xong yêu cầu — nó là phần kéo dài tự nhiên của vai trò BA. Những điểm cốt lõi cần nhớ:

  • QA là phòng ngừa, Testing là phát hiện. BA đóng góp mạnh nhất ở khâu phòng ngừa: yêu cầu rõ ràng và acceptance criteria đo lường được chính là tuyến phòng thủ đầu tiên chống lại lỗi.
  • BA đồng hành xuyên suốt kiểm thử: hỗ trợ lập test plan (mang góc nhìn rủi ro nghiệp vụ), rà soát test case (bảo vệ tính đúng đắn nghiệp vụ), và điều phối UAT (xác nhận sản phẩm dùng được trong thực tế).
  • UAT trả lời câu hỏi nghiệp vụ, không phải câu hỏi kỹ thuật. Nó là tấm lưới an toàn cuối cùng trước go-live, và BA là người dẫn dắt nó.
  • Phân loại phản hồi tỉnh táo: tách bạch bug và change request để tránh phình phạm vi.
Như ba tình huống PayViet, MartGo và ngân hàng số đã cho thấy: một BA chủ động tham gia kiểm thử không chỉ giúp bắt lỗi sớm, mà còn bảo vệ cả uy tín của sản phẩm và túi tiền của doanh nghiệp. Hãy biến tư duy chất lượng thành thói quen — đó là điều phân biệt một BA giỏi với một người chỉ viết tài liệu.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi