AI inom testautomatisering: Så här fungerar det

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

Hur påverkar och förbättrar AI och maskininlärning testautomatisering? Läs den här artikeln och jämför AI-hypen med verkligheten!

Användningen av artificiell intelligens (AI) inom testautomatisering är den senaste trenden inom kvalitetssäkring. Testning i allmänhet, och testautomatisering i synnerhet, verkar ha drabbats av buggen ”allt blir bättre med AI”.

Eftersom AI, maskininlärning och neurala nätverk är det hetaste just nu är det kanske oundvikligt att AI på något sätt skulle hitta in i testautomatiseringen.

En bakgrund till testautomatisering

Jag minns en tid för flera år sedan, när testautomatisering fortfarande var nytt och ett av mina kvalitetssäkringsteam arbetade med ett projekt för en stor kund. Det var en mobilapplikation med miljontals användare och månatliga lanseringscykler. QA-teamet var vanligtvis avslappnat under cykelns två första veckor och arbetade därefter febrilt fram till lanseringen – en av de märkliga bieffekterna av agil mjukvaruutveckling som man inte läser om i rubrikerna!

Slutligen fick en av QA-ledarna, som hade tröttnat på att rulla tummarna under de lugna två veckorna, för sig att börja arbeta med ett ramverk för testautomatisering. Han skrev några testskript i Ruby med Selenium / Appium och Jenkins för en enkel pipeline, inklusive snygga rapporter med röda, gula och gröna indikatorer för misslyckade eller lyckade tester.

Han lyckades göra detta under ett par lanseringscykler. Då presenterade vi det för vår kvalitetschef, som presenterade det för våra kunder och fick dem tillräckligt entusiastiska för att betala för automatiserad testning som ett delprojekt. Vi svävade på moln, i den absoluta framkanten!

Den absoluta framkanten fick dock en ny innebörd några månader senare, när vi upptäckte den grundläggande sanningen om testautomatisering som alla QA-automatiseringsingenjörer värda namnet brottas med än i dag:

Man skapar inte bara automatiserade tester!

Varför säger jag detta? Jo, snart kände vi oss som Alice i Mordor-landet, springande som galningar med den röda drottningen:

”Man måste springa så fort man kan för att hålla sig kvar på samma plats.” – Lewis Carroll, Alice i Underlandet. (Källa)

Vi hade just upptäckt den bistra verkligheten i testautomatiseringsfällan: en av våra QA-ingenjörer var tvungen att hålla automatiseringssviten uppdaterad med applikationen nästan varje lanseringscykel, eftersom förändringarna kom snabbt och i stora mängder!

En enda ändring av ett fältnamn och våra automatiserade programvarutester befann sig i det berömda kaninhålet. Början av en ny lansering var särskilt problematisk eftersom mjukvaruutvecklingsteamet lade till mängder av nya funktioner.

Testautomatisering har inte förändrats i grunden sedan dess, eftersom den fortfarande kräver kontinuerlig övervakning och underhåll. Möjligheten till en dramatisk förbättring av tillvägagångssättet och implementeringen har först blivit synlig genom den senaste utvecklingen av AI:s kapacitet.

AI-hajp kontra verklighet

AI-teknik i sin nuvarande skepnad handlar främst om att använda algoritmer för maskininlärning för att träna modeller med relativt stora datamängder och sedan använda de tränade modellerna för att göra förutsägelser eller generera önskade resultat. Nästan allt inom AI ryms i denna, medvetet förenklade, beskrivning. För oss är dock den viktigaste frågan här:

Kommer AI faktiskt att kunna hjälpa till att automatiskt generera och uppdatera testfall? Hitta buggar? Förbättra kodtäckningen?

Svaret på den frågan är långt ifrån klart just nu, eftersom vi befinner oss på toppen av AI-hajpcykeln. Ett specifikt delområde, djupinlärning, har orsakat mycket av denna entusiasm.

Gartners hajpkurva för artificiell intelligens, 2019. (Källa)

Det jag tycker är mest intressant med den här grafen är följande:

Om Siri förväntas ha passerat hajpkurvan, då har vi långt kvar till Kansas, Dorothy!

Jag menar, jag känner många som måste upprepa sig för att få Siri att förstå vad de säger (inget illa menat, alla Siri-fans. På allvar 😉).

Hypekurvan visar att det finns en stor entusiasm kring AI:s potential, som avtar innan alla går över till det vardagliga, affärsmässiga arbetssättet. Enkelt uttryckt är det här vad Gartners tjusiga diagram säger:

Artificiell intelligens: skärmbild av förväntningar kontra verklighet
Artificiell intelligens: förväntningar kontra verklighet.

Även om vi fortfarande har långt kvar till singulariteten, har AI i sin nuvarande form fortfarande potential att avsevärt förbättra testautomatisering.

Hur skapar maskininlärning automatiserade tester?

  1. Träning: Under träningsfasen måste maskininlärningsmodellen tränas på en specifik organisationsdatauppsättning, inklusive kodbasen, applikationsgränssnittet, loggar, testfall och även specifikationsdokument. Om träningsdatauppsättningen inte är tillräckligt stor kan algoritmens effektivitet minska.

    Vissa verktyg har förtränade modeller som uppdateras genom kontinuerligt lärande för specifika tillämpningar, exempelvis användargränssnittstestning, så att generaliserat lärande kan användas inom en specifik organisation.

  2. Generering av utdata/resultat: Beroende på användningsområdet genererar modellen testfall, kontrollerar befintliga testfall med avseende på kodtäckning, fullständighet och noggrannhet samt utför till och med tester. I samtliga fall behöver en testare kontrollera den genererade utdatan för att validera den och säkerställa att den går att använda.

    Om vi använder självkörande bilar som liknelse är resultaten mer som körassistans än en faktisk förarlös bil.

  3. Kontinuerlig förbättring: När en organisation fortsätter att använda verktyget regelbundet ökar träningsdatan, vilket potentiellt ökar noggrannheten och effektiviteten hos befintliga tränade nätverk. Kort sagt fortsätter AI-systemet att lära sig och förbättras.

Maskininlärningsalgoritmer revolutionerar testautomatiseringen. Om du vill hitta verktyg som innehåller dessa avancerade algoritmer kan du utforska vår guide till förstklassiga verktyg för programvarutestning

Tillämpningar av AI inom testautomatisering

Nu ska vi titta närmare på några tillämpningar av AI inom testautomatisering, inklusive enhetstestning, testning av användargränssnitt, API-testning och underhåll av en automatiserad testsvit.

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

Have an account? Log In

Skapa och uppdatera enhetstester

Enhetstestning, som ofta används som en del av kontinuerlig testning, kontinuerlig integration/ kontinuerlig leverans (CI / CD) inom DevOps, kan vara riktigt plågsamt i... asteroidbältet.

Vanligtvis lägger utvecklare ner mycket tid på att skriva och underhålla enhetstester, vilket inte alls är lika roligt som att skriva applikationskod. I det här fallet kan AI-baserade produkter för automatiserat skapande av enhetstester vara användbara, särskilt för organisationer som planerar att införa enhetstester sent i produktens livscykel.

Fördelar: 

  • AI-baserade automatiserade enhetstester är ett betydande steg framåt jämfört med mallbaserad automatiserad generering av enhetstester med statisk eller dynamisk analys. De tester som genereras på detta sätt är faktisk kod, inte bara stubbar.
  • AI-baserade enhetstester kan genereras mycket snabbt, vilket är användbart för en stor befintlig kodbas.
  • Utvecklare behöver bara ändra testerna och kan konfigurera regressionssviten för enhetstester relativt snabbt.

Begränsningar: 

  • AI-genererade enhetstester speglar helt enkelt den kod som de bygger på. De kan ännu inte gissa kodens avsedda funktionalitet. Om koden inte fungerar som avsett kommer enhetstestet som genereras för den koden att återspegla det oavsedda beteendet.

    Detta är en betydande nackdel eftersom hela poängen med enhetstester är att upprätthålla och verifiera ett implicit eller explicit kontrakt.
  • Enhetstester som genereras med maskininlärning kan få befintliga fungerande enhetstester att sluta fungera, och det är utvecklarens ansvar att se till att detta inte händer.
  • Utvecklare behöver själva skriva tester för komplex affärslogik.

Automatiserad testning av användargränssnitt 

Det här är ett område där AI börjar utmärka sig. Vid AI-baserad UI-testning tolkar verktyg för testautomatisering DOM:en och relaterad kod för att fastställa objektegenskaper. De använder också bildigenkänningstekniker för att navigera genom applikationen och visuellt verifiera UI-objekt och UI-element för att skapa UI-tester.

Dessutom använder AI-testsystem explorativ testning för att hitta buggar eller variationer i applikationens UI och generera skärmbilder för senare verifiering av en QA-ingenjör. På liknande sätt kan de visuella aspekterna av systemet under test (SUT), såsom layout, storlek och färg, verifieras.

Fördelar:

  • Automatiserad UI-testning kan leda till ökad kodtäckning.
  • Mindre avvikelser i UI:t gör inte att testsviten misslyckas. Produktens AI-modeller kan hantera dessa.

Begränsningar:

  • För alla moderna applikationer är antalet plattformar, appversioner och webbläsarversioner stort. Det är oklart hur väl AI-baserad UI-automatisering fungerar under dessa förhållanden. Molnbaserade testverktyg kan dock köra tester parallellt, så detta kommer att bli ett intressant område att följa!

Använda AI som stöd vid API-testning

Även utan AI är automatisering av API-testning en icke-trivial uppgift, eftersom den innebär att man måste förstå API:et och sedan konfigurera tester för en mängd olika scenarier för att säkerställa både djup och bredd i täckningen.

Aktuella verktyg för API-testautomatisering, som Tricentis och SoapUI, registrerar API-aktiviteter och trafik för att analysera och skapa tester. Att ändra och uppdatera tester kräver dock att testare går in på detaljnivå i REST-anrop och parametrar och sedan uppdaterar API-testsviten.

AI-baserade verktyg för API-testautomatisering försöker minska detta problem genom att undersöka trafik och identifiera mönster och samband mellan API-anrop och på så sätt gruppera dem efter scenario. Verktygen använder också befintliga tester för att lära sig relationer mellan API:er, använder dessa för att förstå förändringar i API:er och uppdaterar befintliga tester eller skapar nya scenariobaserade tester. 

Fördelar:

  • För nybörjartestare eller personer utan programmeringserfarenhet kan detta vara till stor hjälp för att de ska kunna ”komma igång direkt”.

    Än en gång skulle förändringshanteringen bli betydligt enklare, eftersom åtminstone vissa av API-förändringarna kan hanteras av ett AI-verktyg för automatisering.

Begränsningar:

  • Generellt sett är API-testning svår att konfigurera, och inte många verktyg erbjuder maskininlärningsbaserade funktioner inom detta område. De som gör det verkar ha ganska grundläggande funktioner.

Underhåll av automatiserade tester

AI-baserade verktyg kan utvärdera ändringar i koden och korrigera flera befintliga tester som inte stämmer överens med dessa ändringar, särskilt om kodändringarna inte är alltför komplexa. Uppdateringar av UI-element, fältnamn och liknande behöver inte längre få testsviten att misslyckas.

Vissa AI-verktyg övervakar tester som körs och provar modifierade varianter för misslyckade tester genom att välja UI-element utifrån bästa möjliga matchning. De kan också verifiera testtäckningen och komplettera luckorna vid behov. 

More Articles

AI-baserad generering av testdata

Generering av testdata är ett annat lovande område för AI-modeller. Maskininlärning kan enkelt generera datamängder, till exempel personliga profilfoton och information som ålder och vikt, baserat på tränade maskininlärningsmodeller som lär sig från befintliga produktionsdatamängder. 

På så sätt liknar de genererade testdata mycket produktionsdata, vilket är idealiskt för användning inom programvarutestning. Maskininlärningsmodellen som genererar data kallas ett generativt antagonistiskt nätverk (GAN).

Testautomatiseringsverktyg som använder maskininlärning

Ta en titt på verktygen nedan om du letar efter programvara som använder maskininlärning för att genomföra och följa upp automatiserade tester. Många erbjuder alternativ med öppen källkod eller utan kod för att uppfylla behoven hos ditt testteam.

Slutsats

Artificiell intelligens har haft en betydande inverkan på testverktyg och testmetoder, särskilt testautomatisering. En översikt över de aktuella verktyg som utlovar AI-funktioner visar att även om många nya funktioner läggs till, är flera av dessa funktioner fortfarande på väg att mogna.

Om du tyckte att den här artikeln var till hjälp kan du prenumerera på nyhetsbrevet The QA Lead och hålla dig uppdaterad om alla de senaste nyheterna inom testvärlden.

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