Agile, Test engineering

Eén van onze collega’s heeft een tijdje geleden de mBot ontdekt om zo zijn zoontje te leren programmeren. Maar deze mBot is niet alleen voor kinderen interessant. Dit grappige robotje leent zich er uitstekend voor om spelenderwijs ‘Specification by Example’ onder de knie te krijgen.

mBot

De mBot is een klein robotje welke een hoge mate van aanpasbaarheid heeft en beschikt over diverse sensoren en motoren om de wielen aan te sturen. Wat de mBot zo uniek maakt is de combinatie van hard- en software. De hardware is gebaseerd op het open-source hardware platform Arduino en kan uitgebreid worden. Met de applicatie Scratch kun je visueel programmeren waarbij je codeblokken kan slepen en daarmee een routine kan maken rondom het gedrag van de robot. De aanpasbaarheid van de robot en de prijs, circa 80 euro, maken het een aantrekkelijk geheel. Oorspronkelijk is het mBot project bedoeld voor het onderwijs om kinderen te leren programmeren. De slogan van de fabrikant is daarom ook ‘one robot per kid’.

Specification by Example

We zien dat Specification by Example (SbE) of Behavior Driven Development (BDD) steeds meer geadopteerd wordt door agile teams. Tijdens het specificeren, bouwen en testen van software wordt traditioneel veel informatie overgedragen. Van business, naar analisten, naar ontwikkelaars, naar testers, die weer met resultaten naar de business gaan. Dit proces draagt niet bij aan duidelijke specificaties, code en tests. Bovendien, heb je jezelf weleens betrapt wanneer je iets probeert uit te leggen, op het gebruik van voorbeelden om concrete handvatten en duidelijkheid te geven aan abstracte concepten?
Daarom geven we onze specificaties vorm in voorbeelden. Deze voorbeelden kunnen worden gezien als uitvoerbare specificaties die requirements valideren en verifiëren en geven een nieuwe betekenis aan testautomatisering. Door deze voorbeelden te beschrijven in de Gherkin syntax: ‘Given, When, Then’ zijn we in staat gedrag van systemen te beschrijven op een manier die voor alle betrokkenen helder is.

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.

Workshop BDD met robots
Bekijk hier de aftermovie van de TestNet ZomerWorkshop 'BDD met robots' die Bartosz verzorgde op 13 juli 2016

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.

Wil je ons nieuwste Paarsz magazine per post ontvangen? Laat dan je gegevens achter.

Ontwerp zonder titel (19)

Werken bij Bartosz?

Vincent Verhelst

Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.

Mijn Paarsz