Het gebruik van kunstmatige intelligentie (AI) in testautomatisering is de nieuwste trend op het gebied van kwaliteitsborging. Testen in het algemeen, en testautomatisering in het bijzonder, lijkt te zijn aangestoken door de “met AI is alles beter”-beweging.
Aangezien AI, machine learning en neurale netwerken momenteel razend populair zijn, was het misschien onvermijdelijk dat AI op de een of andere manier zijn weg zou vinden naar testautomatisering.
Een achtergrond in testautomatisering
Ik herinner me een tijd van enkele jaren geleden, toen testautomatisering nog nieuw was en een van mijn kwaliteitsborgingsteams aan een project voor een grote klant werkte. Het ging om een mobiele applicatie met miljoenen gebruikers en maandelijkse releasecycli. Het QA-team was doorgaans ontspannen tijdens de eerste twee weken van de cyclus en werkte daarna tot aan de release koortsachtig door—een van de merkwaardige bijwerkingen van agile softwareontwikkeling waarover je in de krantenkoppen niets leest!
Uiteindelijk kreeg een van de QA-leads, die het zat was om tijdens de rustige eerste twee weken duimen te draaien, het idee om aan een raamwerk voor testautomatisering te werken. Hij schreef enkele testscripts in Ruby met Selenium / Appium en Jenkins voor een eenvoudige pipeline, inclusief fraaie rapporten met Rode / Gele / Groene indicatoren voor testfouten en -successen.
Hij deed dit met succes gedurende een paar releasecycli. Toen presenteerden we het aan onze kwaliteitsdirecteur, die het bij onze klanten introduceerde en hen enthousiast genoeg maakte om te betalen voor geautomatiseerd testen als deelproject. We waren dolenthousiast en liepen voorop!
Vooroplopen kreeg echter na een paar maanden een nieuwe betekenis, toen we die fundamentele waarheid over testautomatisering ontdekten waar elke zichzelf respecterende QA-automatiseringsengineer tegenwoordig mee worstelt:

Waarom zeg ik dit? Omdat we ons al snel voelden als Alice in Mordor-land, die als een gek met de Rode Koningin meeholde:

We hadden zojuist de kille realiteit van de valkuil van testautomatisering ontdekt: een van onze QA-engineers moest de automatiseringssuite bij vrijwel elke releasecyclus up-to-date houden met de applicatie, omdat de veranderingen elkaar in hoog tempo opvolgden!
Door één wijziging van een veldnaam liepen onze geautomatiseerde softwaretests vast in het spreekwoordelijke konijnenhol. Het begin van een nieuwe release was vooral problematisch, omdat het softwareontwikkelingsteam massa's nieuwe toevoegingen deed.
Testautomatisering is sindsdien niet fundamenteel veranderd, omdat er nog steeds voortdurend toezicht en onderhoud nodig is. De mogelijkheid van een dramatische verbetering in de aanpak en implementatie is pas ontstaan door de recente vooruitgang in de mogelijkheden van AI.
AI-hype versus realiteit
AI-technologie in haar huidige vorm draait voornamelijk om het gebruik van machinelearning-algoritmen om modellen te trainen met behoorlijk grote hoeveelheden gegevens en vervolgens de getrainde modellen te gebruiken om voorspellingen te doen of een gewenste uitvoer te genereren. Vrijwel alles op het gebied van AI past in deze, toegegeven sterk vereenvoudigde, beschrijving. Voor ons is de belangrijkste vraag hier echter:
Zal AI daadwerkelijk kunnen helpen om automatisch testgevallen te genereren en bij te werken? Bugs te vinden? De codedekking te verbeteren?
Het antwoord op die vraag is op dit moment verre van duidelijk, omdat we ons op het hoogtepunt van de hypecyclus voor AI bevinden. Een specifiek deelgebied, deep learning, heeft veel van deze opwinding veroorzaakt.

Wat ik het interessantst vind aan deze grafiek is het volgende:
Als Siri de hypecurve al voorbij zou moeten zijn, dan zijn we nog ver verwijderd van Kansas, Dorothy!
Ik bedoel, ik ken veel mensen die zichzelf moeten herhalen voordat Siri begrijpt wat ze zeggen (niet vervelend bedoeld voor Siri-fans. Echt niet 😉).
De hypecurve laat ons zien dat er veel enthousiasme is over het potentieel van AI, dat afneemt voordat iedereen overgaat op de dagelijkse gang van zaken. In eenvoudige termen zegt de fraaie grafiek van Gartner het volgende:

Hoewel we nog lang niet bij de singulariteit zijn, heeft AI in zijn huidige vorm nog steeds het potentieel om testautomatisering aanzienlijk te verbeteren.
Hoe produceert machine learning geautomatiseerde tests?
- Training: In de trainingsfase moet het machinelearningmodel worden getraind met een specifieke dataset van de organisatie, waaronder de codebase, applicatie-interface, logboeken, testgevallen en zelfs specificatiedocumenten. Als er geen voldoende grote trainingsdataset beschikbaar is, kan dit de effectiviteit van het algoritme verminderen.
Sommige tools beschikken over vooraf getrainde modellen die door voortdurend leren worden bijgewerkt voor specifieke toepassingen, zoals UI-tests, zodat algemeen leren binnen een specifieke organisatie kan worden ingezet. - Genereren van uitvoer/resultaten: Afhankelijk van de gebruikssituatie genereert het model testgevallen, controleert het bestaande testgevallen op codedekking, volledigheid en nauwkeurigheid en voert het zelfs tests uit. In alle gevallen moet een tester de gegenereerde uitvoer controleren om deze te valideren en er zeker van te zijn dat deze bruikbaar is.
Als we de analogie met zelfrijdende auto's gebruiken, lijken de resultaten meer op rijassistentie dan op een daadwerkelijk autonoom rijdende auto. - Voortdurende verbetering: Naarmate een organisatie de tool regelmatig blijft gebruiken, neemt de hoeveelheid trainingsdata toe, waardoor de nauwkeurigheid en effectiviteit van bestaande getrainde netwerken mogelijk toenemen. Kortom, het AI-systeem blijft leren en verbeteren.
Machinelearningalgoritmen brengen een revolutie teweeg in testautomatisering. Bekijk onze gids voor eersteklas tools voor softwaretests om tools te vinden waarin deze geavanceerde algoritmen zijn verwerkt.
Toepassingen van AI in testautomatisering
Laten we enkele toepassingen van AI in testautomatisering nader bekijken, waaronder eenheidstests, testen van gebruikersinterfaces, API-tests en het onderhouden van een testautomatiseringssuite.
Eenheidstests maken en bijwerken
Eenheidstests, die vaak worden gebruikt als onderdeel van continu testen en continue integratie / continue levering (CI / CD) binnen DevOps, kunnen een ware nachtmerrie zijn in de… asteroïdengordel.
Doorgaans besteden ontwikkelaars veel tijd aan het schrijven en onderhouden van eenheidstests, wat bij lange na niet zo leuk is als het schrijven van applicatiecode. In dit geval kunnen AI-gebaseerde producten voor het automatisch maken van eenheidstests nuttig zijn, vooral voor organisaties die van plan zijn om eenheidstests pas laat in de levenscyclus van het product te introduceren.
Voordelen:
- AI-gebaseerde geautomatiseerde eenheidstests vormen een aanzienlijke vooruitgang ten opzichte van sjabloongebaseerde, geautomatiseerde generatie van eenheidstests met behulp van statische of dynamische analyse. De aldus gegenereerde tests zijn echte code en niet slechts stubs.
- AI-gebaseerde eenheidstests kunnen zeer snel worden gegenereerd, wat nuttig is voor een grote bestaande codebase.
- Ontwikkelaars hoeven alleen de tests aan te passen en kunnen de regressiesuite voor eenheidstests relatief snel instellen.
Beperkingen:
- Door AI gegenereerde eenheidstests weerspiegelen simpelweg de code waarop ze zijn gebaseerd. Ze kunnen de bedoelde functionaliteit van de code voorlopig niet raden. Als de code zich niet gedraagt zoals bedoeld, zal de voor die code gegenereerde eenheidstest dat onbedoelde gedrag weerspiegelen.
Dit is een aanzienlijk nadeel, omdat het hele doel van eenheidstests is om een impliciet of expliciet contract af te dwingen en te verifiëren. - Met machine learning gegenereerde eenheidstests kunnen bestaande goed werkende eenheidstests laten mislukken. Het is aan de ontwikkelaar om ervoor te zorgen dat dit niet gebeurt.
- Ontwikkelaars moeten zelf tests schrijven voor complexe bedrijfslogica.
Geautomatiseerd testen van gebruikersinterfaces
Dit is een gebied waarop AI steeds meer uitblinkt. Bij AI-gebaseerd UI-testen analyseren testautomatiseringstools de DOM en gerelateerde code om objecteigenschappen vast te stellen. Ze gebruiken ook beeldherkenningstechnieken om door de applicatie te navigeren en UI-objecten en -elementen visueel te verifiëren, zodat UI-tests kunnen worden gemaakt.
Daarnaast gebruiken AI-testsystemen verkennend testen om bugs of variaties in de gebruikersinterface van de applicatie te vinden en schermafbeeldingen te genereren die later door een QA-engineer kunnen worden geverifieerd. Ook de visuele aspecten van het systeem onder test (SUT), zoals indeling, grootte en kleur, kunnen worden geverifieerd.
Voordelen:
- Geautomatiseerd testen van de gebruikersinterface kan leiden tot een betere codedekking.
- Kleine afwijkingen in de gebruikersinterface zorgen er niet voor dat de testsuite mislukt. Product-AI-modellen kunnen hiermee omgaan.
Beperkingen:
- Voor elke moderne applicatie is het aantal platforms, appversies en browserversies groot. Het is niet duidelijk hoe goed AI-gebaseerde automatisering van de gebruikersinterface onder deze omstandigheden presteert. Cloudtesttools kunnen tests echter parallel uitvoeren, dus dit wordt een interessant gebied om in de gaten te houden!
AI gebruiken ter ondersteuning van API-testen
Zelfs zonder AI is het automatiseren van API-testen geen eenvoudige taak, omdat het inzicht in de API vereist en vervolgens het opzetten van tests voor een groot aantal scenario's om een brede en diepgaande dekking te garanderen.
Huidige tools voor API-testautomatisering, zoals Tricentis en SoapUI, registreren API-activiteiten en -verkeer om tests te analyseren en te creëren. Het aanpassen en bijwerken van tests vereist echter dat testers zich verdiepen in de details van REST-aanroepen en parameters en vervolgens de API-testsuite bijwerken.
AI-gebaseerde tools voor testautomatisering van API's proberen dit probleem te beperken door verkeer te onderzoeken en patronen en verbanden tussen API-aanroepen te identificeren, waardoor deze effectief per scenario worden gegroepeerd. Tools gebruiken ook bestaande tests om relaties tussen API's te leren kennen, gebruiken deze om wijzigingen in API's te begrijpen en werken bestaande tests bij of creëren nieuwe scenariogebaseerde tests.
Voordelen:
- Voor beginnende testers of mensen zonder programmeerervaring kan dit zeer nuttig zijn om hen meteen goed op weg te helpen.
Ook verandermanagement zou aanzienlijk eenvoudiger worden, aangezien ten minste een deel van de API-wijzigingen door een AI-automatiseringstool kan worden afgehandeld.
Beperkingen:
- Over het algemeen is API-testen moeilijk op te zetten en bieden niet veel tools mogelijkheden op basis van machinaal leren op dit gebied. De tools die dat wel doen, lijken over vrij rudimentaire mogelijkheden te beschikken.
Onderhoud van geautomatiseerde tests
AI-gebaseerde tools kunnen wijzigingen in de code evalueren en verschillende bestaande tests herstellen die niet met deze wijzigingen overeenkomen, vooral als die codewijzigingen niet al te complex zijn. Updates van UI-elementen, veldnamen en dergelijke hoeven de testsuite niet langer te laten mislukken.
Sommige AI-tools houden tests tijdens de uitvoering in de gaten en proberen aangepaste varianten uit voor mislukte tests door UI-elementen te kiezen op basis van de beste overeenkomst. Ze kunnen ook de testdekking controleren en indien nodig de hiaten aanvullen.
AI-gebaseerde generatie van testgegevens
Het genereren van testgegevens is een ander veelbelovend toepassingsgebied voor AI-modellen. Machinaal leren kan eenvoudig gegevenssets genereren, zoals persoonlijke profielfoto's en informatie zoals leeftijd en gewicht, op basis van getrainde modellen voor machinaal leren die bestaande productiegegevenssets gebruiken om te leren.
Op deze manier lijken de gegenereerde testgegevens sterk op productiegegevens, wat ideaal is voor gebruik bij softwaretesten. Het model voor machinaal leren dat gegevens genereert, wordt een generatief adversarieel netwerk (GAN) genoemd.
Testautomatiseringstools die machinaal leren gebruiken
Bekijk de onderstaande tools als je op zoek bent naar software die machinaal leren gebruikt om geautomatiseerde tests uit te voeren en bij te houden. Veel tools bieden open-source- of codevrije opties om aan de behoeften van je testteam te voldoen.
Conclusie
Kunstmatige intelligentie heeft een aanzienlijke invloed gehad op testtools en -methoden, en in het bijzonder op testautomatisering. Een overzicht van de huidige tools die AI veelbelovend maken, laat zien dat er weliswaar veel nieuwe functies worden toegevoegd, maar dat verschillende van die functies nog niet volledig ontwikkeld zijn.
Als je dit artikel nuttig vond, abonneer je dan op de nieuwsbrief van The QA Lead en blijf op de hoogte van de nieuwste ontwikkelingen in de wereld van testen.
