Artikelen
Tutorials
Interactieve handleidingen
Hoe geautomatiseerd testen DevOps mogelijk maakt
Testautomatisering helpt ontwikkelingsteams sneller en betrouwbaarder te builden, testen en verzenden.
Anton Hristov
Productmanager bij mabl
In het begin van de jaren 2000 begonnen bedrijven met het toepassen van agile praktijken, waarbij ze een versnelde levenscyclus van ontwikkeling omarmden, gekenmerkt door frequente feedback van klanten. Dit heeft later geleid tot de acceptatie van tools die continue integratie en continue levering mogelijk maken die de build-, test-, configuratie- en implementatieprocessen automatiseren.
Belangrijke functies zoals ontwikkeling, testen en levering aan de productie werden echter uitgevoerd door afzonderlijke teams die binnen hun eigen silo's opereerden. Dit veroorzaakte inefficiënties en verzandde de levenscyclus van softwareontwikkeling. Het leidde ook tot DevOps, de organisatorische filosofieën, praktijken en tools die kleine, cross-functionele teams mogelijk maken. Deze teams worden ook wel squadrons genoemd en zijn verantwoordelijk voor de continue levering en kwaliteit van productupdates, end-to-end.
In eerste instantie heeft DevOps alleen ontwikkeling en IT-activiteiten verenigd, terwijl testen nog grotendeels handmatig door een apart team werd uitgevoerd. Dit hielp de uitdagingen van de levering en monitoring van cloudapplicaties aan te pakken. Het leidde ook tot de totstandkoming van volledig geautomatiseerde CI/CD-pipelines. Het resulteerde echter niet in veel snellere releasecycli, omdat het testen werd geïsoleerd en vaak een tijdrovend, handmatig proces was.
Om het testknelpunt aan te pakken, stappen organisaties nu over van gecentraliseerde QA-teams naar het inbedding van QA in het hele ontwikkelingsteam.
Wat is testautomatisering?
Testautomatisering is het automatisch beoordelen en valideren van een softwareproduct, zoals een webapplicatie, om ervoor te zorgen dat het voldoet aan vooraf gedefinieerde kwaliteitsnormen voor codestijl, functionaliteit (bedrijfslogica) en gebruikerservaring.
Testwerkwijzen omvatten doorgaans de volgende fasen:
- Unit testing: valideert individuele code-eenheden, zoals een functie, zodat deze werkt zoals verwacht
- Integratietest: zorgt ervoor dat verschillende stukjes code kunnen samenwerken zonder onbedoelde gevolgen
- End-to-end testen: valideert dat de applicatie voldoet aan de verwachtingen van de gebruiker
- Verkennend testen: hanteert een ongestructureerde benadering om verschillende gebieden van een applicatie vanuit het perspectief van de gebruiker te bekijken, om functionele of visuele problemen aan het licht te brengen
De verschillende soorten testen worden vaak gevisualiseerd als een piramide. Terwijl je de piramide opklimt, neemt het aantal tests in elk type af en nemen de kosten voor het maken en uitvoeren van tests toe.
Historisch gezien werden alle tests binnen de piramide handmatig uitgevoerd. Dit was een traag, duur en foutgevoelig proces totdat er geautomatiseerde testtools werden gemaakt.
Tegenwoordig zijn bijna alle unit-tests volledig geautomatiseerd en wordt automatisering van unit testing als een best practice beschouwd. Integratietests zijn ook grotendeels geautomatiseerd en worden, zo niet, meestal overgeslagen ten gunste van handmatige end-to-end-tests. De huidige golf van inspanningen voor testautomatisering is grotendeels gericht op het automatiseren van de end-to-end-laag van de testpiramide, waardoor de behoefte aan integratietests afneemt.
Hoewel automatiseringstools al meer dan tien jaar bestaan, zijn voor vele codevaardigheden nodig en resulteren ze vaak in schilferige, broze tests die extreem duur zijn om te fixen en onderhouden op schaal. Veel teams creëren uiteindelijk hun eigen aangepaste frameworks voor de automatisering van tests, waardoor het moeilijk en tijdrovend is om nieuwe teamleden in te werken vanwege de steile leercurve. Aangepaste frameworks vereisen uiteindelijk ook hun eigen onderhoud en verbeteringen om de veranderende technologiestapel bij te houden. Als gevolg hiervan waren de meeste end-to-end tests tot nu toe een handmatig proces.
Naarmate organisaties hun DevOps-praktijken ontwikkelen, is de behoefte aan testautomatisering gedurende de hele levenscyclus belangrijk om de belangrijkste voordelen van DevOps te ontsluiten: de mogelijkheid om sneller en betrouwbaarder te builden, te testen en te verzenden, reacties op incidenten te stroomlijnen en de samenwerking en communicatie tussen teams te verbeteren. Het is niet langer een optie om een releasebuild enkele dagen bij het QA-team te laten zitten voordat ontwikkelaars feedback ontvangen en geïdentificeerde problemen oplossen. QA-teams moeten hun inspanningen in de DevOps-cyclus op één lijn brengen door ervoor te zorgen dat testcases geautomatiseerd zijn en bijna 100% codedekking bereiken. Omgevingen moeten worden gestandaardiseerd en de implementatie op hun QA-boxen moet worden geautomatiseerd. Pre-testtaken, opschonen, taken na het testen, etc. moeten worden geautomatiseerd en afgestemd op de continue integratiecyclus.
Er zijn nu low-code tools zoals mabl die het mogelijk maken om betrouwbare en geautomatiseerde end-to-end-tests op te nemen in elke fase van de CI/CD-pipeline, wat helpt problemen veel eerder in de ontwikkelingscyclus op te vangen. Het is bekend dat hoe eerder je problemen in een release detecteert, hoe sneller en goedkoper het is om ze op te lossen.
Geautomatiseerd testen in DevOps
In de praktijk betekent dit dat ontwikkelaars zich aangetrokken voelen tot het schrijven van unit-tests om de code te valideren zoals verwacht, terwijl kwaliteitsbeoefenaars en producteigenaren geautomatiseerde UI-tests maken die de end-to-end gebruikerservaring valideren. Kwaliteitsbeoefenaars organiseren ook verkennende testsessies waarbij het team handmatig verschillende toepassingsgebieden onderzoekt op problemen.
Een best practice van DevOps is om zo vroeg en zo vaak mogelijk geautomatiseerde tests uit te voeren binnen de CI/CD-pipeline. Dit omvat het uitvoeren van geautomatiseerde UI-tests in productie om proactief te controleren op problemen met gebruikerservaring. Omdat de huidige toepassingen afhankelijk zijn van tal van services met meerdere bewegende onderdelen, kan het uitvoeren van synthetische transactiemonitoring door tests in productie uit te voeren problemen met externe services detecteren voordat je gebruikers dat doen.
gerelateerd materiaal
Gratis aan de slag
gerelateerd materiaal
Verbeter je DevOps-werkwijze met testen
Aan de slag met geautomatiseerd testen
Er is geen one-size-fits-all-oplossing, maar hier zijn enkele belangrijke dingen waar je rekening mee moet houden als je een testautomatiseringsstrategie definieert voor je team:
Frequentie van release
Hoe vaker de releases worden uitgebracht, hoe meer je moet investeren in testautomatisering, vooral in end-to-end-tests die bij elke implementatie moeten worden uitgevoerd. Als je geen frequente releasecyclus hebt en deze wilt versnellen, kun je beginnen met het toevoegen van meer dekking voor unit-tests en eenvoudige geautomatiseerde UI-smoke-tests maken om een snelle sanity check uit te voeren bij elke build. Vervolgens kun je geleidelijk investeren in het maken van meer geautomatiseerde end-to-end-tests die je helpen de tijd te verkorten die nodig is om een release op regressies te controleren.
Beschikbaarheid van tools
Moderne testautomatiseringstools zullen het vermogen van je team om continu software van hoge kwaliteit te leveren aanzienlijk verbeteren. Houd bij het evalueren van testtools rekening met eenvoudige testcreatie, betrouwbaarheid, behoefte aan onderhoud en integratie met je CI/CD-stack.
Het is even belangrijk om de leercurve en de vereiste vaardigheden voor een bepaald hulpmiddel te begrijpen. Hoe gemakkelijker je oplossing te gebruiken is, hoe sneller je team kan opvoeren. En het zal toegankelijker zijn voor meer mensen in je team, wat kan leiden tot een betere testdekking en een cultuur van kwaliteit kan cultiveren. Een effectieve manier om testoplossingen te evalueren, is door het hele team tijd te laten besteden aan het automatiseren van een paar testcasescenario's met toonaangevende kanshebbers op je shortlist.
Volwassenheid van het product
Als je team werkt aan een product met tal van bestaande klanten en een volwassen codebase, is de kans groot dat je al een gevestigde releasecadans en testwerkwijzen hebt. Naarmate je team overstapt naar continue integratie of volledige CI/CD, is het belangrijk om testautomatisering op te nemen als een belangrijk onderdeel van de automatisering van de pipeline. Snelle levering en snelle feedback zijn niet duurzaam zonder het testen eerder en tijdens de ontwikkeling te automatiseren.
Aan de andere kant, als je team een nieuw product aan het bouwen is, is dit een ideale gelegenheid om vanaf het begin geautomatiseerd testen in te stellen. Stel direct bij het begin een doel voor de dekking van unit-tests en concentreer je op het definiëren van de end-to-end-testcases voor elke functie. Je kunt het beste wachten tot een functie dicht bij een release staat voordat je geautomatiseerde end-to-end tests toevoegt, zodat je testfouten als gevolg van het breken van wijzigingen in de gebruikersinterface voorkomt.
CI/CD-omgevingen en testgegevens
Het maken van geautomatiseerde tests is een uitdaging op zich, maar vaak is het het gebrek aan zuivere omgevingen met testgegevens dat voorkomt dat teams eerder in de CI/CD-pipeline testautomatisering kunnen toepassen. Daarom is het belangrijk om vroegtijdig een teamdiscussie te voeren over de teststrategie en vast te leggen aan het creëren van de benodigde testinfrastructuur. Ontwikkelaars moeten bijvoorbeeld support implementeren voor testgebruikersaccounts en de mogelijkheid hebben om een omgeving met testgegevens te laden via een API. Het vroegtijdig opbouwen van een infrastructuur voor het inrichten van kortstondige testomgevingen zal de review- en feedbackcyclus van een release aanzienlijk versnellen.
Hoe verandert geautomatiseerd testen de rol van QA?
Hoe geautomatiseerd testen DevOps een boost geeft
Geautomatiseerd testen wordt nu beschouwd als een best practice van DevOps. Het implementeren van geautomatiseerde tests in een groot deel van je ontwikkelingspipeline lijkt in eerste instantie misschien intimiderend, maar je kunt beginnen met het automatiseren van één end-to-endscenario en die test volgens een schema uitvoeren. Nieuwe tools maken geautomatiseerd testen ook eenvoudiger dan ooit en de resultaten zijn meer dan de moeite waard. Wie wil er tenslotte geen gelukkige gebruikers?
Door geautomatiseerd testen te omarmen, kun je de volgende DevOps-voordelen waarmaken:
- Snelheid zonder in te leveren op kwaliteit: verkrijg een hoge productsnelheid die ontwikkelaars blij maakt en hen in staat stelt om sneller meer waarde te leveren aan gebruikers
- Verbeterde teamsamenwerking: gedeelde verantwoordelijkheid voor kwaliteit maakt een betere samenwerking tussen teamleden mogelijk
- Betrouwbaarheid: verbeter de betrouwbaarheid van releases door de dekking te vergroten met testautomatisering. Problemen in de productie zouden zeldzaam moeten zijn in plaats van de norm
- Schaal: produceer consistente kwaliteitsresultaten met minder risico door ontwikkeling te verdelen over meerdere kleine teams die op een zelfvoorzienende manier opereren
- Beveiliging: ga snel verder zonder de beveiliging en compliance in gevaar te brengen door gebruik te maken van geautomatiseerd nalevingsbeleid, fijnmazige bedieningselementen en configuratiebeheertechnieken
- Meer klanttevredenheid: verbeterde betrouwbaarheid en snelle reacties op feedback van gebruikers verhogen de gebruikerstevredenheid en leiden tot meer productverwijzingen
Conclusie...
Het omarmen van testautomatisering om het volledige potentieel van DevOps te benutten, zal uiteindelijk knelpunten verminderen en de efficiëntie verhogen, die beide een directe impact hebben op het geluk van werknemers en klanten, en uiteindelijk het resultaat.
Begin met het automatiseren van je tests met Bitbucket Pipelines of een van de vele testautomatiseringstools en -bronnen die beschikbaar zijn op de Atlassian Marketplace.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.