Maintenance Testing và Regression Testing thường xuất hiện cùng nhau nên rất dễ bị nhầm.
Cách hiểu ngắn gọn nhất là: Maintenance Testing là kiểm thử khi một hệ thống đã đang vận hành được sửa đổi, nâng cấp, di chuyển hoặc ngừng sử dụng; Regression Testing là kiểm tra xem một thay đổi có vô tình làm hỏng những chức năng vốn đang hoạt động hay không, dành cho cả hệ thống đang trong giai đoạn phát triển
Ví dụ dễ hiểu: sửa chức năng đăng nhập
Một website đang chạy trên production bị lỗi: người dùng nhập đúng mật khẩu nhưng không đăng nhập được. Developer sửa lỗi và tạo một bản vá.
- Tester kiểm tra lại đúng tình huống từng gây lỗi để xác nhận đăng nhập đã hoạt động. Đây là Confirmation Testing.
- Tester kiểm tra thêm đăng xuất, quên mật khẩu, ghi nhớ đăng nhập và đăng nhập bằng Google vì bản sửa có thể ảnh hưởng đến các chức năng liên quan. Đây là Regression Testing.
Toàn bộ hoạt động kiểm thử cho bản vá trên một hệ thống đang vận hành thuộc Maintenance Testing. Như vậy, Regression Testing có thể là một phần của Maintenance Testing👌
So sánh Maintenance Testing và Regression Testing
| Tiêu chí | Maintenance Testing | Regression Testing |
|---|---|---|
| Câu hỏi chính | Cần kiểm thử gì khi hệ thống đang vận hành có thay đổi? | Thay đổi có làm hỏng phần vốn đang chạy tốt không? |
| Bản chất | Một bối cảnh/phạm vi kiểm thử trong giai đoạn bảo trì | Một loại kiểm thử theo mục tiêu |
| Khi nào xảy ra? | Khi sửa lỗi, thêm tính năng, nâng cấp môi trường, migrate dữ liệu hoặc retire hệ thống | Sau bất kỳ thay đổi nào có nguy cơ gây tác động phụ |
| Kiểm tra gì? | Phần thay đổi, tác động phụ, môi trường mới, dữ liệu chuyển đổi, lưu trữ dữ liệu… | Các chức năng không trực tiếp được sửa nhưng có thể bị ảnh hưởng |
| Quan hệ | Có thể bao gồm confirmation test, regression test và các kiểm tra khác | Thường là một phần quan trọng của maintenance testing |
Maintenance Testing không chỉ xảy ra khi sửa bug
Theo ISTQB, maintenance có thể là corrective (sửa lỗi), adaptive (thích nghi với môi trường mới) hoặc nhằm cải thiện performance và maintainability. Vì vậy, Maintenance Testing có thể được kích hoạt bởi ba nhóm sự kiện:
- Modifications: thêm tính năng, sửa defect hoặc triển khai hot fix.
- Ví dụ: thêm thanh toán bằng QR.
- Upgrades hoặc migrations: nâng phiên bản hệ điều hành, database, chuyển nền tảng hoặc migrate dữ liệu.
- Ví dụ: chuyển dữ liệu khách hàng từ hệ thống cũ sang hệ thống mới.
- Retirement: ngừng sử dụng hệ thống. Khi đó vẫn có thể phải kiểm tra việc lưu trữ, khôi phục và truy xuất dữ liệu cũ.
- Ví dụ: blog Yahoo đóng cửa, trước khi đóng cho phép khách hàng download các bài viết về máy
Một ví dụ không bắt đầu từ bug
Công ty nâng database từ phiên bản cũ lên phiên bản mới. Team cần kiểm tra ứng dụng có kết nối được, dữ liệu có đầy đủ và các transaction có hoạt động đúng hay không. Những việc này thuộc Maintenance Testing.
Sau đó, team chạy lại các luồng tạo đơn, thanh toán, hoàn tiền và báo cáo để phát hiện tác động phụ do việc nâng database. Phần kiểm tra lại các chức năng cũ này là Regression Testing.
Phạm vi kiểm thử được quyết định như thế nào?
Không phải thay đổi nào cũng cần chạy lại toàn bộ test case. Team thường thực hiện Impact Analysis để xác định khu vực có thể bị ảnh hưởng. Phạm vi Maintenance Testing thường phụ thuộc vào:
- Mức độ rủi ro của thay đổi.
- Kích thước của hệ thống hiện tại.
- Kích thước và mức độ lan tỏa của thay đổi.
Cách nhớ nhanh
- Maintenance Testing: “Hệ thống đang vận hành có thay đổi, chúng ta cần kiểm thử những gì?”
- Regression Testing: “Thay đổi này có làm hỏng những phần đang hoạt động tốt không?”
Vì thế, câu “sau khi sửa bug thì thực hiện Maintenance Testing hay Regression Testing?” không phải câu hỏi chọn một trong hai. Bạn đang kiểm thử trong bối cảnh maintenance, và một trong các hoạt động cần làm có thể là regression testing.




