Het combineren van Specification by Example en de mBot resulteert in een serieus leermoment met veel fun.
De combinatie en statement
Al snel ontstond binnen Bartosz het idee om Specification by Example en spelen met de mBot te combineren. Een serieus leermoment met veel fun. Het gedrag van de mBot staat centraal; op basis van de sensoren kan een status bepaald worden en aan de hand van die status moet de robot bepaald gedrag vertonen. Daarnaast is het robotje gewoon ontzettend leuk om mee te spelen, het is tastbaar en het reageert direct.
Ook vonden wij het belangrijk om een statement te maken, namelijk het misverstand dat Specification by Example of Behavior Driven Development iets met testen of testautomatisering te maken heeft. Het gezamenlijke beeld, de discussies, het uniforme taalgebruik en haar strakke scenario’s dragen natuurlijk bij aan de kwaliteit van de applicatie. Toch moeten we de voorbeelden niet als testen beschouwen. Maar als specificaties welke de ontwikkeling van de applicatie voortstuwen en zo uitvoerbare specificaties worden. En dan nog kan de applicatie fouten bevatten. Of met de snelheid van de huidige manier van softwareontwikkeling, kan het zojuist geïmplementeerde direct nieuwe inzichten opleveren. Dit faciliteren zien wij als de nieuwe rol van de tester; het leren, ontdekken en onderzoeken van mogelijkheden.
Workshop ‘Specification by Example met Robots’
Voor verschillende klanten en tijdens de TestNet ZomerWorkshops hebben we de workshop ‘Specification by Example met Robots’ georganiseerd. Tijdens deze workshop leert men het gedrag van een robot te modeleren door middel van Specification by Example. De workshop begint met een theoretische introductie van Specification by Example en meer inzicht in wat de mBot is en kan. Daarna begint het praktijkgerichte gedeelte. Door ons wordt een parcours opgesteld met hierin een slingerlijn, een haakse bocht naar rechts, een haakse bocht naar links, met muren en een garage waar de mBot tot stilstand moet komen. De mBot beschikt over sensoren welke de lijn dienen te volgen, maar blind daarop vertrouwen kun je niet. Het gedrag wat vertoond moet worden bij de muur en de garage zijn andere patronen. Het einddoel is om uiteindelijk de robot zo te programmeren dat deze foutloos het parcours kan afleggen in de snelste tijd! We beginnen pas met het implementeren van de code als we een gezamenlijk beeld hebben over wat er geïmplementeerd moet worden. In vijf groepen van 4 á 5 personen worden de voorbeelden uitgewerkt. De groepen komen meestal al snel tot de conclusie dat het vermelden van sensorgegevens in de scenario’s niet de bedoeling is. Het gaat om businesswaarde en het beschrijven van het gewenste gedrag van de robot. Er wordt intensief samengewerkt om zo een gemeenschappelijke taal te gebruiken in het team en laat dat de bedoeling zijn van Specification by Example of Behavior Driven Development. Deze vergroten de synergie binnen het team en de betrokkenheid met de business. Zodoende kan in één keer het juiste product worden gebouwd.
"Het einddoel is om uiteindelijk de robot zo te programmeren dat deze foutloos het parcours kan afleggen in de snelste tijd!"
Na het uitdenken van de scenario’s wordt er doorgegaan met het implementeren van de Scratch code aan de hand van de voorbeelden, om dit vervolgens samen te voegen tot één geheel. Hier begint de grote ‘fun factor’ van deze workshop. We hebben behoorlijk veel robotjes de raarste capriolen zien uithalen. Wij kijken met plezier terug op de tot nu georganiseerde workshops ‘Specification by Example met mBots’. Klanten ervaren de workshop als zeer leerzaam en hebben een leuke middag met elkaar.
The next steps
Natuurlijk zitten wij bij Bartosz niet stil. We blijven de workshop verder uitbreiden. De nieuwste versie is realistischer ingestoken en hierin zijn de ervaringen meegenomen die wij als testconsultants opdoen bij onze opdrachten. Namelijk dat vanuit de voorbeelden uitvoerbare specificaties gemaakt worden via Cucumber en Java. Bewust of onbewust zullen de deelnemers begrippen leren zoals Dependency Injection en Mocking en het feit dat je de mBot weg kan laten tijdens het programmeren van het gedrag. Niet alleen specificaties maar echt outside-in development en een goede inrichting van de test automation piramide.
Interesse?
Interesse in een workshop ‘Specification by Example met mBots’? Neem dan contact op met Maarten Piepers van Bartosz.