I dagens verden er Regresjonstesting et tema med stor relevans og interesse for et bredt spekter av befolkningen. Dens innvirkning strekker seg til ulike aspekter av dagliglivet, fra vitenskap og teknologi til politikk og kultur. I denne artikkelen vil de ulike fasettene til Regresjonstesting bli utforsket, og analysere dens historiske betydning, dens utvikling over tid og dens innflytelse på dagens samfunn. Gjennom en tverrfaglig tilnærming søker vi å tilby en fullstendig og detaljert visjon av Regresjonstesting, slik at leseren kan forstå dens relevans og implikasjoner i dagens verden.
Regresjonstesting er når man på nytt kjører funksjonelle og ikke-funksjonelle tester for å sikre at programvare som tidligere har blitt utviklet og testet fortsatt fungerer som forventet etter en endring.[1][2] De brukes for å detektere om feilrettinger eller endringer har introdusert nye feil eller uønskede effekter.[3] Dersom regresjonstesten feiler kan oppdateringene ha ført til feil med tidligere fungerende kode, og man har fått en regresjon (tilbakesteg) som kan kreve videre avlusing.
Endringer som kan kreve regresjonstesting inkluderer vanlig fiks av programvarelus, forbedringer av programvare, konfigurasjonsendringer eller til og med bytte av maskinvare.[4] Testautomasjon brukes ofte med regresjonstesting ettersom testsuiter[5] for regresjonstester har en tendens til å vokse med hver funnede defekt. Det åpenbare unntaket er regresjonstester på grafisk brukergrensesnitt, som vanligvis må utføres manuelt. Noen ganger utføres en konsekvensanalyse for å bestemme en passende delmengde av tester (ikke-regresjonsanalyse[6]).
Når kode redesignes kan noen av de samme feilene som ble gjort i den opprinnelige implementasjonen også bli gjort i den redesignede versjonen. Derfor ansees det som god praksis når man har oppdaget og fikset en feil at man lager en test som vil avsløre slike feil og rekjøre slike tester med jevne mellomrom etter påfølgende endringer i programmet.[7]
Selv om regresjonstesting kan gjøres med manuelle testprosedyrer gjøres det ofte ved hjelp av automatiserte testverktøy.[8] Testpakker kan brukes for å sette opp automatisk kjøring av regresjons-testtilfeller. Vanlige strategier er å kjøre tester etter hver vellykket kompilering (for små prosjekter), hver kveld eller en gang i uken. Hvis en regresjonstest feiler kan det også være at den er utdatert. Regresjonstesting utføres etter at funksjonell testing er avsluttet for å verifisere at de andre funksjonene fungerer.
Regresjonstesting er en viktig del av ekstrem programmering (XP), en metode hvor designdokumenter erstattes av omfattende, repeterbare og automatiserte tester gjennom hele utviklingsprosessen. I smidig programvareutvikling, som har korte utviklingssykluser med lite ressurser og hyppige programvareendringer, kan regresjonstesting føre til mye unødvendig overhead.[9]
Regresjonstesting har tradisjonelt vært gjort etter at utviklingen er ferdig, men feil som finnes på dette stadiet kan være dyre å reparere. Dette problemet kan avhjelpes med enhetstesting. Selv om utviklere alltid har skrevet testtilfeller som en del av utviklingssyklusen har disse generelt vært enten funksjonelle tester eller enhetstester som bare bekrefter de planlagte resultatene. Utviklingstesting tvinger en utvikler til å fokusere på enhetstesting og å inkludere både positive og negative testtilfeller.[10]