KI i testautomatisering: Sådan fungerer det

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Hvordan påvirker og forbedrer KI og maskinlæring testautomatisering? Se KI-hypen kontra virkeligheden i denne artikel!

Brugen af kunstig intelligens (AI) i testautomatisering er den seneste tendens inden for kvalitetssikring. Testning generelt og testautomatisering i særdeleshed ser ud til at være blevet ramt af fejlen “alt er bedre med AI”.

Eftersom AI, maskinlæring og neurale netværk er det hotteste lige nu, er det måske uundgåeligt, at AI på en eller anden måde ville finde vej ind i testautomatisering.

En baggrund 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 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 stille 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 i et par udgivelsescyklusser. Det var på det tidspunkt, at vi præsenterede det for vores kvalitetschef, som solgte det til vores kunder og fik dem til at blive så begejstrede, at de ville betale for automatiseret testning som et delprojekt. Vi var ovenud begejstrede og helt på forkant med udviklingen!

At være på forkant med udviklingen fik dog en ny betydning nogle måneder senere, da vi opdagede den grundlæggende sandhed om testautomatisering, som enhver testautomatiseringsingeniør, der er sit salt værd, kæmper med i dag:

Man opretter ikke bare automatiserede tests!

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

“Man skal løbe alt, hvad man kan, for blot at blive på samme sted.” – Lewis Carroll, Alice i Eventyrland. (Kilde)

Vi havde netop opdaget den kolde virkelighed ved testautomatiseringsfælden: En af vores kvalitetssikringsingeniører var nødt til at holde testpakken 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 havnet i det berømte kaninhul. Begyndelsen på en ny udgivelse var særligt besværlig, eftersom softwareudviklingsteamet foretog masser af nye tilføjelser.

Testautomatisering har ikke grundlæggende ændret sig siden da, fordi det stadig kræver kontinuerlig overvågning og vedligeholdelse. Muligheden for en dramatisk forbedring af tilgangen og implementeringen er først opstået med de seneste fremskridt inden for AI's funktioner.

AI-hype kontra virkelighed

AI-teknologi i sin nuværende form handler hovedsageligt om at bruge maskinlærings algoritmer til at træne modeller med relativt store datamængder og derefter bruge de trænede modeller til at foretage forudsigelser eller generere et ønsket resultat. Næsten al AI passer ind i denne ganske vist oversimplificerede beskrivelse. Hvad os angår, er det vigtigste spørgsmål dog:

Vil AI faktisk kunne hjælpe med automatisk at generere og opdatere testtilfælde? 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 meget af denne begejstring.

Gartners hypecyklus for kunstig intelligens, 2019. (Kilde)

Det, jeg finder mest interessant ved denne graf, er dette:

Hvis Siri efter sigende er forbi 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 for AI's potentiale, som kølnes af, før alle går over til den daglige drift og de almindelige forretningsaktiviteter. Med enkle ord siger Gartners smarte graf dette:

Kunstig intelligens: skærmbillede af forventning kontra virkelighed
Kunstig intelligens: forventning kontra virkelighed.

Selvom vi stadig er langt fra singulariteten, har AI i sin nuværende form stadig potentiale til at forbedre testautomatisering betydeligt.

Hvordan producerer maskinlæring automatiserede tests?

  1. 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 UI-test, så generaliseret læring kan anvendes i en specifik organisation.

  2. Generering af output/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 det genererede output for at validere det og sikre, at det kan anvendes.

    Hvis vi bruger selvkørende biler som analogi, minder resultaterne mere om kørselsassistance end om en faktisk førerløs bil.

  3. Kontinuerlig forbedring: Efterhånden som en organisation bruger værktøjet regelmæssigt, vokser træningsmængden, hvilket potentielt øger 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 indeholder disse avancerede algoritmer, kan du udforske vores guide til førsteklasses softwaretestværktøjer

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 automatiseret testsuite.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Oprettelse og opdatering af enhedstests

Enhedstest, der ofte anvendes som en del af kontinuerlig test, kontinuerlig integration/ kontinuerlig levering (CI / CD) i DevOps, kan være en virkelig smerte i… asteroidebæltet.

Udviklere bruger typisk betydelig tid på at skrive og vedligeholde enhedstests, hvilket ikke er nær 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 i forhold til 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 ganske enkelt den kode, de er bygget på. De kan endnu ikke gætte kodens tilsigtede funktionalitet. Hvis koden ikke opfører sig som tilsigtet, vil den enhedstest, der genereres for koden, afspejle denne utilsigtede adfærd.

    Dette er en betydelig 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. I AI-baseret UI-testning analyserer testautomatiseringsværktøjer DOM'en og den relaterede kode for at fastslå objektegenskaber. De bruger også billedgenkendelsesteknikker til at navigere gennem applikationen og visuelt verificere UI-objekter og -elementer for at oprette UI-tests.

Derudover bruger AI-testsystemer eksplorativ testning til at finde fejl eller variationer i applikationens UI og generere skærmbilleder til senere verificering 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-testning kan føre til øget kodedækning.
  • Mindre afvigelser i UI'et får ikke testpakken til at fejle. Produkt-AI-modeller kan håndtere disse.

Begrænsninger:

  • For enhver moderne applikation er antallet af platforme, appversioner og browserversioner stort. Det er uklart, hvor godt AI-baseret UI-automatisering fungerer under disse forhold. Cloudbaserede testværktøjer kan dog udføre tests parallelt, så det bliver et interessant område at følge!

Brug af AI til at understøtte API-testning

Selv uden AI er automatisering af API-testning en ikke-triviel opgave, da den indebærer forståelse af API'et og derefter opsætning af tests for en lang række scenarier for at sikre dybde og bredde i dækningen.

Aktuelle API-testautomatiseringsværktøjer, 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 i REST-kald og parametre og derefter opdaterer API-testpakken.

AI-baserede værktøjer til automatiseret API-testning forsøger at afhjælpe dette problem ved at undersøge trafik og identificere mønstre og forbindelser mellem API-kald og dermed effektivt gruppere dem efter scenarie. Værktøjerne bruger også eksisterende tests til at lære om relationer mellem API'er, anvender disse til at forstå ændringer i API'er og opdaterer eksisterende tests eller opretter nye scenariebaserede tests. 

Fordele:

  • For nybegyndere inden for testning eller personer uden programmeringserfaring kan dette være en stor hjælp til at få dem hurtigt i gang.

    Endnu en gang ville ændringshåndtering 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-testning 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, ser ud til at have ret rudimentære funktioner.

Vedligeholdelse af automatiserede tests

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 baseret på det bedste match. De kan også verificere testdækningen og udfylde hullerne 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 fotografier af personlige profiler og oplysninger som alder og vægt, baseret på trænede maskinlæringsmodeller, der bruger eksisterende produktionsdatasæt til at lære. 

På denne måde ligner de genererede testdata i høj grad produktionsdata, hvilket er ideelt til brug i softwaretestning. 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 omfatter muligheder med åben kildekode eller uden kode, der opfylder behovene hos dit testteam.

Konklusion

Kunstig intelligens har haft en betydelig indvirkning på testværktøjer og -metoder og især på testautomatisering. En oversigt over de nuværende værktøjer, der lover AI-funktioner, viser, at selvom der tilføjes mange nye funktioner, er flere af disse funktioner stadig på vej mod at blive modne.

Hvis du fandt denne artikel nyttig, kan du tilmelde dig The QA Lead Newsletter og holde dig opdateret med alle de seneste nyheder inden for testverdenen.

Harold Fernandes
Harold Fernandes is a multipotentialite and has worked on the product side and engineering side of multiple startups. He has led software, testing, and UX teams for over 20 years. He is also an international award-winning author and speaker, a certified mindfulness coach, a musician, and a bibliophile. He is at his happiest doing something new!

You may also like