Sự khác nhau giữa Re-testing và Regression testing

1. Re-testing là gì?

Re-testing hay còn được gọi là Confirmation testing (kiểm thử chấp nhận) là một quy trình kiểm tra lại các testcase failed trong lần cuối cùng thực hiện test. Nói chung, tester tìm bug đó trong quá trình kiểm thử và assign lại cho Dev fix. Sau khi Dev fix xong thì đẩy lại cho Tester kiểm tra lại. Quá trình liên tục này được gọi là Re-testing (kiểm thử lại /Kiểm thử chấp nhận).

a.Thời điểm thực hiện Re-testing?

  • Thực hiện trước Regression Testing.
  • Khi dev xác nhận bug post trước đó đã được fix.
  • Khi khách hàng yêu cầu Retest: Là yêu cầu trực tiếp từ khách hàng nhằm đảm bảo chất lượng sản phẩm.
  • Khi bug bị Dev từ chối: Trong trường hợp này, Tester sẽ reproduce lại bug bằng cách Retest để kiểm tra tính hợp lệ của bug đã post.

b.Ưu nhược điểm của Re-testing

Ưu điểm:

  • Re-test giúp các nhà phát triển đảm bảo rằng lỗi không còn xuất hiện khi áp dụng các bước tương tự. Mỗi khi một quá trình kiểm tra lại thành công, một lỗi sẽ được đóng lại, điều này giúp làm tăng chất lượng cho ứng dụng, phần mềm.
  • Re-test mất ít thời gian hơn vì nó chỉ yêu cầu kiểm tra lại trường hợp kiểm thử không thành công hoặc một lỗi cụ thể

Nhược điểm:

  • Re-test đôi khi chỉ cần một thay đổi nhỏ trong code, trong trường hợp đó nhà phát triển cần phải deploy code chỉ để kiểm tra một lỗi, điều này đôi khi gây tốn thời gian.
  • Vẫn có nhiều trường hợp Tester phải tốn thời gian Re-test bởi cần lặp lại chính xác các bước đó để kiểm tra xem sự cố có thực sự được giải quyết hay không.

2. Regression testing – Kiểm thử hồi quy

Regression testing thường được thực hiện sau khi hệ thống phần mềm (system) hay một mô-đun (module) nào đó vừa 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.

a.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 ngay 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 xung quanh nằm cùng màn hình với chức năng (ví dụ 1 nút nào đó) vừa có sự thay đổ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

b.Ưu nhược điểm của Regression test

Ưu điểm:

  • Regression Test giúp cải thiện chất lượng sản phẩm
  • Regression Test có thể được tự động hóa
  • Giúp đảm bảo lỗi và sự cố không tái phát trở lại sau khi khắc phục
  • Thử nghiệm này giúp xác minh các sửa đổi không ảnh hưởng đến hoạt động chính xác của mã đã được thử nghiệm
  • Regression Test có thể được sử dụng trong quá trình kiểm tra tích hợp, chúng sẽ hữu ích hơn trong trường hợp này

Nhược điểm

  • Regression Test đòi hỏi nhiều nỗ lực trong kiểm tra thủ công, cần thiết thực hiện cho mọi thay đổi nhỏ trong mã
  • Để thử nghiệm các dự án có giá trị cao và chức năng phong phú cần các tập lệnh thử nghiệm phức tạp
  • Quá trình này lặp đi lặp lại và có thể ảnh hưởng đến các dự án cần chạy nước rút
  • Regression Test cần phải có mục đích rõ ràng để thực hiện
  • Trước khi thực hiện cần phải có sự phân tích rõ ràng bởi Regression Test rất khó thực hiện trong điều kiện hạn chế về thời gian và  nguồn lực

3. Sự khác nhau giữa Re-testing và Regression testing.

a. Sự giống nhau giữa Re-test và Regression test

Trước khi tìm hiểu chi tiết về sử khác nhau thì dưới đây là điểm giống nhau giữa Re-test và Regression test:

  • Nền tảng của cả Re-test và Regression test đều là sự lặp lại.
  • Cả 2 đều là kỹ thuật Black box testing và Validation.
  • Retest và Regression đều có thể  thực hiện được bằng kiểm thử thủ công và kiểm thử tự động.

b. Sự khác nhau giữa Re-testing và Regression testing

Re-testingRegression testing
Re-testing được thực hiện để xác nhận lại các trường hợp failed trong lần cuối cùng thực hiện có pass sau khi Dev fix hay khôngKiểm thử hồi quy được thực hiện để xác nhận xem những chương trình hoặc code thay đổi có ảnh hưởng đến tính năng cũ hay không
Re-testing được thực hiện dựa trên cơ sở các lỗi đã được fixMục đích của kiểm thử hồi quy là khi 1 phần code thay đổi nhưng không được sinh ra bất kì ảnh hưởng nào khác đến các chức năng đã có
Xác minh lỗi là một phần của re-testingXác minh lỗi không phải là một phần của regression testing
Mức độ ưu tiên của re-testing cao hơn kiểm thử hồi quy, vì vậy nó được thực hiện trước khi kiểm thử hồi quyDựa vào dự án và nguồn nhân lực, kiểm thử hồi quy có thể được thực hiện song song với kiểm thử chấp nhận
Không thể tự động hóa các test caseCó thể sử dụng auto test để kiểm thử hồi quy do kiểm thử thủ công tốn thời gian và nhân lực
Kiểm thử chấp nhận là kiểm thử theo kế hoạchKiểm thử hồi quy được coi là kiểm thử chung
Test lại các case failedĐược thực hiện cho các case passed
Kiểm tra lại để đảm bảo rằng các lỗi đã được fixCheck các ảnh hưởng không mong đợi
Re-testing thực thi 1 lỗi với cùng 1 dữ liệu, cùng 1 môi trường nhưng đầu vào khác nhau là 1 bản built mớiKiểm thử hồi quy được thực hiện khi có bất kì chỉnh sửa hoặc thay đổi nào đó. Nó trở thành bắt buộc trong dự án

4. Tìm hiểu những quan điểm sai lầm về Regression Test

1. Regression Test không cần thiết với các thay đổi nhỏ

Một số người cho rằng, đối với các thay đổi nhỏ trong phần mềm thì không cần phải thực hiện Regression Test. Tuy nhiên, những thay đổi nhỏ cũng có thể ảnh hưởng đến tính năng khác trong phần mềm, do đó việc thực hiện Regression Test là rất quan trọng.

2. Regression Test chỉ cần thực hiện một lần

Cũng có người cho rằng nếu đã thực hiện Regression Test một lần trước đó và không có lỗi, thì không cần phải thực hiện nữa. Tuy vậy, việc thực hiện Regression Test là một quá trình liên tục và nó đòi hỏi sự cập nhật liên tục nhằm đảm bảo tính ổn định cho phần mềm.

3. Regression Test chỉ kiểm tra các tính năng chính

Có người cho rằng, chỉ cần kiểm tra các tính năng chính của phần mềm là đủ. Nhưng việc kiểm tra các tính năng khác, kể cả những tính năng ít được sử dụng, cũng rất quan trọng để đảm bảo rằng phần mềm không bị ảnh hưởng bởi các thay đổi nhỏ.

4. Regression Test chỉ dùng để kiểm tra lỗi mới

Với quan điểm này, Regression Test cũng cho phép phát hiện lại các lỗi đã được sửa đổi trước đó, để đảm bảo tính ổn định của phần mềm chứ không phải chỉ lỗi mới.

5. Regression Test không cần phải được tự động hóa

Một số người cho rằng Regression Test có thể thực hiện bằng cách thủ công và không cần phải được tự động hóa. Tuy nhiên, việc tự động hóa Regression Test sẽ giúp tiết kiệm thời gian và chi phí, đồng thời cũng giúp đảm bảo tính nhất quán và độ chính xác của quá trình kiểm thử.

Nguồn tham khảo:

1. https://www.guru99.com/re-testing-vs-regression-testing.html

2.https://www.softwaretestingmaterial.com/difference-between-regression-and-retesting/