Op dinsdag 9 en woensdag 10 maart vond de eerste workshop Test-Driven Development plaats in ons cursus lokaal in De Meern.
Dag 1
Na een uurtje introductie en theorie was het tijd om aan de slag te gaan, het is immers een workshop en TDD leer je alleen maar door het ook daadwerkelijk te doen. Elke cursist had dan ook een computer tot zijn beschikking met daarop geïnstalleerd Visual Studio 2008 en Resharper. Hiervan werd gretig gebruik gemaakt om mij te volgen terwijl ik de eerste test schreef voor wat na twee dagen zou uitmonden in een eenvoudig cursus registratie systeem.
Vooral het feit dat ik Test-First werkte, eerst een test schrijven en dan pas de daadwerkelijke implementatie, was voor de cursisten toch wel een redelijke “mind-shift”. De cursisten kregen dan ook ruimschoots de tijd om daar middels diverse oefeningen ervaring mee op te doen. Nadat de cursisten de ochtend hadden besteed aan het (uit)bouwen van de business logica laag van ons registratie systeem, werd het aan het begin van de middag tijd om aandacht te besteden aan diverse design/test patterns. Maar eerst even lunchen en een frisse neus halen.
Patterns die ’s middag aan de orde kwamen waren o.a. dependency injection, inheritance en het gebruik van factories. Deze patterns hebben we vervolgens toegepast bij het testbaar houden van onze business logica en de provider laag (later op de middag). Aan het eind van dag 1 hadden we volledig Test-Driven de business logica laag gecreëerd en een deel van de provider (database) laag.
Dag 2
Vandaag begonnen de cursisten met een oefening in het onderkennen van testgevallen voor nieuwe eisen aan onze business logica. Vervolgens gingen de zij middels pair programming aan de slag met het coderen van de tests en het schrijven van de implementatie om deze tests te laten slagen. Weer een stukje oefening in 1 van de meest belangrijke TDD mantra’s “Red, Green, Refactor”. Het tweede deel van de ochtend werd vervolgens besteed aan het verder uitwerken van de provider en database laag. En prima gelegenheid om te laten zien en te ontdekken hoe interfaces, factories, mocks en stubs kunnen helpen voorkomen dat tests afhankelijk worden van de data in je database.
Na de lunch was het tijd voor de laatste laag in onze applicatie, het user interface. Hierbij begonnen we met een redelijk ontestbare web pagina (met code behind) implementatie. Middels WatiN borgden we het gedrag waarna we stapje voor stapje de code “achter het scherm” konden gaan aanpassen conform het MVP pattern. Door het toepassen van dit pattern werd onze user interface code ook testbaar middels unit tests, wat ons in staat stelde gecontroleerd aanpassingen te kunnen doorvoeren aan de UI logica. Met deze laatste stap ronde we de implementatie van ons cursus registratie systeem af.
In het tweede deel van de middag zijn we nog kort ingegaan op functioneel testen. Ook hebben we gesproken hoe al dit nou te borgen in je ontwikkel process. Continues integration is hierbij toch wel de spil waar alles om draait. En natuurlijk die ene vraag: Ga je dit morgen toepassen in je werkzaamheden en…. waarom niet.
Gezien de enthousisate reacties van de cursisten en het plezier dat ik ook zelf heb beleefd aan het delen van mijn kennis, krijgt deze workshop van mij het stempel: Zeer geslaagd!
Jeroen van Menen
Trainer TDD workshop

Nederlands
English