❤ Kiểm thử hồi quy (regression testing) là việc kiểm thử lại các chức năng hoặc toàn bộ hệ thống để bảo đảm chúng vẫn hoạt động tốt sau khi có sự thay đổi, ví dụ như thay đổi yêu cầu hoặc sửa lỗi (fix bug) hoặc thậm chí hệ thống của máy chủ (server) hoặc điện thoại nâng cấp hệ điều hành hay bản vá lỗi, nhằm đảm bảo mọi chức năng hiện có của phần mềm vẫn hoạt động như mong đợi.
Phạm vi thực hiện regression test phụ thuộc vào nhiều yếu tố như độ lớn của hệ thống đang được kiểm thử, độ lớn (size) và mức độ rủi ro (cao/thấp) của lần thay đổi vừa được thực hiện.
Thời điểm thực hiện regression testing
Thường thì kiểm thử hồi quy sẽ được thực hiện sau kiểm thử xác nhận (confirmation testing). Tuỳ vào thời gian mình có mà phạm vi kiểm thử hồi quy sẽ “rộng hay hẹp.” Ít nhất phải kiểm thử các chức năng liên quan cùng màn hình/mô đun vừa được thay đổi.
Ví dụ, sau khi sửa một lỗi liên quan đến chức năng ‘Cập nhật thông tin người dùng’ chúng ta nên kiểm tra (hồi quy) lại các chức năng liên quan đến hiển thị thông tin người dùng cũng như Tạo người dùng mới.
Ngoài việc regression testing sau khi sửa lỗi, một số trường hợp khác cũng thường cần thực hiện regression testing là:
- Sau khi thay đổi một yêu cầu hiện có
- Nâng cấp hệ điều hành của server, thiết bị di động
- Cập nhật bản vá lỗi của thư viện nào đó trong hệ thống
Ví dụ, sau khi nâng cấp mô-đun xuất/tạo báo cáo pdf, thì chúng ta cần phải kiểm thử lại toàn bộ các chức năng có sử dụng xuất báo cáo ra pdf để bảo đảm chúng “vẫn ổn” sau đợt nâng cấp. Và kiểm tra lại các báo cáo pdf đã tạo cũng có thể mở xem được.
Một số ưu và nhược điểm của regression testing
Việc thực hiện kiểm thử hồi quy đúng và hợp lý sẽ giúp chúng ta bảo đảm sự ổn định của hệ thống dù thay đổi mã nguồn thường xuyên. Giúp nhóm mình hoàn toàn tự tin release (phát hành) một bản mã nguồn mới cho khách hàng khi phát hiện kịp thời những lỗi mới phát sinh do quá trình triển khai thực hiện các thay đổi yêu cầu hay thêm yêu cầu mới vào hệ thống.
Tuy nhiên, với một số thay đổi nhỏ nhưng chúng ta cần phải kiểm thử lại toàn bộ các chức năng hiện hữu trong hệ thống để bảo đảm chúng vẫn đang hoạt động như cũ, ví dụ như nâng cấp một chức năng cốt lõi (core) trong hệ thống mà nhiều chức năng khác đều có sử dụng nó. Nếu không áp dụng kiểm thử tự động thì điều này rất mất thời gian, đôi khi sửa code trong 1 tiếng nhưng cần 1 tuần để có thể “regression testing lại toàn bộ hệ thống.” Để tránh nhược điểm này, chúng ta nên nghĩ đến việc áp dụng kiểm thử tự động ở nhiều mức độ khác nhau từ unit testing (kiểm thử đơn vị) đến system testing (kiểm thử mức hệ thống).
Các bước thực hiện regression testing hiệu quả
Ba bước cơ bản để thực hiện kiểm thử hồi quy hiệu quả:
- Xác định phạm vi kiểm thử
- Cập nhật test case liên quan
- Kiểm thử và đánh giá lại phạm vi trong lúc kiểm thử
Để kiểm thử hồi quy hiệu quả, nghĩa là kiểm thử đúng khu vực có khả năng bị ảnh hưởng và tiết kiệm thời gian cũng như nhân lực thì chúng ta cần xác định đúng phạm vi kiểm thử.
Để xác định đúng và hiệu quả phạm vi cần kiểm thử, tester nên thảo luận với lập trình viên để khoanh vùng các phần có thay đổi code, cùng với kiến thức của tester về mối liên quan giữa các chức năng trong cùng hệ thống như:
- Kiểm thử trong phạm vi cùng màn hình có thay đổi
- Kiểm thử trong phạm vi cùng mô-đun
- Kiểm thử cả hệ thống có thực hiện thay đổi
- Kiểm thử cả các chức năng liên quan ở các hệ thống khác
Xem xét tập test case cần thực hiện, có thể cần bổ sung thêm test case mới hoặc thay đổi test case hiện có. Nên cập nhật test case trước khi tiến hành kiểm thử hồi quy. Nếu có kiểm thử tự động thì có thể phải cập nhật test case hiện có cho tương ứng với UI và chức năng mới.
Trong quá trình thực hiện việc kiểm thử hồi quy, dựa vào kết quả kiểm thử hiện tại, bạn cũng cần đánh giá lại phạm vi ảnh hưởng (đã xác định) để việc kiểm thử hiệu quả hơn. Ví dụ như cần mở rộng phạm vi hoặc thu hẹp, hoặc kết thúc kiểm thử sớm hơn dự định.
Nguồn: Freepik
Một số phương pháp tiếp cận thực hiện regression testing
Như đã đề cập ở trên, không phải lúc nào chúng ta cũng thực hiện test lại toàn bộ hệ thống. Dưới đây là một số phương pháp tiếp cận kiểm thử hồi quy hiệu quả tùy trường hợp.
- Complete regression testing: Kiểm thử lại tất cả mọi trường hợp. Cách này tốn nhiều thời gian, đặc biệt khi thực hiện thủ công, nhưng giúp tăng độ tin cậy rằng mọi thứ vẫn hoạt động như cũ. Nên chọn cách này khi có thay đổi lớn hoặc thay đổi những thành phần cốt lõi của hệ thống. Nếu bạn có một bộ test case tự động bao phủ hầu hết các chức năng chính, thì có thể lên lịch chạy ít nhất 1 lần/tuần vào ngày cuối tuần.
- Selective regression testing: Chỉ kiểm thử những khu vực chính của hệ thống thông qua một danh sách các test case đã được chọn sẵn. Khi có bất kỳ thay đổi nào, chúng ta cũng cần thực hiện lại nhóm test case này để bảo đảm mọi chức năng chính vẫn đang hoạt động ổn.
- Progressive regression testing: Cách tiếp cận này thường được áp dụng khi có sự thay đổi lớn trong yêu cầu, nghĩa là bộ test case cũ không còn phù hợp với yêu cầu mới này. Khi đó, chúng ta cần viết test case mới trước khi thực hiện kiểm thử hồi quy này.
Sự khác nhau giữa confirmation testing và regression testing
Để dễ so sánh, chúng ta cùng xem qua ví dụ này. Khi đang kiểm thử trên hệ thống, một tester phát hiện và báo lỗi (hay gọi là report bug hay log bug) sau: Người dùng thay đổi mật khẩu thành công khi sử dụng lại mật khẩu hiện tại.
Sau khi lập trình viên đã sửa lỗi này, không cho phép người dùng sử dụng mật khẩu hiện tại để làm “mật khẩu mới” khi thay đổi mật khẩu. Việc đầu tiên tester sẽ làm là thực hiện lại các bước thay đổi mật khẩu trên bản build mới để xem có thể thay đổi mật khẩu với mật khẩu hiện tại được không. Mong muốn của tester (và mọi người trong nhóm) là không cho phép điều này. Nghĩa là tester (trong vai người dùng) sẽ phải sử dụng một mật khẩu mới đúng nghĩa, khác mật khẩu hiện tại đang sử dụng. Đây là confirmation testing – kiểm thử xác nhận.
Sau đó, tester cần thảo luận sơ với lập trình viên trên để đánh giá các khu vực (chức năng) có thể bị ảnh hưởng bởi thay đổi trên. Sau đó tiến hành kiểm tra lại các chức năng có liên quan ví dụ như Tạo tài khoản mới thành công với mật khẩu hợp lệ (giống với một tài khoản đang có trong hệ thống). Kiểm thử lại chức năng đăng nhập để đảm bảo đăng nhập thành công với mật khẩu mới (sau khi đã thay đổi thành công.). Đây là regression testing – kiểm thử hồi quy.
Mời bạn xem thêm so sánh confirmation testing và regression testing ở đây.
Một số câu hỏi thường gặp về regression testing
Nếu tester không nắm vững hay không có kiến thức về hệ thống đang được kiểm thử sẽ gặp nhiều khó khăn trong việc xác định phạm vi cần kiểm thử hồi quy. Dẫn đến tốn nhiều thời gian để thực hiện kiểm thử ở những nơi không cần thiết, hoặc bỏ sót những nơi cần phải kiểm thử
Kiểm thử hồi quy thường được thực hiện nhiều lần, ngày này qua ngày khác, vì thế nếu bộ test case này được tự động hoá thì sẽ giúp nhóm của bạn tăng tốc trong việc kiểm thử, và regression testing được thực hiện thường xuyên và bao phủ tốt hơn.
Happy testing!