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

- 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.
- Mở quá 30 ngày
- Mở dưới 30 ngày
- Không còn mở
244 bug156 đang mở
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.
- Trước
- Sau
Test giao diện giả, luôn đạt mà không kiểm gì✓ 146 → 0
1460Test backend chạy đạt✓ 35 đạt, 195 lỗi → 276 đạt, 0 lỗi
35 đạt, 195 lỗi276 đạ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
0133
- 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).
- Code mới
- Pipelinenhiều bộ test không được gọi tớicấu hình bỏ qua lỗi, vẫn báo xanh
- Bước testjob đêm: 6/6 bước con lỗikhông repo nào bật branch protection
- Merge vào nhánh chính
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.
- Ticket, comment, PRtách thành nguồn
- Test case có nguồn
- Cổng độ phủ
- Soát độc lậpmột phiên AI khác
- Chạy API và giao diện
- Tester kýmột file Excel
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.
- Từng ticketđều đạt khi test riêng
- Chỗ các ticket gặp nhauMàn hình mớiBản xuất ExcelAPI dùng chung
- Dữ liệu lọt sang công ty khác
- Đạt
- Lỗi thật
- Còn lại
146 case146
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
