Kiểm thử hồi quy theo rủi ro: kiểm gì khi không đủ thời gian
Regression không phải “chạy lại tất cả”. Trong release thật, thời gian luôn thiếu, nên kỹ năng quan trọng là chọn phần cần kiểm trước.
- Đọc phần đã thay đổi
- Tìm flow bị ảnh hưởng
- Chọn check có impact cao
- Nói rõ phần chưa kiểm
Bắt đầu từ thay đổi
Đừng bắt đầu từ thói quen. Hãy đọc release notes, ticket hoặc hỏi developer: thay đổi gì và có thể chạm tới đâu.
Cùng một lỗi checkout quan trọng hơn nhiều sau refactor payment.
Rủi ro cao là gì
Rủi ro cao là impact lớn hoặc khả năng xảy ra cao: tiền, login, quyền, dữ liệu cá nhân, đơn hàng, payment và integration.
- Flow chặn công việc chính của user.
- Flow liên quan tiền hoặc dữ liệu không thể hoàn tác.
- Vùng bị release chạm tới.
- Vùng có nhiều bug gần đây.
- Integration khó thấy lỗi trên UI.
Nói “chưa kiểm” thế nào cho an toàn
QA không âm thầm bỏ qua. Hãy nói phần nào chưa kiểm và vì sao.
“Chưa test” không xấu nếu nó rõ ràng. Nó nguy hiểm khi mọi người tưởng đã có ai đó kiểm.
Checklist regression ngắn
Smoke flow, phần vừa đổi, phần gần đó, quyền truy cập, case âm quan trọng và một end-to-end business path.
Với API, thêm schema compatibility, error handling, idempotency và client cũ.
Sau release cải thiện gì
Mỗi bug lọt ra ngoài cho biết regression thiếu tín hiệu nào: test case, data, owner, log hay automation guard.
Regression tốt hơn khi được biên tập, không chỉ phình to.
Matrix xác suất × impact
Dùng thang 1–3. Xác suất tăng ở vùng vừa đổi, phức tạp, từng lỗi hoặc dependency không ổn định. Impact tăng với mất tiền/data, security, chặn core journey và nhiều user. Score giúp so sánh nhưng không thay discussion: 3×3 đi trước 1×3.
Thêm confidence. Integration team chưa hiểu rõ có thể được nâng ưu tiên dù chưa có lịch sử bug. Ghi lý do cho mỗi score, nếu không matrix chỉ là trang trí.
Scenario P I Score Quyết định\nPayment callback lặp 3 3 9 kiểm trước\nMobile client cũ 2 3 6 contract + smoke\nFilter lịch sử order 2 1 2 lấy mẫu\nText footer 1 1 1 ngoài scope
Ví dụ: 90 phút regression payment
Dành 10 phút đọc diff, ticket và rollout plan; 15 phút smoke login, catalogue, checkout; 40 phút cho success, decline, timeout/retry, callback lặp, idempotency key và đối soát; 15 phút cho client cũ và permission; 10 phút xem log, metric và viết summary.
Currency hiếm và full promotion chưa được cover. Hãy ghi vì sao chúng thấp hơn, ai nhận risk và monitoring nào phát hiện vấn đề khi rollout.
Test summary đủ để quyết định release
Ghi build và environment, scope, kết quả critical, defect mở, vùng chưa kiểm, metric và recommendation của QA. QA không tự “cho phép” release; team hoặc risk owner quyết định.
Ví dụ: “Critical payment flow pass trên build 1842. Còn blocker PAY-91: callback lặp charge hai lần. Đề nghị dừng rollout. Chưa kiểm JPY và Android 11; release owner nhận risk nếu tiếp tục.”
Câu hỏi thường gặp về regression
Smoke khác regression thế nào?
Smoke trả lời nhanh build có test được và core function có chạy không. Regression tìm side effect của thay đổi trong behaviour cũ. Smoke thường là một phần, không thay thế regression.
Luôn phải chạy toàn bộ automated suite không?
Thường có nếu suite nhanh, ổn định và rẻ, nhưng kết quả xanh không thay impact analysis, exploratory cho risk mới hay việc sửa test chậm và flaky.
Ai nhận residual risk?
Không phải QA một mình. QA làm evidence và gap rõ ràng; product, engineering hoặc release owner quyết định theo process của team.
Regression tốt là ưu tiên hoá rõ ràng: bảo vệ sản phẩm và cho team thấy rủi ro nào vẫn được ship.