Menu
ESC

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

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

Đang tải...

Bài 48 — Test Management with JIRA & Xray

JIRA and Confluence for BA Bài 48/60

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

Hãy hình dung bạn là BA tại một dự án ngân hàng số. Đội phát triển vừa hoàn thành tính năng "Chuyển khoản liên ngân hàng 24/7". Đến ngày demo, khách hàng hỏi một câu rất đơn giản: "Tính năng này đã được test với bao nhiêu kịch bản? Có bao nhiêu test case pass, bao nhiêu fail? Những yêu cầu nào trong BRD chưa được kiểm thử?". Cả phòng im lặng. Đội QA có một file Excel test case ở đâu đó, JIRA thì chỉ có vài cái bug rời rạc, còn việc liên kết giữa "yêu cầu" và "kết quả test" thì... không ai nắm được.

Đây là khoảng trống mà rất nhiều BA Việt Nam gặp phải. Chúng ta giỏi viết requirement, viết user story, vẽ flow — nhưng khi đến giai đoạn kiểm thử, mối liên kết giữa yêu cầu và chất lượng thường bị đứt gãy. JIRA mặc định không phải là một công cụ test management. Nó được sinh ra để theo dõi công việc và bug, không phải để quản lý test case có cấu trúc.

Vai trò của BA trong test management không phải là người viết test case kỹ thuật (đó là việc của QA), mà là người đảm bảo truy vết được (traceability): mỗi requirement phải có ít nhất một test case kiểm chứng, và mỗi lần release, BA phải trả lời được câu hỏi "bao nhiêu phần trăm yêu cầu đã được kiểm thử và pass?". Bài học này sẽ giúp bạn hiểu giới hạn của JIRA gốc, và cách Xray — plugin test management phổ biến nhất trên Atlassian Marketplace — lấp đầy khoảng trống đó.

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

JIRA gốc làm được gì cho test management?

Trước khi nói đến plugin, hãy hiểu rõ JIRA mặc định (không cài thêm gì) có thể hỗ trợ kiểm thử đến đâu. Câu trả lời ngắn gọn: rất hạn chế, nhưng không phải vô dụng.

1. Bug tracking — theo dõi lỗi. Đây là thứ JIRA làm tốt nhất. Issue type "Bug" cho phép ghi nhận lỗi, gán độ ưu tiên, mô tả các bước tái hiện (steps to reproduce), đính kèm screenshot, và liên kết bug với story bị ảnh hưởng. Đây là phần cốt lõi mà mọi dự án đều dùng.

2. Story acceptance qua Definition of Done. Bạn có thể đưa tiêu chí "đã pass test" vào Definition of Done (DoD) của story. Khi story chỉ được kéo sang cột "Done" sau khi QA xác nhận, bản thân workflow đã ngầm chứa một bước kiểm thử. Nhưng đây là kiểm soát thủ công, không có bằng chứng cụ thể.

3. Test status như label hoặc custom field. Một mẹo phổ biến là tạo custom field "Test Status" (Select list: Not Tested / Passed / Failed) hoặc dùng label như tested, regression-needed. Cách này cho bạn lọc nhanh bằng JQL, nhưng nó chỉ phản ánh trạng thái ở cấp story, không phải ở cấp từng test case.

Vấn đề lớn của JIRA gốc là: không có khái niệm "test case" như một thực thể có cấu trúc. Bạn không thể lưu các bước test (test steps) với expected result rõ ràng, không thể chạy test theo nhiều phiên (test execution) qua các vòng release khác nhau, và không thể tự động sinh ma trận truy vết (traceability matrix). Nếu một story có 15 kịch bản kiểm thử, bạn không có chỗ chuẩn để lưu chúng ngoài việc nhét vào phần mô tả hoặc file đính kèm.

Xray lấp đầy khoảng trống như thế nào

Xray (do hãng Xpand IT phát triển) là plugin test management được tải nhiều nhất trên Atlassian Marketplace. Triết lý thiết kế của nó rất thông minh: thay vì xây một hệ thống tách biệt, Xray bổ sung thêm các issue type mới ngay trong JIRA. Nhờ vậy test case sống chung nhà với requirement, story và bug — tất cả trong cùng một dự án JIRA.

Xray thêm năm issue type chính:

  • Test — một test case. Có thể là Manual (gồm các test step: action, data, expected result) hoặc Automated (Cucumber/Gherkin hoặc Generic). Đây là "đơn vị kiểm thử" mà JIRA gốc thiếu.
  • Test Set — một nhóm các Test gom lại theo chủ đề (ví dụ "Test Set: Đăng nhập", "Test Set: Thanh toán"). Giống như thư mục để tổ chức.
  • Test Plan — kế hoạch kiểm thử cho một mục tiêu cụ thể, ví dụ "Test Plan: Release 2.5". Nó theo dõi tiến độ tổng thể của một đợt test.
  • Test Execution — một lần chạy thực tế một tập test, tại một thời điểm, trên một môi trường. Đây là điểm mấu chốt: cùng một Test có thể được execute nhiều lần (vòng 1 fail, vòng 2 pass) và Xray lưu lại lịch sử từng lần.
  • Pre-Condition — điều kiện tiên quyết cần có trước khi chạy test (ví dụ "tài khoản đã được KYC").

Mô hình truy vết — trái tim giá trị cho BA

Điều khiến BA nên quan tâm đến Xray không phải là các issue type, mà là mối liên kết giữa chúng. Xray dùng link "tests" (một Test "tests" một Story/Requirement) để xây dựng Traceability matrix — ma trận truy vết. Từ một story, bạn click vào tab và thấy ngay: story này được kiểm chứng bởi những test nào, mỗi test có kết quả ra sao, và sinh ra bug nào.

Đây chính là câu trả lời cho câu hỏi của khách hàng ở đầu bài. Khi mọi requirement được link tới test, BA có thể trả lời ngay: "Tính năng chuyển khoản có 22 test case, 19 pass, 3 fail, 2 yêu cầu trong BRD chưa có test bao phủ". Đó là sự khác biệt giữa nói "chắc là ổn" và "đây là bằng chứng".

Tình huống thực tế

Tình huống 1 — Fintech Việt và bài toán "test ở đâu mất rồi?"

Một công ty fintech ở TP.HCM (gọi là MoMoPay giả định) có đội 8 dev, 3 QA và 2 BA. Trước đây QA quản lý test case bằng Google Sheets, mỗi sprint một file. Sau 6 sprint, họ có 6 file Excel với tổng cộng hơn 400 test case trùng lặp, không ai biết file nào là bản mới nhất. Khi audit của ngân hàng đối tác yêu cầu chứng minh "tính năng OTP đã được kiểm thử đầy đủ", đội mất 3 ngày lục Excel mà vẫn không ghép được test với requirement.

Sau khi triển khai Xray, BA dẫn dắt việc chuyển 400 test case thành issue type Test trong JIRA, mỗi Test link tới đúng story bằng link "tests". Khi audit lần sau hỏi về OTP, BA chỉ cần mở story "Xác thực OTP", vào tab Test Coverage, in ra ma trận truy vết trong 5 phút.

Bài học rút ra: Test case nằm rải rác trong Excel là quả bom nợ kỹ thuật. Giá trị lớn nhất Xray mang lại cho BA không phải tốc độ test, mà là khả năng chứng minh chất lượng khi bị yêu cầu — đặc biệt quan trọng trong các ngành chịu kiểm toán như ngân hàng, bảo hiểm, y tế.

Tình huống 2 — Đội outsourcing và bài toán "vòng test thứ mấy?"

Một công ty phần mềm gia công ở Đà Nẵng làm dự án cho khách hàng Nhật. Khách hàng yêu cầu báo cáo theo từng vòng test (test round): UT round 1, round 2, SIT, UAT. Trước đây với JIRA gốc, mỗi khi test lại, QA chỉ đổi custom field "Test Status" từ Failed sang Passed — và lịch sử vòng trước bị ghi đè, mất sạch. Khách hàng Nhật rất khó chịu vì không thấy được "lần test trước fail ở đâu, đã sửa gì".

Với Xray, đội tạo các Test Execution riêng cho từng vòng: "Test Execution - SIT Round 1", "Test Execution - SIT Round 2". Cùng một Test case "Tính tổng đơn hàng có thuế VAT" được execute ở cả hai vòng. Round 1 kết quả FAIL với comment "tính sai thuế khi đơn > 10 triệu", round 2 PASS. Toàn bộ lịch sử được giữ lại. BA xuất báo cáo cho khách hàng Nhật cho thấy tiến độ pass rate tăng từ 68% (round 1) lên 94% (round 2).

Bài học rút ra: Sự tách biệt giữa Test (định nghĩa test case — viết một lần) và Test Execution (lần chạy thực tế — chạy nhiều lần) chính là điểm mạnh cốt lõi của Xray so với mẹo "custom field" của JIRA gốc. Nó cho phép theo dõi xu hướng chất lượng qua thời gian, thứ mà file Excel hay label không bao giờ làm được.

Tình huống 3 — Startup nhỏ không nên dùng Xray ngay

Một startup edtech 5 người ở Hà Nội nghe nói Xray hay nên cài luôn. Sau một tháng, họ bỏ. Lý do: đội quá nhỏ, mỗi sprint chỉ 10-15 story, QA kiêm luôn BA, và việc tạo Test + Test Set + Test Plan + Test Execution cho mỗi tính năng tốn nhiều thời gian hành chính hơn là giá trị nó mang lại. Họ quay về dùng custom field "Test Status" đơn giản trên JIRA gốc cộng với một Confluence page checklist.

Bài học rút ra: Test management có cấu trúc là con dao hai lưỡi. Với đội lớn, dự án bị audit, hoặc nhiều vòng release — Xray là cứu cánh. Với đội nhỏ, làm nhanh, ít ràng buộc tuân thủ — JIRA gốc cộng custom field là đủ. BA giỏi là người biết chọn đúng mức độ công cụ cho bối cảnh, không phải người dùng công cụ xịn nhất.

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

Dưới đây là quy trình thiết lập test management cơ bản với Xray mà một BA nên nắm để phối hợp với QA.

Bước 1 — Bật Xray cho dự án. Sau khi admin cài Xray từ Marketplace, vào Project Settings và bật Xray cho dự án của bạn. Năm issue type Test, Test Set, Test Plan, Test Execution, Pre-Condition sẽ xuất hiện trong danh sách Create issue.

Bước 2 — Viết Test case (issue type Test). Tạo issue type Test. Đặt tên rõ ràng theo định dạng "[Module] - Hành vi kiểm thử", ví dụ "Login - Đăng nhập sai mật khẩu 5 lần khóa tài khoản". Chọn Test Type là Manual, rồi thêm các test step: Action (thao tác), Data (dữ liệu đầu vào), Expected Result (kết quả mong đợi).

Bước 3 — Link Test với Requirement. Đây là bước BA phải đảm bảo không bị bỏ sót. Trong Test, dùng link type "tests" để liên kết tới story/requirement tương ứng. Chính link này sinh ra traceability. Nguyên tắc vàng: không story nào được Done nếu chưa có ít nhất một Test link tới nó.

Bước 4 — Gom Test vào Test Set hoặc Test Plan. Tạo Test Plan cho đợt release, ví dụ "Test Plan - Release v2.5", rồi thêm các Test liên quan vào. Test Plan cho bạn cái nhìn tổng thể về độ bao phủ và tiến độ của cả đợt.

Bước 5 — Tạo Test Execution và chạy. Khi đến lúc test, tạo Test Execution (ví dụ "TE - UAT Round 1 - 27/06/2026"), thêm các Test cần chạy, gán môi trường (staging/production). QA mở từng Test trong Execution, thực hiện theo step, đánh dấu PASS/FAIL cho từng step và cho cả test. Nếu FAIL, tạo Bug ngay từ Test Execution — Xray tự link bug về đúng test và story.

Bước 6 — Đọc báo cáo và truy vết. Vào tab "Test Coverage" trên story để xem requirement đã được test chưa. Dùng các gadget Xray trên dashboard (Test Plan progress, Overall Requirement Coverage) để báo cáo cho stakeholder. BA dùng các báo cáo này trong buổi review/demo để trả lời câu hỏi về chất lượng bằng dữ liệu, không phải cảm tính.

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

Lỗi 1 — Nhầm Test với Test Execution. Người mới thường tạo một Test mới mỗi lần test lại, dẫn đến hàng trăm Test trùng. Hãy nhớ: Test viết MỘT lần, Execution chạy NHIỀU lần. Nếu bạn thấy mình clone test case để test lại, là bạn đang dùng sai.

Lỗi 2 — Quên link Test với requirement. Test không link tới story thì traceability matrix trống rỗng, và toàn bộ giá trị của Xray cho BA biến mất. Hãy đưa "mọi test phải link requirement" vào Definition of Done của QA.

Lỗi 3 — Coi Xray là việc của riêng QA. Sai lầm tổ chức phổ biến nhất. BA phải sở hữu phần traceability (requirement nào chưa được bao phủ), QA sở hữu phần chất lượng test (test viết tốt không). Nếu BA buông tay, không ai phát hiện được requirement "rơi" khỏi lưới kiểm thử.

Mẹo 1 — Dùng JQL với Xray. Xray bổ sung các JQL function như requirementsWithoutTests() để tìm story chưa có test, hoặc testsWithoutPreconditions(). Một JQL cực kỳ hữu ích cho BA: lọc các story trong release sắp tới chưa có test nào link tới — đó chính là danh sách rủi ro chất lượng cần xử lý gấp.

Mẹo 2 — Import test case từ Excel. Nếu đội đang có sẵn test case trong Excel (như tình huống 1), Xray hỗ trợ import qua CSV/Excel template. Không cần gõ lại tay 400 test case.

Mẹo 3 — Đừng over-engineer cấu trúc. Không phải dự án nào cũng cần đủ cả 5 issue type. Đội vừa có thể chỉ dùng Test + Test Execution là đủ. Thêm Test Plan, Test Set, Pre-Condition khi thực sự cần tổ chức quy mô lớn.

Mẹo 4 — So sánh nhanh với đối thủ. Ngoài Xray còn có Zephyr (Scale/Squad) và TestRail. Zephyr cũng tích hợp JIRA tốt; TestRail là công cụ độc lập mạnh nhưng tách khỏi JIRA. Với BA ưu tiên traceability sống chung trong JIRA, Xray thường là lựa chọn cân bằng nhất về chi phí và tính năng.

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

  • Phân tích hiện trạng: Mô tả dự án gần nhất bạn tham gia. Đội quản lý test case ở đâu (Excel, JIRA label, Confluence, không có)? Khi cần chứng minh một requirement đã được test, mất bao lâu để tìm ra? Viết 5 dòng đánh giá khoảng trống.
  • Thiết kế test cho một story: Lấy story "Người dùng đặt lại mật khẩu qua email". Viết tay 4 test case theo cấu trúc Xray Test: mỗi test gồm tên, các test step (Action / Data / Expected Result). Đảm bảo có ít nhất một test case cho luồng lỗi (email không tồn tại, link hết hạn).
  • Vẽ ma trận truy vết: Cho 3 requirement và 6 test case, vẽ bảng traceability matrix (requirement ở hàng, test ở cột, đánh dấu test nào kiểm chứng requirement nào). Chỉ ra requirement nào đang bị "hở" (chưa test).
  • Quyết định công cụ: Với mỗi bối cảnh sau, chọn JIRA gốc hay Xray và giải thích: (a) startup 4 người làm app giao đồ ăn; (b) dự án core banking 30 người bị audit hàng quý; (c) đội outsourcing làm 4 vòng test cho khách Nhật. Đối chiếu lựa chọn của bạn với ba tình huống trong bài.

Tóm tắt

JIRA gốc làm tốt việc theo dõi bug và có thể mô phỏng test status bằng custom field hoặc đưa kiểm thử vào Definition of Done, nhưng nó không có khái niệm test case có cấu trúc, không lưu lịch sử nhiều vòng test, và không sinh được ma trận truy vết. Xray — plugin test management phổ biến nhất — lấp khoảng trống này bằng cách thêm năm issue type (Test, Test Set, Test Plan, Test Execution, Pre-Condition) ngay trong JIRA, giúp test case sống chung nhà với requirement.

Với BA, giá trị cốt lõi không nằm ở việc chạy test mà ở traceability: đảm bảo mọi requirement đều được kiểm thử và có thể chứng minh điều đó bằng dữ liệu khi bị stakeholder hay auditor chất vấn. Hãy nhớ nguyên tắc Test viết một lần, Execution chạy nhiều lần, và mọi test phải link tới requirement. Cuối cùng, công cụ phải vừa với bối cảnh: đội lớn và bị audit cần Xray, đội nhỏ và linh hoạt thường chỉ cần JIRA gốc cộng một custom field đơn giản.