Bruken av kunstig intelligens (AI) i testautomatisering er den nyeste trenden innen kvalitetssikring. Testing generelt, og testautomatisering spesielt, ser ut til å ha blitt rammet av feilen «alt blir bedre med AI».
Siden AI, maskinlæring og nevrale nettverk er det heteste akkurat nå, er det kanskje uunngåelig at AI på en eller annen måte skulle finne veien inn i testautomatisering.
En bakgrunn i testautomatisering
Jeg husker en tid for flere år siden, da testautomatisering fortsatt var nytt, da et av kvalitetssikringsteamene mine jobbet med et prosjekt for en stor kunde. Det var en mobilapplikasjon med millioner av brukere og månedlige lanseringssykluser. Kvalitetssikringsteamet var vanligvis avslappet de to første ukene av syklusen og jobbet febrilsk deretter frem til lanseringen – en av de merkelige bieffektene ved smidig programvareutvikling som du ikke leser om i overskriftene!
Til slutt begynte en av kvalitetssikringslederne, lei av å sitte med hendene i fanget de rolige to ukene, å jobbe med et rammeverk for testautomatisering. Han skrev noen testskript i Ruby med Selenium / Appium og Jenkins for en enkel arbeidsflyt, inkludert noen stilige rapporter med røde, gule og grønne indikatorer for testfeil/-suksess.
Dette gjorde han med hell i et par lanseringssykluser. Det var da vi presenterte det for kvalitetssjefen vår, som presenterte det for kundene våre og fikk dem entusiastiske nok til å betale for automatisert testing som et delprosjekt. Vi var overlykkelige og helt i front!
Å være helt i front fikk imidlertid en ny betydning noen måneder senere, da vi oppdaget den grunnleggende sannheten om testautomatisering som enhver dyktig testautomatiseringsingeniør sliter med i dag:

Hvorfor sier jeg dette? Fordi vi ganske snart følte oss som Alice i Mordor-land, der vi løp som gale sammen med den røde dronningen:

Vi hadde nettopp oppdaget den harde virkeligheten i testautomatiseringsfellen: En av kvalitetssikringsingeniørene våre måtte holde testpakken oppdatert med applikasjonen nesten hver lanseringssyklus fordi endringene kom raskt og i stort omfang!
Én endring av et feltnavn, og programvaretestene våre for automatisering havnet i det berømte kaninhullet. Starten på en ny lansering var spesielt problematisk ettersom programvareutviklingsteamet gjorde mengder av nye tillegg.
Testautomatisering har ikke endret seg grunnleggende siden den gang, fordi det fortsatt krever kontinuerlig overvåking og vedlikehold. Muligheten for dramatiske forbedringer i tilnærmingen og implementeringen har først blitt synlig med den nylige utviklingen i AIs kapasiteter.
AI-hype kontra virkelighet
AI-teknologi i sin nåværende form handler hovedsakelig om å bruke maskinlærings algoritmer til å trene modeller med relativt store datamengder, og deretter bruke de trente modellene til å lage forutsigelser eller generere et ønsket resultat. Nesten alt innen AI passer inn i denne riktignok overforenklede beskrivelsen. For vårt vedkommende er imidlertid hovedspørsmålet her:
Vil AI faktisk kunne bidra til å generere og oppdatere testtilfeller automatisk? Finne feil? Forbedre kodedekningen?
Svaret på dette spørsmålet er langt fra klart akkurat nå, fordi vi befinner oss på toppen av hype-syklusen for AI. Et spesifikt underfelt, dyp læring, har skapt mye av denne begeistringen.

Det jeg synes er mest interessant med denne grafen, er dette:
Hvis Siri liksom skal ha kommet forbi hypekurven, er vi langt unna Kansas, Dorothy!
Jeg mener, jeg kjenner mange som må gjenta seg for å få Siri til å forstå hva de sier (ikke vondt ment, Siri-fans. Helt seriøst 😉).
Hypekurven forteller oss at det er stor begeistring for AIs potensial, men at begeistringen avtar før alle går over til den daglige, rutinepregede driften. Enkelt sagt er dette det Gartners fancy graf sier:

Selv om vi fortsatt er langt unna singulariteten, har AI i sin nåværende form fortsatt potensial til å forbedre testautomatisering betydelig.
Hvordan produserer maskinlæring automatiserte tester?
- Opplæring: I opplæringsfasen må maskinlæringsmodellen trenes på et spesifikt datasett fra organisasjonen, inkludert kodebasen, applikasjonsgrensesnittet, logger, testtilfeller og til og med spesifikasjonsdokumenter. Et for lite opplæringsdatasett kan redusere algoritmens effektivitet.
Noen verktøy har forhåndsopplærte modeller som oppdateres gjennom kontinuerlig læring for spesifikke applikasjoner, for eksempel testing av brukergrensesnitt, slik at generalisert læring kan brukes i en bestemt organisasjon. - Generering av utdata/resultater: Avhengig av bruksområdet genererer modellen testtilfeller, kontrollerer eksisterende testtilfeller for kodens dekning, fullstendighet og nøyaktighet, og utfører til og med tester. I alle tilfeller må en tester kontrollere de genererte resultatene for å validere dem og sikre at de kan brukes.
Hvis vi bruker selvkjørende biler som analogi, er resultatene mer som førerassistanse enn en faktisk førerløs bil. - Kontinuerlig forbedring: Ettersom en organisasjon fortsetter å bruke verktøyet regelmessig, øker opplæringsdataene, noe som potensielt kan øke nøyaktigheten og effektiviteten til eksisterende, opplærte nettverk. Kort sagt fortsetter AI-systemet å lære og forbedre seg.
Maskinlæringsalgoritmer revolusjonerer testautomatisering. Hvis du vil finne verktøy som inneholder disse avanserte algoritmene, kan du utforske vår veiledning til førsteklasses verktøy for programvaretesting
Bruksområder for AI i testautomatisering
La oss se nærmere på noen bruksområder for AI i testautomatisering, blant annet enhetstesting, testing av brukergrensesnitt, API-testing og vedlikehold av en testpakke for automatisering.
Have an account? Log In
Opprette og oppdatere enhetstester
Enhetstesting, som ofte brukes som en del av kontinuerlig testing, kontinuerlig integrasjon / kontinuerlig levering (CI / CD) i DevOps, kan være en skikkelig hodepine.
Utviklere bruker vanligvis betydelig tid på å skrive og vedlikeholde enhetstester, noe som ikke er på langt nær like morsomt som å skrive applikasjonskode. I dette tilfellet kan AI-baserte produkter for automatisk oppretting av enhetstester være nyttige, særlig for organisasjoner som planlegger å innføre enhetstester sent i produktets livssyklus.
Fordeler:
- AI-baserte automatiserte enhetstester er et betydelig steg videre enn malbasert, automatisert generering av enhetstester ved hjelp av statisk eller dynamisk analyse. Testene som genereres på denne måten, er faktisk kode, ikke bare stubber.
- AI-baserte enhetstester kan genereres svært raskt, noe som er nyttig for en stor eksisterende kodebase.
- Utviklere trenger bare å endre testene og kan sette opp regresjonstestpakken for enheter relativt raskt.
Begrensninger:
- AI-genererte enhetstester gjenspeiler ganske enkelt koden de er bygget på. De kan ennå ikke gjette den tiltenkte funksjonaliteten til koden. Hvis koden ikke oppfører seg som tiltenkt, vil enhetstesten som genereres for denne koden, gjenspeile den utilsiktede atferden.
Dette er en betydelig ulempe fordi hele poenget med enhetstester er å håndheve og verifisere en implisitt eller eksplisitt kontrakt. - Enhetstester som genereres ved hjelp av maskinlæring, kan ødelegge eksisterende fungerende enhetstester, og det er utviklerens ansvar å sørge for at dette ikke skjer.
- Utviklere må selv skrive tester for kompleks forretningslogikk.
Automatisert testing av brukergrensesnitt
Dette er et område der AI begynner å utmerke seg. I AI-basert testing av brukergrensesnitt analyserer testautomatiseringsverktøy DOM-en og tilhørende kode for å fastslå objektegenskaper. De bruker også bildegjenkjenningsteknikker til å navigere gjennom applikasjonen og visuelt verifisere brukergrensesnittobjekter og -elementer for å opprette tester av brukergrensesnittet.
I tillegg bruker AI-testsystemer utforskende testing for å finne feil eller variasjoner i applikasjonens brukergrensesnitt og generere skjermbilder for senere verifisering av en QA-ingeniør. På samme måte kan de visuelle aspektene ved systemet som testes (SUT), for eksempel layout, størrelse og farge, verifiseres.
Fordeler:
- Automatisert UI-testing kan føre til økt kodedekning.
- Mindre avvik i brukergrensesnittet fører ikke til at testpakken mislykkes. Produktets AI-modeller kan håndtere disse.
Begrensninger:
- For alle moderne applikasjoner er antallet plattformer, appversjoner og nettleserversjoner stort. Det er uklart hvor godt AI-basert UI-automatisering fungerer under disse forholdene. Skybaserte testverktøy kan imidlertid kjøre tester parallelt, så dette blir et interessant område å følge med på!
Bruke AI til å bistå ved API-testing
Selv uten AI, er automatisering av API-testing en ikke-triviell oppgave, siden det innebærer å forstå API-et og deretter sette opp tester for en rekke scenarioer for å sikre både dybde og bredde i dekningen.
Dagens verktøy for automatisering av API-tester, som Tricentis og SoapUI, registrerer API-aktiviteter og -trafikk for å analysere og opprette tester. Endring og oppdatering av tester krever imidlertid at testere setter seg inn i detaljene i REST-kall og parametere, og deretter oppdaterer API-testpakken.
AI-baserte verktøy for automatisering av API-testing forsøker å redusere dette problemet ved å undersøke trafikk og identifisere mønstre og forbindelser mellom API-kall, og effektivt gruppere dem etter scenario. Verktøyene bruker også eksisterende tester til å lære om relasjoner mellom API-er, bruker dette til å forstå endringer i API-er, og oppdaterer eksisterende tester eller oppretter nye scenariobaserte tester.
Fordeler:
- For nybegynnere innen testing eller personer uten programmeringserfaring kan dette være svært nyttig for å hjelpe dem med å «komme raskt i gang».
Endringshåndtering vil nok en gang bli betydelig enklere, ettersom i det minste noen av API-endringene kan håndteres av et AI-automatiseringsverktøy.
Begrensninger:
- Generelt er API-testing vanskelig å sette opp, og det er ikke mange verktøy som tilbyr maskinlæringsbaserte funksjoner på dette området. De som gjør det, ser ut til å ha ganske rudimentære funksjoner.
Vedlikehold av automatiserte tester
AI-baserte verktøy kan evaluere endringer i koden og korrigere flere eksisterende tester som ikke samsvarer med disse endringene, særlig hvis kodeendringene ikke er for komplekse. Oppdateringer av UI-elementer, feltnavn og lignende trenger ikke lenger å føre til at testpakken mislykkes.
Noen AI-verktøy overvåker tester som kjører, og prøver ut modifiserte varianter for tester som mislyktes, ved å velge UI-elementer basert på beste samsvar. De kan også kontrollere testdekningen og supplere manglene ved behov.
More Articles
AI-basert generering av testdata
Generering av testdata er et annet lovende område for AI-modeller. Maskinlæring kan enkelt generere datasett, som personlige profilbilder og informasjon som alder og vekt, basert på trente maskinlæringsmodeller som bruker eksisterende produksjonsdatasett til å lære.
På denne måten ligner de genererte testdataene svært mye på produksjonsdata, noe som er ideelt for bruk i programvaretesting. Maskinlæringsmodellen som genererer data, kalles et generativt adversarialt nettverk (GAN).
Testautomatiseringsverktøy som bruker maskinlæring
Se på verktøyene nedenfor hvis du ser etter programvare som bruker maskinlæring til å gjennomføre og spore automatiserte tester. Mange inkluderer alternativer med åpen kildekode eller uten kode for å dekke behovene til testteamet ditt.
Konklusjon
Kunstig intelligens har hatt stor innvirkning på testverktøy og -metoder, og særlig på testautomatisering. En oversikt over dagens verktøy som lover AI-funksjoner, viser at selv om mange nye funksjoner blir lagt til, er flere av disse funksjonene fortsatt under utvikling.
Hvis du syntes denne artikkelen var nyttig, kan du abonnere på The QA Lead Newsletter og holde deg oppdatert med alle de nyeste oppdateringene innen testing.




