AllianceProject Handbook
← Goals

Chất lượng sản phẩm ở mức người dùng tin tưởng được

Đang thực hiện

Alliance App hiếm khi crash, hiếm khi chậm, và mỗi bản release không làm hỏng thứ đang chạy tốt — đúng ở mức quy mô 500.000 người dùng.

35%
Quý nàyNgười chịu trách nhiệm: Chủ kỹ thuật

Kết quả cần đạt

  • Tỷ lệ người dùng không gặp crash đạt từ 99,7% trở lên
  • Thời gian khởi động nguội dưới 2 giây trên máy tầm trung
  • Không có lỗi nghiêm trọng nào lọt ra bản release hai kỳ liên tiếp
  • Không có sai lệch tiền nào trong module Bán hàng, dù chỉ một đồng

Vì sao mục tiêu này đứng đầu

Trên di động, người dùng không gửi báo lỗi — họ gỡ ứng dụng. Một lần crash lúc chốt đơn hay một màn hình trắng lúc mở app gây thiệt hại lớn hơn nhiều so với việc chậm ra mắt một tính năng. Vì vậy chất lượng được đặt làm ràng buộc: khi quỹ thời gian eo hẹp, ta cắt phạm vi tính năng, không cắt test.

Ở quy mô 500.000 người dùng, mọi tỷ lệ đều phải đọc ra số người. Crash-free 99,5% nghe có vẻ tốt cho tới lúc nhận ra nó là 2.500 người gặp crash. Đó là lý do ngưỡng ở đây là 99,7%, và vì sao con số này không được nới ra để một bản release kịp hạn. Xem quy mô 500.000 người dùng.

Cách đo

Chỉ sốNgưỡng đạtNgưỡng báo độngĐọc ra số ngườiNguồn dữ liệu
Tỷ lệ người dùng không crash≥ 99,7%< 99,5%Báo động = 2.500 ngườiCông cụ giám sát crash
Tỷ lệ phiên bị ANR≤ 0,3%> 0,47%Ngưỡng xấu của cửa hàngBảng điều khiển cửa hàng
Thời gian khởi động nguội≤ 2,0 giây> 3,0 giâyMáy thật, máy tầm trung
Tỷ lệ API trả lỗi 5xx≤ 0,5%> 1%Giám sát hạ tầng
Lỗi nghiêm trọng lọt ra bản release0≥ 1Sổ theo dõi lỗi
Sai lệch đối soát tiền0 đồng> 0 đồngLuôn là sự cố P0Đối soát hằng ngày
Tỷ lệ luồng quan trọng có test tự động≥ 70%< 50%Báo cáo coverage

Ngưỡng báo động không phải để phạt ai. Chạm ngưỡng thì việc sửa chất lượng được ưu tiên trước tính năng mới, cho tới khi chỉ số trở lại vùng an toàn. Chi tiết ngưỡng và cách đặt cảnh báo nằm ở quy tắc cảnh báo.

Dòng đối soát tiền là dòng duy nhất có dung sai bằng không. Một đồng lệch có thể là lỗi làm tròn vô hại, cũng có thể là dấu hiệu ghi nhận trùng đơn trên 500.000 người dùng — không phân biệt được từ xa, nên luôn xử lý như trường hợp xấu.

Việc cần làm để đạt

  1. Gắn công cụ giám sát crash và hiệu năng vào cả bản thử nghiệm lẫn bản release, tách số liệu theo từng phiên bản chứ không nhìn tổng.
  2. Lập đường cơ sở cho các chỉ số trên, biết hiện tại đang ở đâu trước khi đặt kỳ vọng.
  3. Áp dụng Definition of Done cho mọi hạng mục, không có ngoại lệ.
  4. Dựng test tự động cho các luồng quan trọng của cả ba module: gửi và nhận tin nhắn khi mạng chập chờn, giao việc và đổi trạng thái, tạo đơn và thanh toán.
  5. Dựng đối soát tự động hằng ngày cho Bán hàng, chạy độc lập với code tạo đơn.
  6. Đặt performance budget và để quality gate chặn khi vượt.

Điều dễ làm hỏng mục tiêu này

  • Nhận thêm phạm vi vào giữa sprint mà không bỏ bớt thứ khác.
  • Bỏ qua review vì "sửa có một dòng".
  • Đo hiệu năng trên máy cao cấp của lập trình viên rồi kết luận là nhanh.
  • Nới ngưỡng để một phép đo chuyển từ đỏ sang xanh. Ngưỡng chỉ đổi khi có lý do sản phẩm, ghi thành quyết định, không đổi vì một bản release đang gấp.
  • Nhìn tỷ lệ mà không quy ra số người.