Điều phá vỡ trực giác của QA
Trong hệ thống tất định, sửa một lỗi và viết ca kiểm cho nó nghĩa là lỗi đó không quay lại. Cả nghề kiểm thử được xây trên tính chất này.
Trong hệ thống xác suất, tính chất đó không còn. Ca đã pass tuần trước có thể fail tuần này mà không ai sửa gì trong code của bạn. Bốn nguyên nhân:
| Nguyên nhân | Chuyện gì xảy ra | Bạn có kiểm soát không |
|---|---|---|
| Nhà cung cấp cập nhật mô hình | Hành vi đổi, đôi khi tốt hơn ở chỗ này và tệ hơn ở chỗ khác | Không, trừ khi khoá phiên bản |
| Dữ liệu đầu vào thật đổi | Nhà cung cấp đổi mẫu hoá đơn; người dùng đổi cách hỏi | Không |
| Sửa chỗ này làm hỏng chỗ khác | Tinh chỉnh cho nhóm C làm giảm nhóm A | Có |
| Bản thân kết quả không cố định | Cùng đầu vào, đầu ra khác nhau giữa các lần chạy | Một phần |
Ba điều khoản chống hồi quy
Ghi vào đặc tả, cả ba:
1. Khoá phiên bản mô hình.
> Hệ thống chỉ định danh phiên bản mô hình cụ thể, không dùng bút danh trỏ tới "bản mới nhất". Nâng phiên bản là một thay đổi có kiểm soát, phải chạy lại bộ ca EVAL-01 và được chủ nghiệp vụ chấp thuận.
Không có điều khoản này, nhà cung cấp có thể đổi hành vi sản phẩm của bạn vào một buổi sáng thứ Ba mà không ai biết.
2. Chạy lại bộ ca theo lịch, không chỉ khi thay đổi.
> Bộ ca chạy tự động mỗi tuần và mỗi khi đổi mô hình, prompt, hoặc cấu hình. Kết quả lưu lại theo thời gian để so sánh được.
Chữ "theo lịch" là chữ quan trọng: nguyên nhân thứ hai (dữ liệu thật đổi) không kèm bất kỳ thay đổi nào ở phía bạn, nên nếu chỉ chạy khi thay đổi, bạn sẽ không bao giờ phát hiện nó.
3. Có hậu quả khi trượt ngưỡng.
> Nếu bất kỳ điều kiện nào trong AC-07 không còn đạt, tính năng tự động chuyển về chế độ toàn bộ qua người duyệt, và thông báo cho chủ nghiệp vụ trong 24 giờ.
Đây là điều khoản phân biệt một hệ thống được vận hành với một hệ thống được hy vọng. Không có nó, báo cáo trượt ngưỡng sẽ nằm trong hộp thư và không gây ra hành động gì.
So sánh hai phiên bản: đọc bảng, không đọc con số tổng
Khi so bản mới với bản cũ, con số tổng che gần hết thông tin. Bảng cần bốn ô:
| Bản mới đúng | Bản mới sai | |
|---|---|---|
| Bản cũ đúng | Giữ được | Hồi quy — đọc từng ca |
| Bản cũ sai | Cải thiện | Vẫn sai |
Viết vào tiêu chí nâng cấp: "Không nâng phiên bản nếu có ca thuộc nhóm A chuyển từ đúng sang sai, bất kể con số tổng."
Kết quả không cố định: điều cần đặc tả
Nếu cùng một đầu vào có thể cho hai đầu ra khác nhau, ba hệ quả cụ thể:
- Chạy bộ ca một lần là không đủ cho ca ở gần ngưỡng. Chạy 3 lần, ghi cả độ dao động.
- Người dùng sẽ báo "hôm qua nó làm được". Đội hỗ trợ cần được nói trước rằng điều này có thể xảy ra và không phải là họ nhớ sai.
- Nếu nghiệp vụ cần kết quả nhất quán (cùng hồ sơ phải cho cùng quyết định, vì lý do công bằng hoặc quy định), đó là một yêu cầu riêng: lưu quyết định lần đầu và dùng lại, thay vì tính lại mỗi lần.
Điều cần nói với khách hàng từ đầu
Hồi quy xác suất sẽ xảy ra, nên nó phải nằm trong kỳ vọng ngay từ đầu, không phải là một tin xấu ở tháng thứ tư:
> Chất lượng của hệ thống này không cố định như một tính năng thông thường — nó thay đổi khi mô hình hoặc dữ liệu đầu vào thay đổi. Vì vậy chúng tôi đo hằng tuần và báo cáo, thay vì kiểm một lần khi bàn giao.
Nói câu này ở buổi đầu khiến bạn trông cẩn thận. Nói nó ở tháng thứ tư khiến bạn trông như đang bào chữa.
Làm ngay
Kiểm một điều với đội kỹ thuật: hệ thống đang trỏ tới phiên bản mô hình cụ thể, hay tới bút danh "bản mới nhất"? Nếu là bút danh, hành vi sản phẩm của bạn có thể đổi bất cứ lúc nào mà không ai kiểm soát — và việc khoá nó lại là việc đáng làm tuần này.