BDD versus TDD versus ATDD: belangrijkste verschillen
Deze gids is bedoeld om verschillende testmethoden of praktijken te beschrijven, zoals Behavioral Driven Development (BDD), Test-Driven Development (TDD) ), Acceptance Test-Driven Development (TDD). Het zal ook helpen om de belangrijkste verschillen tussen deze technieken te verduidelijken. Aan het einde van dit artikel wordt van iemand verwacht dat hij begrijpt hoe elke methode werkt, de belangrijkste verschillen en hun specifieke rol in het ontwikkelingsproces.
Laten we eerst beginnen met testgestuurde ontwikkeling.
Wat is Test-Driven Development (TDD)?
Test-Driven Development is een testmethodologie of een programmeerpraktijk geïmplementeerd vanuit het perspectief van een ontwikkelaar. Bij deze techniek begint een QA-engineer met het ontwerpen en schrijven van testcases voor elke kleine functionaliteit van een applicatie. Deze techniek probeert een eenvoudige vraag te beantwoorden: is de code geldig? De belangrijkste bedoeling van deze techniek is om alleen een nieuwe code te wijzigen of te schrijven als de test mislukt. Daarom resulteert het in minder duplicatie van testscripts. Deze techniek is grotendeels populair in ecosystemen voor agile ontwikkeling. Bij een TDD-benadering worden geautomatiseerde testscripts geschreven vóór functionele stukjes code. De TDD-methodologie omvat de volgende stappen:
- Op basis van de vereisten gespecificeerd in de documenten, schrijft een ontwikkelaar een geautomatiseerde testcase
- Deze tests worden uitgevoerd, en in sommige gevallen , mislukken ze omdat ze zijn ontwikkeld vóór de ontwikkeling van een daadwerkelijke functie.
- Het ontwikkelingsteam re-factoreert vervolgens de code zodat de test met succes slaagt
Re-factoring verwijst naar het proces van het wijzigen van de code zonder de belangrijkste functionaliteit of het gedrag ervan te veranderen.
Voordelen van testgestuurde ontwikkeling:
- Helpt de hoeveelheid tijd die nodig is voor herbewerking te verminderen
- Helpt bij het snel ontdekken van bugs of fouten
- Helpt bij het verkrijgen van snellere feedback
- Stimuleert de ontwikkeling van schonere en betere ontwerpen
- Verbetert de productiviteit van de programmeur
- Staat elk teamlid toe om aan de code te werken in afwezigheid van een specifiek teamlid. Dit moedigt het delen van kennis en samenwerking aan.
- Geeft de programmeur het vertrouwen om de grote architectuur van een applicatie gemakkelijk te veranderen
- Resulteert in de creatie van uitgebreide code die flexibel en gemakkelijk te onderhouden is
Laten we nu alles begrijpen over gedragsgestuurde ontwikkeling.
Wat is gedragsgestuurde ontwikkeling (BDD)?
Bedrijfsgestuurde ontwikkeling (BDD) is een testbenadering die is afgeleid van de Test-Driven Development (TDD) -methodologie. Bij BDD zijn tests voornamelijk gebaseerd op systeemgedrag. Deze benadering definieert verschillende manieren om een functie te ontwikkelen op basis van zijn gedrag. In de meeste gevallen wordt de Given-When-Then-benadering gebruikt voor het schrijven van testcases. Laten we een voorbeeld nemen voor een beter begrip:
- Gegeven dat de gebruiker geldige inloggegevens heeft ingevoerd
- Wanneer een gebruiker op de inlogknop klikt
- Geef vervolgens weer het succesvolle validatiebericht
Zoals hierboven getoond, wordt het gedrag geïllustreerd in een zeer eenvoudige Engelse taal, ook wel bekend als een gedeelde taal. Dit helpt iedereen in het team dat verantwoordelijk is voor ontwikkeling om het gedrag van functies te begrijpen.
Men kan bijvoorbeeld proberen een eenvoudige cross-browser-test uit te voeren op basis van een reeks instructies om op meerdere apparaten te testen, zoals weergegeven in de video.
Probeer gratis browsertests op Real Device Cloud
Belangrijkste voordelen van gedragsgestuurd Ontwikkelingsaanpak:
- Helpt een breder publiek te bereiken door het gebruik van niet-technische taal
- Richt zich op hoe het systeem zich moet gedragen vanuit het perspectief van de klant en de ontwikkelaar
- BDD is een kosteneffectieve techniek
- Vermindert de inspanningen die nodig zijn om eventuele defecten na implementatie te verifiëren.
De onderstaande afbeelding toont een typische BDD-bewerking:
Afbeeldingsbron: Tutorialspoint
Hoe helpt BDD bij SDLC?
Het debuggen van fouten in de laatste stadia van de ontwikkelingscyclus blijkt vaak erg duur te zijn ive. In de meeste gevallen is onduidelijkheid in het begrijpen van de vereisten de hoofdoorzaak hiervan. Men moet ervoor zorgen dat alle ontwikkelingsinspanningen gericht blijven op het voldoen aan vooraf bepaalde vereisten. BDD stelt ontwikkelaars in staat het bovenstaande te doen door:
- toe te staan dat de vereisten worden gedefinieerd in een standaardbenadering met behulp van eenvoudig Engels
- Verscheidene manieren te bieden om real-world scenarios te illustreren voor begrip vereisten
- Een platform bieden dat de technische en niet-technische teams in staat stelt samen te werken en de vereisten te begrijpen
Wat is een acceptatietestgestuurde ontwikkeling?
In de Acceptance Test-Driven Development (ATDD) -techniek wordt een enkele acceptatietest geschreven vanuit het perspectief van de gebruiker.Het richt zich vooral op het voldoen aan het functionele gedrag van het systeem. Deze techniek probeert de vraag te beantwoorden: werkt de code zoals verwacht?
Deze techniek verbetert de samenwerking tussen ontwikkelaars, gebruikers en QAs met een gemeenschappelijke focus over het definiëren van de acceptatiecriteria. Hieronder volgen enkele van de belangrijkste praktijken in ATDD:
- Analyse en bespreking van de praktijkscenarios
- Bepalen van de acceptatiecriteria voor die scenarios
- Automatisering van de acceptatietestgevallen
- Focussen op de ontwikkeling van die vereiste gevallen
Voordelen van ATDD
- Vereisten worden heel duidelijk geanalyseerd zonder elke dubbelzinnigheid
- Stimuleert samenwerking tussen teamoverschrijdende leden
- De acceptatietest dient als gids voor het hele ontwikkelingsproces
Belangrijkste verschillen: TDD vs BDD vs ATDD
Parameters | TDD | BDD | ATDD |
Definitie | TDD is een ontwikkelingstechniek die zich meer richt op de implementatie van een functie | BDD is een ontwikkelingstechniek die zich richt op het gedrag van het systeem | ATDD is een techniek vergelijkbaar met BDD die zich meer richt op het vastleggen van de vereisten |
Deelnemers | Ontwikkelaar | Ontwikkelaars, klant, QAs | Ontwikkelaars, klanten, QAs |
Gebruikte taal | Geschreven in een taal die lijkt op de taal die wordt gebruikt voor het ontwikkelen van functies (bijv. Java, Python, enz.) | Eenvoudig Engels, (augurk) | Eenvoudig Engels, augurk |
Hoofdfocus | Unit Tests | Vereisten begrijpen | Acceptatietests schrijven |
Gebruikte tools | JDave, Cucumber , JBehave, Spec Flow, BeanSpec, Gherkin Concordian, FitNesse | Augurk, Dave, Komkommer, JBehave, Spec Flow, BeanSpec, Concordian | TestNG, FitNesse, EasyB, Spectacular, Concordian, Thucydides |
Begrijpen hoe deze methoden werken, kan ontwikkelaars en andere personen die betrokken zijn bij software helpen ontwikkeling uit te zoeken welke strategie het beste werkt om hun doel te dienen. Afhankelijk van het soort project en de resultaten die het beoogt te bereiken, kan de juiste methode (of zelfs een combinatie van methoden) worden ingezet om op de meest efficiënte manieren aan specifieke vereisten te voldoen.