Bỏ qua, tới nội dung chính

Kiểm thử · Chất lượng

Bộ test báo xanh nhưng không kiểm gì

Kiểm toán kiểm thử và CI của một nền tảng SaaS 15 repo, rồi đưa kiểm thử về đúng nghĩa

Vai tròIT Business Analyst kiêm QA/QC Lead

Tài liệu trong case: Kiểm toán bộ test, Kiểm toán CI
test backend chạy đạt
35 → 276
test giao diện giả bị loại
146 → 0
test case tự động trong 2 tuần
901
lỗi cách ly dữ liệu tìm ra trước phát hành
10

Tên khách hàng được ẩn; ví dụ và dữ liệu đã mô phỏng. Quy trình, phương pháp và số liệu kết quả là thật.

Vấn đề

Nền tảng SaaS cho ngành xây dựng nhà ở tại Mỹ: web quản trị, ứng dụng di động cho thợ, cổng nhà cung cấp, 15 repo. Bảng CI phần lớn báo xanh, nhưng bug vẫn lọt tới khách.

Jira, đầu tháng 9Bug tồn khi tôi nhận vai trò QA/QC Lead
  • Mở quá 30 ngày
  • Mở dưới 30 ngày
  • Không còn mở
  • 244 bug156 đang mở

Thêm 51 bug Dev đã sửa xong nhưng vẫn nằm chờ QA xác minh.

Bối cảnh và vai trò

  • BA đầu mối với khách hàng Mỹ, kiêm hỗ trợ QA; từ 09/2026 kiêm QA/QC Lead.
  • Không có quyền mở pull request trên repo sản phẩm, nên mọi phát hiện phải kèm đủ bằng chứng để Dev tự sửa.
  • Quy trình có agent AI hỗ trợ do tôi thiết kế; mọi kết luận được đối chiếu với log chạy thật.
  • Tên khách hàng, tên sản phẩm và chi tiết lỗ hổng được ẩn.

Bước 1: Kiểm toán bộ test

Tôi chạy lại toàn bộ test ở 6 repo và đọc từng loại test, không tin vào màu xanh trên CI.

Kiểm toán bộ testTrước và sau khi sửa gốc (07/2026)
  • Trước
  • Sau
  • Test giao diện giả, luôn đạt mà không kiểm gì✓ 146 → 0

    146
    0
  • Test backend chạy đạt✓ 35 đạt, 195 lỗi → 276 đạt, 0 lỗi

    35 đạt, 195 lỗi
    276 đạt, 0 lỗi
  • Độ phủ ứng dụng di động cho thợ✓ 12,6% → 21%

    12,6%
    21%
  • Unit test cổng nhà cung cấp✓ 0 → 133

    0
    133
Smoke test giao diện đạt 89/89 hai lần liên tiếp và được đặt làm cổng chặn merge.
Nguyên nhân195 test lỗi, một nguyên nhân chiếm 183
  • Hỏng ở bước khởi tạo vì một lỗi ánh xạ kiểu jsonb
  • Các nhóm lỗi khác
  • 195 test lỗi195

Bước 2: Kiểm toán CI

CI báo xanh chưa chắc là test đã chạy. Tôi đối chiếu cấu hình pipeline với lịch sử chạy thật của từng repo (09/2026).

Kiểm toán CIBa chỗ màu xanh không mang nghĩa gì
  1. Code mới
  2. Pipelinenhiều bộ test không được gọi tới
    cấu hình bỏ qua lỗi, vẫn báo xanh
  3. Bước testjob đêm: 6/6 bước con lỗi
    không repo nào bật branch protection
  4. Merge vào nhánh chính
Kịch bản Playwright nằm im120
Luồng Maestro nằm im25
File test backend nằm im332
Chỗ sửa CI, mỗi chỗ một dòng4đủ để bật lại các test trên

Bước 3: Kiểm thử từng ticket bằng Tester Kit

Máy tách ticket, comment và PR thành danh sách nguồn; mỗi test case phải trỏ về một nguồn, rồi qua cổng độ phủ và một phiên AI khác soát độc lập trước khi chạy.

Tester Kit
  1. Ticket, comment, PRtách thành nguồn
  2. Test case có nguồn
  3. Cổng độ phủ
  4. Soát độc lậpmột phiên AI khác
  5. Chạy API và giao diện
  6. Tester kýmột file Excel
Lượt chạy, 2 tuần cuối tháng 931
Test case tự động901
Case "đạt giả" bị chặn9báo đạt nhưng không kiểm đúng acceptance criteria

Bước 4: Kiểm thử cả một epic phân quyền

Tính năng phân quyền theo công ty (multi-tenant) được chia thành nhiều ticket. Từng ticket riêng lẻ đều đạt.

Vì sao test theo epic
  1. Từng ticketđều đạt khi test riêng
  2. Chỗ các ticket gặp nhauMàn hình mớiBản xuất ExcelAPI dùng chung
  3. Dữ liệu lọt sang công ty khác
Kết quả epicPhân quyền theo công ty
  • Đạt
  • Lỗi thật
  • Còn lại
  • 146 case146

Loại lỗi chính: người dùng công ty này xem hoặc tải được dữ liệu của công ty khác.

Kết quả

  • Test backend chạy được trở lại: từ 35 đạt, 195 lỗi lên 276 đạt, 0 lỗi; 146 test giả bị loại; smoke test thành cổng chặn merge.
  • Danh sách cụ thể các test đang nằm im và 4 chỗ sửa CI để bật lại, kèm bằng chứng từ lịch sử chạy.
  • 901 test case tự động trong 2 tuần; 9 kết quả đạt giả bị chặn trước khi được tin.
  • 10 lỗi cách ly dữ liệu giữa các công ty được tìm ra trước phát hành.

Điều tôi học được

  • Màu xanh trên CI chỉ có nghĩa khi đã chứng minh bước test thực sự chạy và thực sự chặn.
  • Hàng trăm test lỗi thường chung vài nguyên nhân; tìm gốc nhanh hơn sửa ngọn.
  • Lỗi phân quyền nằm ở chỗ các tính năng gặp nhau, nên phải test ở mức epic chứ không chỉ từng ticket.
  • QA
  • CI/CD
  • Test automation
  • Playwright
  • Kiểm toán
  • Multi-tenant

Muốn trao đổi về case này?

Liên hệ