Moderne software ændrer sig hele tiden. Især når man arbejder i et agilt miljø, hvor udgivelser sker meget ofte, nogle gange endda med kontinuerlig levering. Nye funktioner tilføjes løbende, eksisterende funktioner ændres, og fejl rettes. Og det er selvfølgelig en god ting.
Men samtidig er risikoen for at ødelægge eksisterende, fungerende funktionalitet relativt høj. Derfor har vi brug for regressionstest. Kort sagt er regressionstest en teknik, der validerer, at nye ændringer i koden ikke har introduceret nye fejl.
Jeg vil nedenfor gennemgå regressionstest, som er en vigtig praksis inden for kvalitetssikring, mere detaljeret.
Hvad er regressionstest?
Regressionstest er en vigtig del af softwareudviklingens livscyklus. Det er en type test, der udføres for at sikre, at kodeændringer ikke har påvirket eksisterende funktionalitet, og at det, der fungerede før disse ændringer, stadig fungerer. Eventuelle problemer, der findes under denne proces, betragtes som regressionsfejl og bør behandles med høj prioritet.
Regressionstest kan udføres både manuelt og gennem automatiserede tests. Det er en god idé at automatisere regressionstestsuiten, især når man arbejder med store applikationer, hvor hele regressionsprocessen kan være meget tidskrævende.
Hvorfor er regressionstest vigtig i softwareudvikling?
Når der tilføjes ny kode til kodebasen, hvad enten det er en fejlrettelse eller ny funktionalitet, kan den påvirke allerede fungerende kode ved at introducere nye fejl eller påvirke ikke-funktionelle aspekter af applikationen, såsom ydeevne eller brugervenlighed.
Dette kan føre til ulemper for slutbrugeren, som sandsynligvis ikke vil være særlig tilfreds med, at noget, der plejede at fungere, ikke længere fungerer. Dette kan igen medføre tab af indtægter og have stor indflydelse på virksomhedens omdømme.
Regressionstest hjælper med at opdage disse fejl tidligt og bidrager til, at der findes en løsning, før man går i produktion. Det betyder, at kunderne får en mere stabil version af applikationen uden at påvirke den gamle funktionalitet, de allerede brugte.
Have an account? Log In
Udvælgelse af testtilfælde
Det første, testere skal gøre, før regressionstesten påbegyndes, er at identificere de regressionstesttilfælde, der skal udføres. Der er to hovedmetoder til udvælgelse af testtilfælde: reaktiv og proaktiv.
Reaktiv
Ved reaktiv udvælgelse af testtilfælde handler kvalitetssikringsteamet efter ændringen. Det betyder, at de testtilfælde, der skal udføres, udvælges, efter at udviklingsteamet har foretaget ændringerne i koden.
Proaktiv
Ved den proaktive tilgang forudser testerne mulige ændringer, før udviklingsændringerne foretages, og udarbejder testplanen derefter. Valget mellem disse to metoder afhænger af bestemte faktorer, herunder omkostninger, kompleksitet, dækning og tidsmæssige begrænsninger.
Prioritering af testtilfælde
Prioritering af testtilfælde er sandsynligvis et af de vigtigste trin i udformningen af en regressionsplan. Det hjælper med at administrere tiden effektivt og forbedrer fejldetekteringsraten. Det første, man skal gøre, er at forstå, hvilke områder der er mest påvirket af de seneste ændringer, samt beslutte, hvor meget tid teamet har til at udføre regressionstesten. Som et af de berømte testprincipper siger: “udtømmende test er umulig”, hvilket betyder, at vi ikke kan dække alle eksisterende testscenarier og kanttilfælde, men vi kan stræbe efter den bedste testdækning, vi kan opnå.
Med dette i tankerne skal testerne foretage en risikovurdering – beslutte, hvilke områder der er mest kritiske at teste, og hvilke der med størst sandsynlighed vil forårsage problemer. Når vi taler om testprincipper, skal man huske, at fejl har en tendens til at samle sig, dvs. at et område med problemer med større sandsynlighed vil afsløre flest fejl. I forbindelse med regressionstest vil det være de områder, der er blevet ændret.
En anden ting, man bør overveje, er, om vi bruger testautomatisering. Den automatiserede testkørsel kan køre uafhængigt, og testerne kan fokusere mere på erfaringsbaseret test, såsom eksplorativ test og ad hoc-test, samt på dele, der ikke kan automatiseres, f.eks. at sikre, at brugeroplevelsen ikke på nogen måde er blevet forringet.
Efterhånden som softwaren ændres, er det også vigtigt at opdatere eksisterende testtilfælde, så de afspejler de nye ændringer, eller markere forældede testtilfælde tilsvarende, så de ikke udføres ved en fejl.
Teknikker & værktøjer til effektiv regressionstest

| Retest alt-teknikken | Selektiv teknik | Prioriteringsteknik |
|---|---|---|
| Retest alt-teknikkenOgså kendt som komplet regressionstestning er dette den mest grundige regressionstestningsteknik. Den indebærer gentestning af alle funktioner i softwaren efter enhver ændring. Målet er 100 % testdækning, og det kræver, at alle eksisterende tests køres igen, samt at der udføres nye testcases. Denne teknik er især velegnet til automatiseret regressionstestning, hvis størstedelen af testsuiten er automatiseret. Det er den sikreste teknik, men den er ikke særlig effektiv ved manuel testning, da det kan tage lang tid at gennemgå hele regressionssuiten. | Selektiv teknik Dette er en delvis regressionstestningsteknik, hvor teamet kun gentester de funktioner, der er påvirket af de ændrede dele af koden. Dette hænger tæt sammen med udvælgelse af regressionstests. En regressionssuite oprettes ved at vælge eksisterende og nye tests, der er relateret til de områder, hvor der er tilføjet rettelser og forbedringer. Disse testcases prioriteres også baseret på funktionaliteternes risiko og betydning. | PrioriteringsteknikDette er en testtilgang, hvor funktionerne testes baseret på deres betydning og indflydelse på softwarens samlede funktionalitet. Testteamet gennemgår softwarens kernefunktioner og sikrer, at de testes grundigt. Ideen med denne teknik er at sikre, at de vigtigste dele af applikationen ikke er blevet påvirket. Det er dog stadig ikke en særlig effektiv teknik, fordi den ikke fokuserer på områder, der er blevet ændret, og kræver omfattende gentestning af ting, som normalt ikke kan være blevet ændret, siden de sidst blev testet. |
Automatiseringens rolle i regressionstestning
Når det gælder testautomatisering, er det vigtigt at tage pyramiden for testautomatisering i betragtning. Den fastslår, at størstedelen af testene bør være enhedstests, som er hurtigere at køre og derfor kan identificere fejl hurtigere. Derefter kommer integrationstests (eller API-tests), som er færre i antal, men stadig udgør et stort antal tests, der skal udføres.
På det øverste lag tager UI-ende-til-ende-testene længst tid at køre, og der bør være færre af dem end på de øvrige niveauer.
Ved at bruge automatiserede testskripter kan hele regressionsprocessen optimeres. Testcases køres hurtigere, og fejl identificeres hurtigt med meget lidt menneskelig indblanding. De automatiserede tests kan køres, hver gang der foretages ændringer i kildekoden, og baseret på testresultaterne kan testerne finde ud af, hvilke områder der er mest påvirkede, og undersøge disse områder nærmere med deres manuelle testning.
Eksplorativ testning er altid en god måde at supplere automatisering på, fordi det er en form for testning, der ikke kan automatiseres, og testernes erfaring kan tilføre stor værdi ved at identificere mere usædvanlige scenarier.
Regressionstestværktøjer
Udviklingsteamet håndterer normalt de første to lag i pyramiden, så i dette afsnit ser vi nærmere på nogle af de mest populære værktøjer til UI-automatisering, som kan hjælpe med at automatisere testprocessen.
| Selenium | Appium | JMeter | Katalon |
|---|---|---|---|
| SeleniumEt open source-værktøj til automatisering af browsere, som ofte bruges til testautomatisering af webapplikationer. Det er tilgængeligt på flere programmeringssprog, herunder Java, Python, JavaScript og C#, og fungerer på alle operativsystemer og almindelige browsere. De testere, der opretter skripterne, skal dog have kendskab til programmering. | AppiumAppium er den mobile pendant til Selenium – et testframework, der er udviklet til testning af mobilapps. Det er også tilgængeligt på flere programmeringssprog og fungerer på både Android og iOS. | JMeterJMeter er også et open source-værktøj og kan bruges til funktionel testning, men det er især stærkt på grund af sine muligheder for ydelsestestning. Det er et godt værktøj, når du skal udføre belastnings- eller stresstest af din applikation og sammenligne resultaterne (med dem fra før kodeændringerne) for at se, om ydeevnen er blevet påvirket på nogen måde. | KatalonKatalon er et værktøj til softwaretestning af web-, mobil-, API- og desktopapplikationer. Det tilbyder også funktioner til optagelse og afspilning, så det fungerer godt i teams, hvor testerne ikke nødvendigvis samtidig er programmører |
Listen kan naturligvis udvides, fordi der findes mange automatiserede testværktøjer på markedet, og det værktøj, du vælger, afhænger af projektets og teamets specifikke behov.
Implementeringsudfordringer
Selvom regressionstestningsprocessen er en integreret del af udviklingscyklussen, medfører den også udfordringer.
- Tidsbegrænsninger: Tid er sandsynligvis den mest almindelige udfordring ved regressionstestning. Fordi regressionspakken bliver større og større, efterhånden som nye moduler føjes til koden, kan den tage meget tid, som teamet måske ikke altid har. Mere tid brugt på regression kan også øge omkostningerne.
- Vedligeholdelse: Efterhånden som den eksisterende kode ændres for at tilføje nye funktioner og forbedringer, bør testcasene også vedligeholdes. Dette gælder for manuelle og automatiserede tests, fordi alle eksisterende testscenarier bør afspejle de nye krav.
- Prioritering: Et af de vigtigste trin i regressionstestning. Teamet skal sikre, at de under hensyntagen til den tid, der er til rådighed til at udføre regressionstestningen, vælger de rigtige testcases og scripts for at maksimere testdækningen og samtidig minimere størrelsen på regressionspakken.
More Articles
Effektiv regressionstestnings indvirkning på produktkvaliteten
På trods af udfordringerne har regressionstestning, når den udføres korrekt, stor indvirkning på softwarekvaliteten.
Først og fremmest sikrer teamet med regressionstestning, at der ikke introduceres nye fejl, efter at nye funktioner er blevet føjet til applikationen.
Dette har en kaskadeeffekt på kodekvaliteten og den overordnede kvalitet af det system, der testes.
Færre fejl i produktion betyder også større kundetilfredshed og en bedre kundeoplevelse.
Vigtigste pointer
Regressionstestning er en integreret del af teststrategien i enhver vellykket udviklingsproces. Den hjælper med at sikre, at nytilføjede funktioner og rettelser ikke påvirker den eksisterende fungerende kode, og at systemet lever op til de standarder, der kræves for at blive udgivet i produktion.
Med korrekt prioritering af testcases og hjælp fra automatiseringsværktøjer kan regressionsprocessen være en meget effektiv måde at minimere risikoen for at ødelægge noget, der tidligere fungerede. Dette hjælper igen slutbrugeren med at få en god brugeroplevelse.
Hvis du vil læse mere om regressionstestning og alt inden for testning, så tilmeld dig QA Lead-nyhedsbrevet!



