Softwaretests bij continue levering
Ontdek de voordelen van het testen van software en de rol ervan bij continue levering.
Software testen is een organisatorisch proces binnen de softwareontwikkeling waarbij bedrijfskritische software wordt geverifieerd op juistheid, kwaliteit en prestaties. Softwaretests worden gebruikt om ervoor te zorgen dat de verwachte bedrijfssystemen en productfuncties zich naar verwachting gedragen.
Het testen van software kan een handmatig of een geautomatiseerd proces zijn.
- Handmatige softwaretests worden geleid door een team of persoon dat een softwareproduct handmatig uitvoert en ervoor zorgt dat het zich naar verwachting gedraagt.
- Geautomatiseerde softwaretests bestaan uit veel verschillende tools met verschillende mogelijkheden, variërend van geïsoleerde controles op de juistheid van de code tot het simuleren van een volledige door mensen aangestuurde handmatige testervaring.
De verschillende soorten tests voor software
Vergelijk verschillende soorten softwaretests, zoals unittests, integratietests, functionele tests, acceptatietests en meer!
Verkennend testen
Ontdek wat verkennend testen inhoudt en leer over de geschiedenis ervan. Ontdek de voor- en nadelen van verkennend testen en wanneer je deze tests het beste kunt gebruiken.
Inleiding op codedekking
Ontdek hoe je aan de slag kunt met de codedekking, hoe je de juiste tool kunt vinden en hoe je de codedekking kunt berekenen.
Tutorial integratietesten
Leer in deze tutorial hoe je integratietests uitvoert met Bitbucket Pipelines.
Voordelen van software testen
Software testen bespaart een organisatie tijd en geld door de kosten voor softwareontwikkeling en -onderhoud te verlagen. Software testen zorgt voor stabiliteitsgaranties bij de ontwikkeling van nieuwe functies. Testen zorgt ervoor dat een functie volgens verwachting werkt en dat gebruikers geen bugs tegenkomen.
De ontwikkeltijd voor nieuwe functies wordt verkort door een aantal testcases te specificeren waaraan de nieuwe functie moet voldoen om als volledig en leverbaar te worden beschouwd. Hierdoor krijgen ontwikkelaars een vast doel om nauwkeurigere schattingen van het tijdschema mogelijk te maken en het aantal nieuwe bugs te verminderen. Zodra deze testcases zijn uitgevoerd, dalen de totale onderhoudskosten. De tests kunnen uitgevoerd worden op een reeds geleverde functie om er zeker van te zijn dat deze zich nog steeds naar verwachting gedraagt.
Niveaus van software testen
Er zijn verschillende fundamentele niveaus binnen het testen van software, waarbij de softwarefunctionaliteit telkens wordt onderzocht vanuit een uniek gezichtspunt binnen het ontwikkelingsproces. Laten we elk type test achtereenvolgens bekijken en het praktische nut ervan onderzoeken.
Unittests
Unittests vormen het fundamentele niveau van software testen. Onder unittests wordt de werkwijze verstaan waarbij controles worden uitgevoerd op de juistheid van invoer en uitvoer voor afzonderlijke code-units. De maateenheid bestaat in dit geval uit zelfstandige coderingsfuncties of -methoden.
Tijdens de unittests worden de productiecodefuncties uitgevoerd in een testomgeving met gesimuleerde invoer. De output van de functie wordt vervolgens vergeleken met de verwachte output voor die invoer. Als de output overeenkomt met de verwachte resultaten, is de test geslaagd. Zo niet, dan is de test mislukt. Unittests zijn een geweldige manier om afgeleide gegevensfuncties te valideren.
Een hypothetisch voorbeeld van een userstory in een unittest ziet er ongeveer uit als: 'function 2VAL, Given 2 values x and y always returns x+y'. Bij de unittest werd dan 2VAL uitgevoerd met twee waarden en werd bevestigd dat de output x+y was. Unittests zijn geweldig om de juistheid te bevestigen van de code die werkt op basis van monetaire waarden.
Integratietests
Als een softwaretestcase betrekking heeft op meer dan één unit, wordt dit beschouwd als een integratietest. Bij de ontwikkeling van een softwaretestcase kunnen de regels tussen unittests snel uitgroeien tot integratietests. Vaak wordt een unittest ontwikkeld die een externe codeafhankelijkheid tegenwerkt. De afhankelijkheid zelf hoeft niet te worden getest en de integratie ermee wordt nagebootst of vervalst.
Functionele tests of end-to-end-tests
Testcases die een volledige ervaring op gebruikersniveau simuleren, worden functionele tests of end-to-end-tests genoemd. End-to-end-tests maken gebruik van tools die echt menselijk gebruikersgedrag simuleren. Veelvoorkomende stappen in een end-to-end-test:
- Klik op deze knop
- Lees deze tekst
- Dien dit formulier in
Vanwege de volledige ervaring met de uitvoeringscontext verifiëren end-to-end-tests de juistheid van alle lagen van een softwarestack.
Verkennende testen
Verkennende tests zijn testoefeningen waarbij testers een globaal gedefinieerde taak toegewezen krijgen die ze moeten uitvoeren met behulp van de software die wordt getest. Dit betekent dat je veel kunt leren over de manier waarop mensen je product in de praktijk gebruiken. Verkennende testsessies kunnen hun gebruikers zelfs motiveren door beloningen uit te reiken voor het grootste aantal problemen, het beste defect of door iets onverwachts met het product te doen.
Een van de voordelen van verkennende softwaretests is dat iedereen kan helpen testen, omdat ze het product slechts vrij hoeven te verkennen. Verkennende tests zijn niet willekeurig, maar ze zijn ook niet gescript zoals handmatige tests.
Softwaretests bij continue levering
Continue levering maakt gebruik van een reeks softwareteststrategieën om een naadloze pipeline te creëren die automatisch voltooide codetaken levert. Een optimale installatie stelt een ontwikkelaar in staat om recent ingevulde code naar de pipeline voor continue levering te sturen voor evaluatie. Vervolgens laat de pipeline de net gepushte code door de verschillende testniveaus lopen. Als de code de test doorstaat, wordt deze automatisch samengevoegd en in productie geïmplementeerd. Als de code echter niet voldoet aan de tests, wordt de code afgewezen en de ontwikkelaar wordt automatisch op de hoogte gebracht van de stappen om de code te corrigeren.
Populaire gevestigde ontwikkelingsecosystemen voor softwaretalen hebben elk hun eigen subset testecosystemen. Er zijn veel tools beschikbaar die mogelijkheden bieden om testsuites op te zetten en te ontwikkelen. Deze tools worden gewoonlijk geïnstalleerd via een pakketbeheerder die specifiek bij de programmeertaal hoort die in het project wordt gebruikt.
Naast testinstrumenten zijn er ook tools beschikbaar voor de uitvoering en ontwikkeling van tests. Er kunnen verschillende programma's voor de uitvoering van tests worden geïnstalleerd om uitvoergegevens van een testsuite te verstrekken. Het is gebruikelijk om gedurende een project de 'testdekking' te meten. Een tool voor codedekking kan gebruikt worden om aan te geven in welke mate een codebase voldoende is gedekt.
Als een testsuite eenmaal is ontwikkeld en correct werkt voor een lokaal project, is deze over het algemeen eenvoudig te integreren in een CD-pipeline. De meeste gehoste CD/CI-systemen bevatten handleidingen over hoe je een testsuite in de pipeline kunt integreren.
Geautomatiseerd testen onderdeel maken van je CD-pipeline
Een echte hands-off CD-pipeline met toegevoegde waarde is gebaseerd op een sterke testbasis. Deze testbasis begint bij handmatige testcases die zich ontwikkelen tot geautomatiseerde oplossingen.
De nadruk op kwaliteit leggen bij elke stap van de pipeline
Iedereen, ontwikkelaars, testers enz., is verantwoordelijk voor de kwaliteitsrelatie met de klant. Elke coderegel maakt de klantervaring beter of slechter. De testsuite van een CD-pipeline is een veelzijdige tool voor de ontwikkeling van hoogwaardige en correcte code. Tijdens de ontwerpfase van het product kan er rekening gehouden worden met de testsuite om preventieve overwegingen in acht te nemen over de ontwikkeling van een functie. De testsuite wordt voornamelijk gebruikt om het ontwikkelingsproces te stroomlijnen, maar kan ook worden uitgevoerd in staging- en productieomgevingen om ook daar de kwaliteit te garanderen.
Ontwikkelaars in staat stellen de kwaliteit van functies te bewijzen
Volgens de traditionele testmethode is testen een apart proces dat niet het niet eens is met de ontwikkelaar. De afwezigheid van ontwikkelaars bij quality assurance heeft een gebrek aan empathie voor de klant tot gevolg bij het ontwikkelingsteam. Bovendien zorgt het gebrek aan betrokkenheid van ontwikkelaars bij kwaliteit ervoor dat problemen langer in de codebase blijven hangen, waardoor het duurder wordt om ze op te lossen. Deze methode is ook duur als het gaat om personeelskosten in de organisatie, omdat het ertoe aanzet om een apart QA-team aan te nemen om de verantwoordelijkheid op zich te nemen.
Continue levering bevordert het bewustzijn van ontwikkelaars en het inlevingsvermogen met betrekking tot de eindgebruikerservaring. Ontwikkelaars hebben als taak om testdekking te bieden voor de functies die ze produceren en om toezicht te houden op die functies, van de ontwikkeling tot de productieomgeving. Dit geeft ontwikkelaars de mogelijkheid om eingaar te zijn van de kwaliteit van een functie en die te bewijzen.
Feedback van klanten inbouwen
Continue levering maakt snelle implementatie en updates van een softwareproject mogelijk. Hierdoor kan feedback van klanten onmiddellijk in een volgende release opgenomen worden. In het geval dat een gebruiker een issue heeft gemeld, kan de testsuite van de CD-pipeline geraadpleegd worden om de scope van mogelijke probleemvectoren te beperken. Ontwikkelings- en testteams die snel reageren op feedback van klanten zijn succesvoller.
Wil je je eigen omgeving voor continue levering opzetten? We helpen je op weg.
Een solide softwareteststrategie ontwikkelen
Bij het bedenken van een softwareteststrategie is het het beste om rekening te houden met de algemene product-, gebruikers- en bedrijfsstrategieën. Er moet worden overwogen wat de meest waardevolle testdekkingsdoelen zijn.
In een ideale wereld streeft een softwareproject naar 100% testdekking, zodat de code geen bugs bevat en naar verwachting werkt. Helaas is dit in de echte zakenwereld, met tijdlijnen en budgettaire beperkingen, niet zo realistisch.
Er moeten ook verschillende teststrategieën worden overwogen, afhankelijk van het type software dat geleverd moet worden. Als de software een GUI-gestuurde toepassing is, zijn end-to-end-tests van hoog niveau zeer waardevol. Softwareprojecten zonder headless UI hoeven niet van begin tot eind te worden getest en profiteren erg van unittests.
Een algemene strategie voor gebruikerstoepassingen op basis van GUI is als volgt.
- End-tot-end tests instellen voor alle belangrijke gebruikersstromen, logins, aanmelden, afrekenen, enz.
- Unittests instellen voor alle gegevensgevoelige codefuncties, zoals tools voor monetaire transacties
- Integratietests instellen voor alle externe integratiepunten om er zeker van te zijn dat de gegevens naar de derde partij stromen en dat eventuele fouten correct worden doorgegeven
Je softwaretests verbeteren met continue levering
Streven naar een workflow voor continue levering heeft veel bedrijfsvoordelen. De bedrijfskosten voor het aannemen en beheren van afzonderlijke teams voor functies op het gebied van quality assurance, releasebeheer en testengineering kunnen drastisch worden verlaagd als we ons inzetten voor een CD-workflow.
Continue levering bevordert over het algemeen een hoger niveau van productkwaliteit dan dat van traditionele testworkflows voor QA. CD testen moedigt ontwikkelaars aan om eigenaar te worden van en te investeren in de eindgebruikerservaring en de kwaliteit van de functies die ze aanbieden. CD biedt een kader waardoor het voor het hele bedrijf eenvoudiger wordt om aandacht te besteden aan en te discussiëren over de kwaliteit van de release.
Een robuuste softwareteststrategie implementeren is de basis voor continue levering, en automatisering is de sleutel tot een geslaagde pipeline voor continue levering.
Ben je klaar om je softwaretests te verbeteren? Meer informatie over testen in een CD-omgeving. Je kunt ook leren hoe Atlassian en tools van derden testen kunnen integreren in je workflow met onze DevOps-testtutorials.
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.