Regression testing

Regression testing este un tip de testare care se execută pentru a afla dacă o schimbare recentă în software a afectat negativ funcționalitățile existente. Se verifică dacă funcționalitățile vechi funcționează corect în noua versiune a software-ului și dacă nu au fost introduse defecte.

Situații în care este necesar regression testing:

  • După ce au fost introduse funcționalități noi
  • Schimbări în requirement-uri care impun modificarea unor funcționalități existente
  • Repararea bug-urilor.

Este important să se facă acest tip de testare deoarece o schimbare dintr-o anumită zonă a software-ului poate să creeze efecte nedorite în cu totul altă parte a acestuia.

Regression testing se poate face la toate nivelele de testare și se poate folosi atât tehnica black-box cât și tehnica white-box.

Spre exemplu, la nivelul de unit testing developerii pot face regression testing folosind tehnica white-box. Testele de unit sunt automatizate și se rulează după fiecare schimbare făcută în cod. Acest lucru înseamnă că se face regression testing. Dacă la un moment dat aceste teste vor pica (test failed) înseamnă că noile schimbări din cod au introdus defecte.

La nivelul de system testing, testerul va folosi tehnica black-box pentru a verifica dacă funcționalitățile vechi au rămas intacte în urma schimbărilor. Testarea poate fi manuală sau automată. Chiar dacă în general se folosește testarea manuală, se recomandă ca testele de regression să se automatizeze deoarece ele consumă mult timp și sunt repetitive.

Regression testing vs re-testing

Multă lume spune că face regression testing atunci când testează dacă un bug a fost reparat, însă acest lucru nu este corect.

Să presupunem că Mary este un Software Tester. Ea a găsit un bug și l-a raportat. După ceva vreme, bug-ul a fost reparat de developeri, iar Mary trebuie să verifice că bug-ul a fost într-adevăr reparat (re-testing) și să facă regression testing pentru a se asigura că funcționalitățile vechi nu au fost afectate.

Așadar, prin re-testing se verifică dacă un bug a fost reparat folosind exact aceiași pași care au dus la descoperirea bug-ului. Dacă bug-ul a fost descoperit în urma rulării unor teste automate, atunci se vor rula din nou acele teste. Prin regression testing se verifică dacă zonele adiacente nu au fost afectate.

Re-testing se mai numește și Confirmation Testing.