Brugen af kunstig intelligens (AI) i testautomatisering er den nyeste tendens inden for kvalitetssikring. Testning generelt og testautomatisering i særdeleshed synes at være blevet ramt af fejlen “alt er bedre med AI”.
Eftersom AI, maskinlæring og neurale netværk er det helt store lige nu, er det måske uundgåeligt, at AI på en eller anden måde ville finde vej ind i testautomatisering.
En baggrund inden for testautomatisering
Jeg husker en tid for flere år siden, dengang testautomatisering stadig var nyt, hvor et af mine kvalitetssikringsteams arbejdede på et projekt for en stor kunde. Det var en mobilapplikation med millioner af brugere og månedlige udgivelsescyklusser. Kvalitetssikringsteamet var som regel afslappet i løbet af de første to uger af cyklussen og arbejdede derefter febrilsk frem mod udgivelsen – en af de særegne bivirkninger ved agil softwareudvikling, som man ikke læser om i overskrifterne!
Endelig begyndte en af kvalitetssikringslederne, som var træt af at sidde med hænderne i skødet i de rolige to uger, at arbejde på et rammeværk til testautomatisering. Han skrev nogle testskripter i Ruby med Selenium / Appium og Jenkins til en primitiv pipeline, inklusive nogle flotte rapporter med røde / gule / grønne indikatorer for testfejl/-succes.
Det lykkedes ham at gøre dette gennem et par udgivelsescyklusser. Det var på det tidspunkt, vi præsenterede det for vores kvalitetschef, som præsenterede det for vores kunder og gjorde dem begejstrede nok til at betale for automatiseret testning som et delprojekt. Vi var ellevilde og på forkant med udviklingen!
At være på forkant med udviklingen fik imidlertid en ny betydning nogle måneder senere, da vi opdagede den grundlæggende sandhed om testautomatisering, som enhver testautomatiseringsingeniør med respekt for sig selv kæmper med i dag:

Hvorfor siger jeg det? Fordi vi snart følte os som Alice i Mordor-land, der løb som vanvittig sammen med den røde dronning:

Vi havde netop opdaget den kolde virkelighed ved fælden ved testautomatisering: En af vores kvalitetssikringsingeniører måtte holde testsuiten opdateret med applikationen næsten ved hver udgivelsescyklus, fordi ændringerne kom hurtigt og i stort antal!
En ændring af ét feltnavn, og vores softwaretests til automatisering var forsvundet ned i det berømte kaninhul. Begyndelsen på en ny udgivelse var især besværlig, eftersom softwareudviklingsteamet foretog tonsvis af nye tilføjelser.
Testautomatisering har ikke ændret sig grundlæggende siden da, fordi det stadig kræver løbende overvågning og vedligeholdelse. Enhver mulighed for en dramatisk forbedring af fremgangsmåden og implementeringen er først opstået med den seneste udvikling i AI's muligheder.
AI-hype kontra virkelighed
AI-teknologi i sin nuværende form handler primært om at bruge algoritmer til maskinlæring til at træne modeller med forholdsvis store datamængder og derefter bruge de trænede modeller til at foretage forudsigelser eller generere et ønsket output. Næsten alt inden for AI passer ind i denne ganske vist overforenklede beskrivelse. Hvad os angår, er det store spørgsmål imidlertid:
Vil AI rent faktisk kunne hjælpe med automatisk at generere og opdatere testcases? Finde fejl? Forbedre kodedækningen?
Svaret på det spørgsmål er langt fra klart lige nu, fordi vi befinder os på toppen af AI's hypecyklus. Et specifikt underområde, dyb læring, har skabt en stor del af denne begejstring.

Det, jeg finder mest interessant ved denne graf, er dette:
Hvis Siri skulle befinde sig efter hypekurven, så er vi langt fra Kansas, Dorothy!
Jeg mener, jeg kender mange, der er nødt til at gentage sig selv for at få Siri til at forstå, hvad de siger (ingen fornærmelse ment, Siri-fans. Helt seriøst 😉).
Hypekurven fortæller os, at der er stor begejstring over AI's potentiale, som kølner af, før alle går over til den daglige drift og de almindelige forretningsaktiviteter. Med enkle ord siger Gartners smarte graf dette:

Men selvom vi stadig er langt fra singulariteten, har AI i sin nuværende form stadig potentiale til at forbedre testautomatisering markant.
Hvordan genererer maskinlæring automatiserede tests?
- Træning: I træningsfasen skal maskinlæringsmodellen trænes på et specifikt datasæt fra organisationen, herunder kodebasen, applikationsgrænsefladen, logfiler, testcases og endda specifikationsdokumenter. Hvis træningsdatasættet ikke er tilstrækkeligt stort, kan det reducere algoritmens effektivitet.
Nogle værktøjer har fortrænede modeller, der opdateres gennem kontinuerlig læring til specifikke applikationer som f.eks. brugergrænsefladetest, så generaliseret læring kan anvendes i en specifik organisation. - Generering af resultater: Afhængigt af anvendelsen genererer modellen testcases, kontrollerer eksisterende testcases for kodedækning, fuldstændighed og nøjagtighed og udfører endda tests. I alle tilfælde skal en tester kontrollere de genererede resultater for at validere dem og sikre, at de kan bruges.
Hvis vi bruger selvkørende biler som analogi, minder resultaterne mere om kørselsassistance end om en faktisk førerløs bil. - Kontinuerlig forbedring: Efterhånden som en organisation bruger værktøjet regelmæssigt, øges træningsmængden, hvilket potentielt kan øge nøjagtigheden og effektiviteten af eksisterende trænede netværk. Kort sagt bliver AI-systemet ved med at lære og forbedre sig.
Maskinlæringsalgoritmer revolutionerer testautomatisering. Hvis du vil finde værktøjer, der inkorporerer disse avancerede algoritmer, kan du udforske vores guide til førsteklasses værktøjer til softwaretest
Anvendelser af AI i testautomatisering
Lad os se nærmere på nogle anvendelser af AI i testautomatisering, herunder enhedstest, test af brugergrænseflader, API-test og vedligeholdelse af en testpakke til automatisering.
Have an account? Log In
Oprettelse og opdatering af enhedstests
Enhedstest, der ofte bruges som en del af kontinuerlig testning og kontinuerlig integration / kontinuerlig levering (CI / CD) i DevOps, kan være en regulær hovedpine i… asteroidebæltet.
Udviklere bruger typisk betydelig tid på at skrive og vedligeholde enhedstests, hvilket langt fra er lige så sjovt som at skrive applikationskode. I dette tilfælde kan AI-baserede produkter til automatisk oprettelse af enhedstests være nyttige, især for organisationer, der planlægger at indføre enhedstests sent i produktets livscyklus.
Fordele:
- AI-baserede automatiserede enhedstests er et betydeligt skridt fremad sammenlignet med skabelonbaseret automatisk generering af enhedstests ved hjælp af statisk eller dynamisk analyse. De tests, der genereres på denne måde, er faktisk kode og ikke blot stubbe.
- AI-baserede enhedstests kan genereres meget hurtigt, hvilket er nyttigt for en stor eksisterende kodebase.
- Udviklere behøver blot at ændre testene og kan opsætte regressionspakken for enhedstests relativt hurtigt.
Begrænsninger:
- AI-genererede enhedstests afspejler blot den kode, de er baseret på. De kan endnu ikke gætte den tilsigtede funktionalitet i koden. Hvis koden ikke opfører sig som tilsigtet, vil enhedstesten, der genereres for den pågældende kode, afspejle denne utilsigtede adfærd.
Dette er en væsentlig ulempe, fordi hele formålet med enhedstests er at håndhæve og verificere en implicit eller eksplicit kontrakt. - Enhedstests, der genereres ved hjælp af maskinlæring, kan ødelægge eksisterende fungerende enhedstests, og det er udviklerens ansvar at sikre, at dette ikke sker.
- Udviklere skal selv skrive tests for kompleks forretningslogik.
Automatiseret test af brugergrænseflader
Dette er et område, hvor AI begynder at vise sit værd. Ved AI-baseret test af brugergrænseflader fortolker testautomatiseringsværktøjer DOM'en og relateret kode for at fastslå objekternes egenskaber. De bruger også billedgenkendelsesteknikker til at navigere gennem applikationen og visuelt verificere brugergrænsefladeobjekter og -elementer for at oprette tests af brugergrænsefladen.
Derudover bruger AI-testsystemer eksplorativ testning til at finde fejl eller variationer i applikationens brugergrænseflade og generere skærmbilleder til senere kontrol udført af en QA-ingeniør. På samme måde kan de visuelle aspekter af systemet under test (SUT), såsom layout, størrelse og farve, verificeres.
Fordele:
- Automatiseret UI-test kan føre til øget kodedækning.
- Mindre afvigelser i brugergrænsefladen får ikke testpakken til at fejle. Produktets AI-modeller kan håndtere disse.
Begrænsninger:
- For enhver moderne applikation er antallet af platforme, appversioner og browserversioner stort. Det er ikke klart, hvor godt AI-baseret UI-automatisering fungerer under disse forhold. Cloudbaserede testværktøjer kan dog udføre tests parallelt, så dette bliver et interessant område at følge!
Brug af AI til at hjælpe med API-test
Selv uden AI er automatisering af API-test en ikke-triviel opgave, da det indebærer at forstå API'en og derefter opsætte tests for et væld af scenarier for at sikre en omfattende og bred dækning.
Nuværende værktøjer til automatisering af API-test, såsom Tricentis og SoapUI, registrerer API-aktiviteter og -trafik for at analysere og oprette tests. Ændring og opdatering af tests kræver dog, at testere dykker ned i detaljerne ved REST-kald og parametre og derefter opdaterer API-testpakken.
AI-baserede værktøjer til automatisering af API-test forsøger at afhjælpe dette problem ved at undersøge trafik og identificere mønstre og forbindelser mellem API-kald, så de effektivt grupperes efter scenarie. Værktøjerne bruger også eksisterende tests til at lære om relationer mellem API'er, bruger disse oplysninger til at forstå ændringer i API'er og opdaterer eksisterende tests eller opretter nye scenariebaserede tests.
Fordele:
- For nybegyndere inden for test eller personer uden programmeringserfaring kan dette være en stor hjælp til at komme hurtigt i gang.
Endnu en gang ville ændringsstyring være betydeligt lettere, eftersom i det mindste nogle af API-ændringerne kan håndteres af et AI-automatiseringsværktøj.
Begrænsninger:
- Generelt er API-test vanskelig at opsætte, og ikke mange værktøjer tilbyder maskinlæringsbaserede funktioner på dette område. De værktøjer, der gør, har tilsyneladende ret grundlæggende funktioner.
Vedligeholdelse af automatiseringstests
AI-baserede værktøjer kan evaluere ændringer i koden og rette flere eksisterende tests, der ikke stemmer overens med disse ændringer, især hvis kodeændringerne ikke er for komplekse. Opdateringer af UI-elementer, feltnavne og lignende behøver ikke længere at få testpakken til at fejle.
Nogle AI-værktøjer overvåger kørende tests og afprøver ændrede varianter for fejlslagne tests ved at vælge UI-elementer ud fra det bedste match. De kan også kontrollere testdækningen og udfylde manglerne efter behov.
More Articles
AI-baseret generering af testdata
Generering af testdata er endnu et lovende område for AI-modeller. Maskinlæring kan nemt generere datasæt, såsom personlige profilfotos og oplysninger som alder og vægt, baseret på trænede maskinlæringsmodeller, der lærer ved hjælp af eksisterende produktionsdatasæt.
På denne måde ligner de genererede testdata produktionsdata meget, hvilket er ideelt til brug i softwaretest. Den maskinlæringsmodel, der genererer data, kaldes et generativt adversarialt netværk (GAN).
Testautomatiseringsværktøjer, der bruger maskinlæring
Se værktøjerne nedenfor, hvis du leder efter software, der bruger maskinlæring til at udføre og følge automatiserede tests. Mange inkluderer muligheder med åben kildekode eller uden kode, der imødekommer behovene hos dit testteam.
Konklusion
Kunstig intelligens har haft en betydelig indvirkning på testværktøjer og -metoder, og især på testautomatisering. En gennemgang af de nuværende værktøjer, der lover AI, viser, at selvom der tilføjes mange nye funktioner, er flere af disse funktioner stadig under udvikling.
Hvis du fandt denne artikel nyttig, kan du abonnere på The QA Lead Newsletter og holde dig opdateret med alle de seneste nyheder inden for testverdenen.



