Test Driven Development

Slides:



Advertisements
Verwante presentaties
De zin en onzin van escrow
Advertisements

Testen van embedded systemen
Stijn Hoppenbrouwers Software Engineering les 1 Algemene inleiding en Requirements Engineering.
WIE STAAN VOOR U? Sandra Klokman Noor Bosch RIBW
Software Architectuur Over de samenhang der dingen = Over de connecties tussen componenten Over de afhankelijkheden tussen modules Over de belangen van.
How to avoid being a code monkey ? Peter Vantieghem 18/6/2013.
GIS – Scada Integratie Kees Kremer GEO Event 18 maart 2014
Door Ramòn Janssen, Tim Helwegen en Niels Killaars. Home Interaction System RJTHNK.
Distributiefuncties Producent (goederen) Eindgebruiker
Verbetering van kwaliteit begint bij de individuele ontwikkelaar E-ducation is our mission NIOC Eric van der Vliet SPI Consultant.
Activiteit 1.6 Bepalen niet-functionele eisen
1 Orientatie InformatieSystemen K.M.van Hee hgl. architectuur van informatiesystemen dir. Deloitte & Touche Bakkenist TU/e 2001.
Top redenen voor het falen van DMS-implementaties!
1 Welkom Loe Hameleers Gerard Maeijer. 2 ERP systemen zullen een ingrijpende verandering ondergaan ERP systemen zullen een ingrijpende verandering ondergaan.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Ontwerpen van Digitale Systemen
Technische Architectuur
Acceptatiemanagement conform B-Accept Winand van Drenth
10 tips Lees ook de Manpower White Paper!
moderniseren van het curriculum.
Producten & Werkprocessen
Risk Based Testing van pakketsoftware
Joe de Developer Leergierig
Neurale Netwerken Genetische Algorithmen
ArchiValue: de APG-Case
Artificial Pancreas Cheetah Just Boerlage & Patrick van Kouteren.
Refactoring en Unit Testing. Geschiedenis Hoe maken we complexe code duidelijker? Hoger abstractieniveau –Assembly –“Hogere” programmeertalen –Object-orientatie.
Iedereen is context driven!
PLANNING EN DESIGN MET VSTS2010 Lunchsessie ALM René van Osnabrugge
Specification by Example in een .NET omgeving
De Dynamische Testrapportage: BDD en de deployment pipeline
Agenda Inleiding en Lagerhuis: Proces management en proces keten optimalisatie gaat ons helpen inzicht te krijgen in de impact van toekomstige veranderingen.
UML 1. Use cases1. Use cases. Het probleem: Hoe inventariseer ik wensen en eisen voor mijn project? Hoe leg ik ze vast? Hoe geef ik vorm en structuur.
Slc kwartaal 3. programma Hoe is het gegaan Verwachtingen Tips and tricks Opdrachten slc.
123 Belangrijke voordelenWat is het? End-to-end mogelijkheden Creëer en versterk autonome flexibele teams Plaats kwaliteit centraal in alles wat u doet.
Start Inhoud introductie BiSL Informatiesysteem, gegeven Informatiebeleid Positionering: Beheer informatiesystemen BiSL als informatiearchitectuur.
Even voorstellen Hennie Lüers, coach Kim Veldhuis, P&O.
28 maart 2011, welkom op onze informatieavond Slim Fit slimme fits in het anders organiseren van onderwijs.
Hoe Agile bent u? Hoe Agile kunt u zijn?
17 november 2011, welkom op onze informatieavond Slim Fit, unit onderbouw slimme fits in het anders organiseren van onderwijs.
Nieuwe opzet onderwijs. Huidige situatie onderwijs op Commanderij College: Methode bepaalt grotendeels: Welke onderwerpen worden behandeld Op welke wijze.
Vrijwilligerswerk. Proces Team samenstellen Verantwoordelijkheden – Contact opnemen met personen die zijn aanbevolen als geschikte leider – Opvolgen.
BUSINESS INFORMATIEMANAGEMENT/ FUNCTIONEEL BEHEER MIDDAG GEBRUIKERSONDERSTEUNING VOOR FB BESTELAANVRAGEN.
EEN PROJECT PLANNEN, VERKOPEN EN UITVOEREN Commissie voor vrijwilligerswerk.
Het plaatsen van mensen met een arbeidsbeperking binnen ING Nederland
Windows applicatieontwikkeling
Lean Six Sigma - Verbetermanagement
YPOD. Young Professional Ontwikkel Document..
Key Process Indicator Sonja de Bruin
Frontend Oss
LOB zeven stappen naar succes
Een vergadering organiseren
Het 7-stappenplan Er bestaan verschillende modellen en stappenplannen om morele dilemma’s te analyseren en tot een beslissing te komen. Wij gebruiken “het.
Afstemmen op elkaar doorheen voorbereidend gesprek
Commissie voor vrijwilligerswerk
Automatisering van A tot Z
Vergadering Personeelsdienst
Agile in een niet Agile context
Procesondersteuning binnen de sociale zekerheid
SCALABLE DATA PROCESSING MET RABBITMQ
Software Development fundamentals
“CI/CD pipeline ABNAMRO Hypotheek”
Testsoorten: het klassieke plaatje
– Software development fundamentals
Het proces agile gemaakt
– Software development fundamentals
Software Development fundamentals
Software Development fundamentals
Vernieuw je HR-cyclus.
Onbevredigd door Testautomatisering? Reduceer je False Negatives!
Transcript van de presentatie:

Test Driven Development “Onze passie is het helpen van organisaties bij het professionaliseren en optimaliseren van hun software development” Test Driven Development

Wie is wie? Menno Jongerius CTO & Project Lead Developer Johan Smarius Arjen Kraak Project Lead Developer

We vertrouwen in principe alle code NIET We vertrouwen in principe alle code NIET. Om vertrouwen te krijgen richten we testen in. Testen bestaan in verschillende vormen en maten. Vandaag hebben we het over vooral unit testen. Andere soorten testen (keten, integratie) krijgen vandaag weinig tot geen aandacht. Weet dat daarvoor andere tooling voor beschikbaar is.

Bij een constante ontwikkelsnelheid (toename codebase) neemt de testbare codebase ook toe. Hierdoor neemt ook de testbelasting toe. Wat we eigenlijk willen is dat de test belasting gelijk blijft. Dit kunnen we bereiken door een architectuur in te richten waarbij afhankelijkheden worden geminimaliseerd en componenten klein en geïsoleerd zijn. Op deze manier worden de gevolgen van aanpassingen voorspelbaar en kan met nagenoeg dezelfde inspanning (regressie + functionele testen)de codebase worden uitgebreid. Kortom je kan dit bereiken door: - automatisch testen - juiste (losely coupled) architectuur Voorwaarde is wel dat requirements op dusdanige manier zijn geformuleerd dat de acceptatie criteria testbaar zijn. Het onderwerp van vandaag concentreert zich op de architectuur aspecten.

Waarom automatisch testen? Veranderingen leveren voorspelbaar gedrag en dus vertrouwen De testen zijn documentatie van specificaties Opsporen van bugs is eenvoudig door het hebben van kleine en geï​​soleerde eenheden(classes, functies) Het helpt je om SOLID na te denken over de architectuur

Uncle Bob over TDD (Robert C. Martin) “The act of writing a unit test is more an act of design than of verification.  It is also more an act of documentation than of verification.   The act of writing a unit test closes a remarkable number of feedback loops, the least of which is the one pertaining to verification of function”

Kent Beck over TDD “TDD encourages simple designs and inspires confidence”

F ast I solated R epeatable S elf-verifying T imely Een goede unit test F ast I  solated R epeatable S elf-verifying T imely De optimale unit test moet aan de volgende voorwaarden voldoen: Snel, Geisoleerd, Herhaalbaar,Zonder menselijk ingrijpen een resultaat, Automatisch tijdens coderen

TDD workflow Je begint met het schrijven van de unit test. Deze compileert (als het goed is niet). Vervolgens zorg je ervoor dat met minimale code de solution compileert en de unit test faalt. De laatste stap zorgt ervoor dat net voldoende code wordt aangebracht om de test te doen slagen. Gedurende de levenscyclus van het programmeren herhaalt zich dit continue.Het proces houdt niet op nadat het groen resultaat is behaald. Groen <> DONE !!!!

Testen helpt je na te denken over gedrag De succes criteria zullen 1 of meerdere unit testen moeten opleveren. Startend vanuit de unit testen kan de code volgens de functionele requirements worden geïmplementeerd. In dit voorbeeld heb je bijvoorbeeld een Transaction object waarbinnen de business rules worden gevalideerd. Elke rule zou in een aparte functie of zelfs klasse kunnen worden geïmplementeerd en dus ook geïsoleerd kunnen worden getest met de verwachte goed/fout resultaten met verschillende input.

Je ziet veel teams de applicatie opdelen in lagen Je ziet veel teams de applicatie opdelen in lagen. Een klassiek voorbeeld is de 3 lagen structuur aan de linkerkant. Uiteindelijk wordt de oplossing nog groot. Soms is het zelfs zo dat een laag een applicatie op zich wordt. Wat je eigenlijk wilt is dat de applicatie een verzameling van bouwstenen die worden gebundeld in (micro) services die in losse  projecten of zelfs solutions worden gerealiseerd. Het uiteindelijke doel is om orde in de chaos te creëren door kleine eenheden te maken die eenvoudig te begrijpen zijn.

Test Driven Development ervaringen Ronny Kennes (Testdorp)

Test driven development praktijkcase Test-first en refactor opties Mocking met nSubstitute Inversion of control Mocking van je datalaag ServiceLocator

Inversion of Control in de praktijk Dependency Injection Aanmaken objecten uitbesteedt aan IoC container IoC Container http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison

Keuze IoC Container Functionaliteit Performance Volwassenheid Actieve ondersteuning Persoonlijke/team voorkeur