AllianceProject Handbook
← Knowledge

Người dùng và số liệu

Quality metrics

Khoảng mười hai con số là đủ để biết hệ chất lượng đang tốt lên hay xấu đi. Nhiều hơn thì không ai đọc, ít hơn thì có chỗ mù.

Cập nhật 12/09/2026số liệuchất lượng

Quy tắc chọn chỉ số

Một chỉ số chỉ được vào dashboard khi trả lời được câu này: khi nó đi sai hướng, ai làm gì?

Không trả lời được thì bỏ. Chỉ số không gắn với hành động chỉ tạo cảm giác đang kiểm soát, trong khi thực tế là đang nhìn một cái bảng đẹp.

Hệ quả: dashboard của dự án dừng ở khoảng mười hai con số. Một dashboard năm mươi chỉ số là một dashboard không ai mở.

Mười hai chỉ số của Alliance App

NhómChỉ sốHướng tốtNguồnNhịp soát
Ổn địnhCrash-free sessionsTăngCrash reportingHằng ngày
Ổn địnhANR rateGiảmAndroid vitalsHằng ngày
Chất lượngSố bug production mỗi releaseGiảmBug trackerMỗi release
Chất lượngDefect leakageGiảmBug trackerHằng tháng
TestTỷ lệ pass của regression suiteỔn định ở mức caoCIMỗi release
TestFlaky test rateGiảmCIHằng tuần
TestThời gian phản hồi của CIGiảmCIHằng tuần
PerformanceCold start P95Giảm hoặc giữAndroid vitals, Xcode OrganizerMỗi release
BackendAPI P95 của luồng chínhGiảm hoặc giữLog serverHằng tuần
Nghiệp vụTỷ lệ đăng nhập thành côngTăngAnalyticsHằng ngày
Nghiệp vụTỷ lệ thanh toán thành côngTăngAnalyticsHằng ngày
ReleaseSố lần phải dừng rollout hoặc vá gấpGiảmSổ releaseHằng tháng

Ngưỡng báo động của từng chỉ số nằm ở Performance budgetProduction monitoring, không lặp lại ở đây.

Mười hai chỉ số này chỉ là phần sức khoẻ của quy trình. Danh sách đầy đủ những gì sổ tay phải đo, kèm chỗ giữ ngưỡng của từng con số, ở Chưa đo được thì chưa kiểm soát được.

Ba chỉ số ít dùng nhưng đáng dùng nhất

Defect leakage

Tỷ lệ bug lọt qua toàn bộ hàng rào kiểm soát và tới tay user.

Defect leakage = bug phát hiện ở production / (bug phát hiện trước release + bug ở production)

Ví dụ:  QA tìm được 100 bug, production phát sinh 5
        5 / 105 = 4,76%

Giá trị tuyệt đối gần như vô nghĩa — nó phụ thuộc vào việc đội ghi bug kỹ tới đâu. Xu hướng mới có nghĩa. Chuỗi 10% → 8% → 5% → 2% qua bốn quý nói rằng hàng rào đang dày lên thật.

Đây là chỉ số tổng hợp tốt nhất cho Tư duy Shift Left: nó đo trực tiếp thứ mà shift left hứa hẹn.

Flaky test rate

Test lúc xanh lúc đỏ mà code không đổi. Tác hại không nằm ở bản thân bài test hỏng — nó nằm ở chỗ nó dạy cả đội thói quen bỏ qua tín hiệu đỏ. Sau vài tuần sống chung với flaky test, một lần đỏ thật cũng sẽ bị bấm chạy lại.

Quy trình xử lý:

  1. Phát hiện: cùng commit, chạy lại cho kết quả khác → đánh dấu flaky.
  2. Cách ly ngay khỏi pipeline chặn, đưa vào nhóm riêng.
  3. Sửa trong tối đa hai tuần.
  4. Không sửa được trong hai tuần thì xoá. Test không tin được là nợ, không phải tài sản.

Mục tiêu: flaky test rate dưới 1% và không có bài nào nằm trong khu cách ly quá hai tuần.

Thời gian phản hồi của CI

Từ lúc đẩy code tới lúc biết kết quả. Đây là chỉ số ít ai theo dõi nhưng ảnh hưởng tới mọi thứ khác: pipeline chạy 40 phút không phải là một quality gate, nó là thứ người ta học cách né — bằng cách gộp nhiều thay đổi vào một lần đẩy, bỏ qua kết quả, hoặc merge trước khi CI xong.

Ngưỡng mục tiêu nằm ở bài Tư duy Shift Left.

Coverage không chỉ là code coverage

Code coverage là loại coverage dễ đo nhất, nên nó bị dùng thay cho tất cả các loại còn lại. Bức tranh đầy đủ:

Loại coverageCâu hỏi nó trả lời
Requirement coverageMỗi acceptance criteria có ít nhất một testcase chưa?
Critical flow coverageCác luồng sống còn đã có automation chưa?
API coverageMỗi endpoint đã có contract test và test lỗi chưa?
Device coverageTier 1 đã chạy đủ trong release này chưa?
Code coverageBao nhiêu phần trăm dòng code được chạy qua khi test?

Hai dòng đầu quan trọng hơn dòng cuối rất nhiều. Requirement coverage 100% với code coverage 60% an toàn hơn nhiều so với chiều ngược lại.

Đọc chỉ số cho đúng

  • Nhìn xu hướng, không nhìn một điểm. Một tuần xấu có thể do một release lớn. Ba tuần xấu liên tiếp là một vấn đề.
  • Chỉ số không gắn lên đầu người. Khi một con số trở thành thước đo đánh giá cá nhân, nó ngừng đo cái nó định đo: đội sẽ tối ưu con số chứ không tối ưu chất lượng. Ví dụ dễ thấy nhất là ép code coverage — kết quả là hàng loạt test không assert gì.
  • Chỉ số đi sai hướng hai kỳ liên tiếp thì mở một hạng mục sửa, có người nhận, có hạn. Không làm gì thì việc theo dõi chỉ số cũng chẳng để làm gì.

Giới hạn

  • Mười hai chỉ số này giả định đã có crash reporting, analytics và CI. Chưa có thì việc cần làm trước là gắn công cụ, không phải chọn KPI.
  • Một số chỉ số cần vài tháng dữ liệu mới đọc được xu hướng. Đừng ra quyết định lớn dựa trên bốn tuần đầu.
  • Danh sách này soát lại mỗi quý: chỉ số nào ba quý liền không dẫn tới hành động nào thì bỏ khỏi dashboard.