Regresia software este o eroare în programarea software care face ca software-ul să regreseze efectiv în una sau mai multe zone. Există două tipuri principale de regresie software: funcțională și nefuncțională. Funcțional înseamnă că programul funcționează la viteze adecvate, dar una sau mai multe funcții nu funcționează, în timp ce nefuncțional înseamnă că toate funcțiile funcționează, dar viteza este redusă dramatic. Un eveniment, cum ar fi o actualizare, este de obicei cauza regresiei. Testarea de regresie verifică software-ul pentru a se asigura că nu a avut loc sau nu va avea loc nicio regresie.
Regresia software funcțională este un mod în care regresia programului se poate manifesta. Când se întâmplă acest lucru, programul va continua să ruleze la viteză maximă, astfel încât este posibil ca utilizatorul să nu observe regresia la început. În această manifestare, există anumite funcții care nu mai funcționează. De exemplu, dacă un program poate căuta fișiere, este posibil ca această funcție să nu mai funcționeze. Acest lucru poate afecta funcțiile accesorii — cele care nu sunt utilizate în mod obișnuit — sau funcția principală a programului.
Regresia software nefuncțională este mai periculoasă și mai ușor de observat, chiar dacă toate funcțiile încă funcționează. În această manifestare, regresia face ca programul să ruleze mai lent, sau rezultatul programului va fi semnificativ mai mic. Lipsa vitezei înseamnă că programul poate deveni, de asemenea, vulnerabil la codare și atacuri rău intenționate, punând atât programul, cât și computerul pe care rulează în pericol de piratare. Viteza poate deveni atât de mică încât poate fi imposibil să utilizați programul.
Pentru ca regresia software să aibă loc, trebuie să aibă loc un așa-numit eveniment. Acest eveniment modifică codarea software-ului și introduce aceste erori, fie intenționat – ceea ce este rar – sau neintenționat. Dezvoltatorul poate încerca să remedieze o eroare sau să actualizeze versiunea, dar introduce incorect un cod care regresează programul. Cel mai tipic eveniment este o actualizare, deoarece aceasta afectează direct codificarea programului. Alte evenimente includ modificări de versiune sau configurație.
Pentru a atenua șansele de regresie software, testarea de regresie este de obicei folosită. Acest tip de testare analizează noul program și îl compară cu toate versiunile vechi ale programului. Apoi rulează programarea printr-un test pentru a vedea dacă există vreun semn de regresie și pentru a se asigura că toată codarea este funcțională. Orice semn de cod regresat sau nefuncțional va fi adus înapoi dezvoltatorului sau utilizatorului și va raporta ce a regresat sau unde este găsită regresia.