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 «alt blir bedre med AI»-feilen.
Siden AI, maskinlæring og nevrale nettverk er det alle snakker om akkurat nå, er det kanskje uunngåelig at AI finner veien inn i testautomatisering på en eller annen måte.
En bakgrunn for testautomatisering
Jeg husker en gang for flere år siden, da testautomatisering fortsatt var nytt, og et av kvalitetssikringsteamene mine jobbet med et prosjekt for en stor kunde. Det var en mobilapplikasjon med millioner av brukere og månedlige lanseringssykluser. QA-teamet tok det vanligvis med ro de to første ukene av syklusen og jobbet deretter hektisk frem mot lanseringen – en av de særegne bivirkningene ved smidig programvareutvikling som du ikke leser om i overskriftene!
Til slutt begynte en av QA-lederne, som var lei av å sitte med hendene i fanget de rolige to første ukene, å arbeide med et rammeverk for testautomatisering. Han skrev noen testskripter i Ruby med Selenium / Appium og Jenkins for en enkel kjøringspipeline, inkludert noen stilige rapporter med røde / gule / grønne indikatorer for testfeil/-suksess.
Han gjennomførte dette med suksess 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 i ekstase og helt i forkant av utviklingen!
Å være helt i forkant fikk imidlertid en ny betydning noen måneder senere, da vi oppdaget denne grunnleggende sannheten om testautomatisering som enhver QA-automatiseringsingeniør med respekt for seg selv må kjempe med i dag:

Hvorfor sier jeg dette? Fordi vi snart følte oss som Alice i Mordor-landet, løpende som gale med den røde dronningen:

Vi hadde nettopp oppdaget den harde virkeligheten ved testautomatiseringsfellen: En av QA-ingeniørene våre måtte holde automatiseringspakken 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 var nede i det berømte kaninhullet. Starten på en ny lansering var spesielt problematisk, ettersom programvareutviklingsteamet gjorde massevis av nye tilføyelser.
Testautomatisering har ikke endret seg fundamentalt siden den gang, fordi den fortsatt krever kontinuerlig overvåking og vedlikehold. Muligheten for dramatiske forbedringer i tilnærmingen og implementeringen har først blitt synlig med den nyere utviklingen i AI-ens kapabiliteter.
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 all AI passer inn i denne, riktignok overforenklede, beskrivelsen. Så langt det gjelder oss, er imidlertid hovedspørsmålet her:
Vil AI faktisk kunne bidra til å generere og oppdatere testtilfeller automatisk? Finne feil? Forbedre kodedekningen?
Svaret på det spørsmålet er langt fra klart akkurat nå, fordi vi befinner oss på toppen av AI-hypekurven. Et bestemt underområde, 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 fra Kansas, Dorothy!
Jeg mener, jeg kjenner mange som må gjenta seg selv for å få Siri til å forstå hva de sier (ingen fornærmelse ment, Siri-fans. Helt ærlig 😉).
Hypekurven forteller oss at det er stor begeistring for AI-potensialet, som avtar før alle går over i den daglige, forretningsmessige driftsmodusen. Enkelt sagt er dette det Gartners fancy graf viser:

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. Hvis opplæringsdatasettet ikke er tilstrekkelig stort, kan det redusere algoritmens effektivitet.
Noen verktøy har forhåndstrente modeller som oppdateres gjennom kontinuerlig læring for spesifikke applikasjoner, som testing av brukergrensesnitt, slik at generalisert læring kan brukes i en spesifikk organisasjon. - Generering av utdata/resultater: Avhengig av bruksområdet genererer modellen testtilfeller, kontrollerer eksisterende testtilfeller for kodendekning, fullstendighet og nøyaktighet, og utfører til og med tester. I alle tilfeller må en tester kontrollere resultatet som genereres, for å validere det og sikre at det kan brukes.
Hvis vi bruker selvkjørende biler som analogi, er resultatene mer som kjøreassistanse enn en faktisk førerløs bil. - Kontinuerlig forbedring: Etter hvert som en organisasjon fortsetter å bruke verktøyet regelmessig, øker mengden treningsdata, noe som potensielt kan øke nøyaktigheten og effektiviteten til eksisterende, trente 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 guide 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, inkludert enhetstesting, testing av brukergrensesnitt, API-testing og vedlikehold av en automatisert testpakke.
Have an account? Log In
Opprette og oppdatere enhetstester
Enhetstesting, som ofte brukes som en del av kontinuerlig testing og kontinuerlig integrasjon / kontinuerlig levering (CI / CD) i DevOps, kan være en skikkelig hodepine i … asteroidebeltet.
Vanligvis bruker utviklere betydelig tid på å skrive og vedlikeholde enhetstester, noe som på langt nær er like morsomt som å skrive applikasjonskode. I dette tilfellet kan AI-baserte produkter for automatisert oppretting av enhetstester være nyttige, spesielt 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 KI begynner å utmerke seg. I KI-basert UI-testing analyserer verktøy for testautomatisering DOM-en og tilhørende kode for å fastslå objektegenskaper. De bruker også bildegjenkjenningsteknikker til å navigere gjennom applikasjonen og visuelt verifisere UI-objekter og -elementer for å opprette UI-tester.
I tillegg bruker KI-testsystemer utforskende testing for å finne feil eller variasjoner i applikasjonens UI 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 UI-et fører ikke til at testpakken mislykkes. KI-modeller kan håndtere disse.
Begrensninger:
- For enhver moderne applikasjon er antallet plattformer, appversjoner og nettleserversjoner stort. Det er uklart hvor godt KI-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å!
Bruk av KI for å bistå i API-testing
Selv uten KI er automatisering av API-testing en krevende oppgave, siden det innebærer å forstå API-et og deretter sette opp tester for en rekke scenarier for å sikre både dybde og bredde i dekningen.
Dagens verktøy for automatisering av API-testing, som Tricentis og SoapUI, registrerer API-aktiviteter og -trafikk for å analysere og opprette tester. Å endre og oppdatere tester krever imidlertid at testere går inn i detaljene i REST-kall og parametere, og deretter oppdaterer API-testpakken.
KI-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 forholdet 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 ville nok en gang blitt betydelig enklere, siden i hvert fall noen av API-endringene kan håndteres av et KI-verktøy for automatisering.
Begrensninger:
- Generelt er API-testing vanskelig å sette opp, og ikke mange verktøy tilbyr maskinlæringsbaserte funksjoner på dette området. De som gjør det, ser ut til å ha ganske grunnleggende funksjoner.
Vedlikehold av automatiserte tester
KI-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 KI-verktøy overvåker tester som kjører, og prøver ut endrede varianter for mislykkede tester ved å velge UI-elementer basert på beste samsvar. De kan også verifisere testdekningen og fylle ut manglene ved behov.
More Articles
KI-basert generering av testdata
Generering av testdata er et annet lovende område for KI-modeller. Maskinlæring kan enkelt generere datasett, for eksempel bilder og informasjon i personprofiler som alder og vekt, basert på trente maskinlæringsmodeller som lærer ved hjelp av eksisterende produksjonsdatasett.
På denne måten ligner de genererte testdataene svært på produksjonsdata, noe som er ideelt for bruk i programvaretesting. Maskinlæringsmodellen som genererer data, kalles et generativt motstandernettverk (GAN).
Verktøy for testautomatisering som bruker maskinlæring
Ta en titt 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 å møte behovene til testteamet ditt.
Konklusjon
Kunstig intelligens har hatt stor innvirkning på testverktøy og -metoder, og særlig på testautomatisering. En oversikt over de nåværende verktøyene som lover å bruke kunstig intelligens, 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å nyhetsbrevet til The QA Lead og holde deg oppdatert på alle de nyeste oppdateringene innen testverdenen.

