Efficiënt testen met SpecFlow in C#

Blog

Softwareontwikkeling is een complex proces dat nauwgezette aandacht vereist om de kwaliteit en betrouwbaarheid van applicaties te waarborgen. Een integraal onderdeel van dit proces is het testen van software om ervoor te zorgen dat het voldoet aan de gestelde eisen en correct functioneert. In deze blogpost ga ik dieper in op SpecFlow, een krachtig hulpmiddel voor het schrijven en uitvoeren van tests in C#. Ik zal verkennen wat SpecFlow is, waarom het waardevol is en hoe het kan worden geïmplementeerd in jouw projecten.

Wat is SpecFlow?

SpecFlow is een open-source framework dat Behaviour-Driven Development (BDD) mogelijk maakt voor .NET-applicaties, waaronder C#. BDD is een ontwikkelingsmethode die de focus legt op het begrijpen van het gewenste gedrag van software vanuit het perspectief van de stakeholders, zoals klanten en eindgebruikers. SpecFlow maakt gebruik van een natuurlijke, leesbare taal genaamd Gherkin om gebruikersscenario’s te definiëren, waardoor communicatie tussen ontwikkelaars, testers en stakeholders wordt versimpeld.

In SpecFlow wordt een scenario geschetst waarin een gebruiker van de applicatie zich kan bevinden. Het omschrijft de situatie waarin de gebruiker of applicatie zich bevindt. Vervolgens beschrijft het de actie die wordt uitgevoerd en ten slotte het verwachtte resultaat van deze actie. Deze makkelijk leesbare stappen gaan gepaard met een zogeheten stap-definitie waarin deze stappen en omschrijvingen worden uitgewerkt tot een werkende test. Later geef ik een voorbeeld van een scenario en uitwerking.

Waarom SpecFlow?

Naast de welbekende unit testen die developers toepassen om werkende code te waarborgen, zijn ook integratietesten een belangrijk onderdeel in het garanderen van kwaliteit. Waar je met unit testen kleine blokjes onafhankelijke code test, richten integratietesten zich op het grotere geheel. Bijvoorbeeld startend met de aanroep van een API, waarop vervolgens nieuwe data in een database tabel wordt opgeslagen, om ten slotte te valideren of deze nieuwe data overeenkomt met de verwachting.

Integratietesten

Integratietesten spelen een essentiële rol in het verzekeren van de samenwerking en functionaliteit van verschillende componenten binnen een applicatie en SpecFlow biedt een uitstekend framework voor het uitvoeren van deze integratietesten. Door integratietests in SpecFlow op te nemen, krijgen teams een beter beeld van de functionaliteit van hun applicatie en kunnen ze potentiële problemen opsporen die kunnen optreden bij de samenwerking van verschillende nieuwe componenten. Ook biedt het grote waarde om bestaande functionaliteiten overeind te houden. Dit draagt bij aan het bereiken van een betere algehele kwaliteit en stabiliteit van de applicatie en helpt om potentiële problemen tijdens vroege stadiums van ontwikkeling te herkennen.

Verbeterde samenwerking

Het hele achterliggende idee van SpecFlow is dat de scenario’s worden opgesteld door stakeholders of product owners. De scenario’s die worden omschreven zijn in wijze heel erg gelijk aan de manier waarop een gebruikersscenario in een user story wordt opgesteld. Hierdoor ontstaat er een korter lijntje tussen de verschillende belanghebbenden binnen het project en daardoor een betere en snellere samenwerking.

Een simpel voorbeeld van een gebruikersscenario in een user story:

“Als gebruiker wil ik in kunnen loggen op mijn persoonlijke bankieren omgeving, zodat ik een betaling kan doen.”

Kan vertaald worden naar een SpecFlow scenario als:

Gegeven een inlogscherm Wanneer de gebruiker de correcte gebruikersnaam en wachtwoord invoert dan wordt de gebruiker ingelogd

Automatisering

In het kader van kwaliteit en vroegtijdig problemen opsporen, kan een goed ingerichte CI/CD pipeline natuurlijk niet ontbreken. Automatisch testen is daarin een belangrijk onderdeel en ook SpecFlow testen kunnen automatisch worden uitgevoerd bij de uitrol van een nieuwe update van de applicatie.

Herbruikbaarheid van stappen

Ten slotte is herbruikbaarheid van stappen een grote bonus in SpecFlow. Neem bijvoorbeeld bovenstaand scenario voor het inloggen van de pagina waarbij alles goed gaat, een zogenaamd ‘Sunny day’ scenario. Als tegenhanger hiervan is er natuurlijk ook een ‘Rainy day’ scenario, waarbij de gebruiker een fout wachtwoord invoert. Ook voor dit scenario is een inlogscherm vereist, maar omdat deze stap al is uitgewerkt voor het eerste scenario, behoeft deze geen verdere uitwerking voor een ontwikkelaar.

Hoe SpecFlow te gebruiken in C#:

Het gebruik van SpecFlow in C# is relatief eenvoudig en kan worden samengevat in een paar stappen:

  1. Installeer de benodigde SpecFlow extension in Visual Studio of Rider.

  2. Definieer features: Feature bestanden bevatten de in Gherkin geschreven scenario’s waarin de gewenste functionaliteit van de applicatie wordt beschreven.

Voorbeeld_feature.jpg

  1. Implementeer stap definities: Schrijf C# code om de stappen die uitgeschreven staan in de feature bestanden te implementeren. Deze stappen zullen de daadwerkelijke interacties tussen code componenten aansturen.

Voorbeeld_stapdefinitie.jpg

  1. Voer de tests uit: Voer de SpecFlow tests uit met behulp van een testrunner zoals XUnit of MSTest.

Conclusie

SpecFlow is een krachtig hulpmiddel voor het schrijven en uitvoeren van tests in C# applicaties. Door gebruik te maken van de duidelijke en begrijpelijke Gherkin syntax, maakt SpecFlow het mogelijk om effectief samen te werken aan het definiëren en automatiseren van acceptatietests. Door SpecFlow te integreren in jouw ontwikkelingsproces, kan je de kwaliteit van applicaties verbeteren, de samenwerking tussen teamleden versterken en de efficiëntie van het ontwikkelproces vergroten.

Deel deze pagina:
Lars
Auteur
Lars
Developer

Heb je vragen over dit onderwerp of zou je Lars willen inhuren voor een vergelijkbare opdracht?

Neem contact met ons op

Lees ook onze andere informatie over .NET

Kan je een .NET Developer gebruiken in je team?

Neem contact met ons op om de mogelijkheden te bespreken

Hoe leuk is het om .NET Developer bij ShareValue te zijn?

Lees er alles over
Cookies beheren