WEBLOG
Welkom in de wereld van TOPdesk
  • Softwaretesten voor developers (afstudeeropdracht)

Steven van Kempen 28 September 2012Tags: Development

Softwaretesten voor developers (afstudeeropdracht)

Als je softwareontwikkelaar bent, hou je dan per definitie NIET van testen? Joep Weijers (24) glimlacht. “Het is een onderdeel van het werk, natuurlijk. Als je programmeur bent, dan denk je wel eens: ik heb het toch gemaakt, ik heb er over nagedacht, dan zal het toch wel goed zijn...” Maar software testen is niet alleen het werk van de softwaretester; ook de ontwikkelaar heeft hierin een belangrijke taak.

Afstuderen bij TOPdesk
Joep Weijers (Software Engineering, TU Delft) koos dit onderwerp als focusgebied voor zijn afstudeeropdracht; softwaretesten voor software developers. Hij voerde het onderzoek uit bij software- en consultancybedrijf TOPdesk. TOPdesk is leverancier van een standaard softwareapplicatie die wereldwijd door zo’n 4500 organisaties wordt gebruikt. Kwaliteit van de code is erg belangrijk voor TOPdesk. Het doel van het afstudeeronderzoek: het verbeteren van de kwaliteit van de code door het verbeteren van de kwaliteit van de tests geschreven door software developers Inmiddels is Joep afgestudeerd met een acht. 

De uitgangspunten van de afstudeeropdracht
Software developers maken vaak onderscheid tussen twee soorten tests: de unittest en de integratietest. Een unittest test één specifieke functie, een integratietest controleert de werking binnen een groter geheel, bijvoorbeeld hoe een functie of module samenwerkt met andere modules binnen en buiten de applicatie. In de praktijk zorg je er eerst voor dat de unittests gedaan worden én goed zijn. Als daar al fouten optreden dan zal een integratietest ook geheid misgaan. Hoe meer tijd je hebt om je code te testen, hoe zekerder je kunt zijn over de kwaliteit. En een developer is natuurlijk liever bezig met code schrijven dan code testen. Een interessant spanningsveld.

Het onderzoek: “Extending Project Lombok to improve JUnit tests
Het afstudeeronderzoek bestond uit twee delen: (1) hoe onderscheid je een unittest van een integratietest en (2) hoe kun je de kwaliteit van de tests verbeteren.

Hoe begin je? “Je oriënteert je zo breed mogelijk. Je kijkt binnen én buiten de muren van TOPdesk hoe mensen unittests inzetten. Vervolgens ontdek je dat er eigenlijk geen heldere definitie is voor een unittest. Ik ben dus begonnen met een definitie te formuleren door vijf criteria op te stellen. Ik heb een tool ontwikkeld die een unittest – volgens deze definitie – kan herkennen. Hierdoor kon ik de code analyseren en de verhouding tussen unittests en integratietests bekijken. Je puzzelt je in dit proces naar een oplossing. Bijvoorbeeld, toen het lukte om mijn tool een unittest te laten herkennen, hoe haal je dan de juiste data uit een test? Roel Spilker, mijn begeleider bij TOPdesk, zegt dan “zoek maar eens op techniek ‘x’, dan kan je daarna vast weer verder”. Dat werkt en is heel leerzaam! Uiteindelijk kwam uit mijn onderzoek een aantal belangrijke punten naar voren. Punten die vaak fout gaan in tests. Bijvoorbeeld het niet testen van code, het dupliceren van code in tests en het niet testen van alle randgevallen. Dit zijn heldere aandachtspunten waarin we willen verbeteren.”

Project Lombok als ‘decor’ voor het onderzoek
Project Lombok is een bestaand open source project dat door een aantal TOPdesk-developers is gestart. Het is een tool die met declaratieve annotaties de hoeveelheid ‘boiler-plate code’ in Java probeert te verminderen. “It will spice up your Java”, zoals ze zelf zeggen. “Door het zetten van een enkele annotatie op je Java klasse wordt door Project Lombok een heleboel code gegenereerd, die je anders zelf had moeten schrijven. Ik dacht: zou het niet mooi zijn als we dit principe ook kunnen toepassen op tests? Zet één annotatie in je test klasse en een set met tests wordt automatisch gegenereerd.”

Tests genereren
Wat wil je bereiken met de gegenereerde tests? “Een van de specifieke aandachtspunten uit het onderzoek is dat bepaalde methodes niet grondig genoeg getest worden. Als ontwikkelaars de  zogenaamde equals, hashCode of toString methode implementeren in een klasse, moeten ze zorgen dat de werking van hun implementatie klopt met het verwachte gedrag. Dit gedrag is vastgesteld door de makers van Java en als daarvan afgeweken wordt, kunnen lastig te traceren bugs optreden. Als correcte tests automatisch gegenereerd worden, is het testen geen probleem meer voor de ontwikkelaar. Op dezelfde manier waren er nog meer tests aan te wijzen die we automatisch kunnen genereren.”

Na een implementatieperiode had Joep zijn tests genererende annotatie. De laatste stap was een experiment om te bepalen of het doel, de kwaliteit van tests verbeteren, gehaald was. “Allereerst moet je bepalen hoe je de kwaliteit van tests wil kwantificeren. Ik heb gekeken naar verschillende kengetallen, zoals bijvoorbeeld de code coverage en hoeveelheid gedupliceerde code in tests. Uit de analyse bleek dat mijn annotatie in alle gevallen de kengetallen verhoogd had. De kwaliteit van de tests was dus verbeterd.” Naast deze theoretische verbeteringen van de kwaliteit, waren er ook praktische verbeteringen. Joep: “We hebben ook verschillende fouten in de TOPdesk code ontdekt die in uitzonderlijke gevallen voor bugs kunnen zorgen.”

Na het afstudeeronderzoek
TOPdesk is zeer geïnteresseerd in de toepassing van Joep’s oplossing en het zal na verdere ontwikkeling ook voor meer activiteiten binnen de development-afdeling worden ingezet. Joep vindt het mooi dat, nu hij fulltime software developer is bij TOPdesk, hij op zijn apenkooidagen* nog steeds tijd kan besteden aan de verdere ontwikkeling van zijn plan.

* Binnen TOPdesk mag een software developer 10% van zijn/haar werktijd besteden aan eigen projecten die losstaan van het dagelijks werk en bijdragen aan professionele ontwikkeling.

 





Popular posts

TechTeam uitgelicht! Deel 3: de scheikundige en de marketeer
15 December 2017  •  Wendy van Slooten

Who’s the Boss? Bij Support: Everdien
11 December 2017  •  Wendy van Slooten

These software developers left the TOPdesk mothership.
07 December 2017  •  Anna Afoichini

API’s als oplossing tegen 'feedback overload'
31 October 2017  •  Wendy van Slooten

TechTeam uitgelicht! Deel 1: de (bijna) filosoof en de Doctor in de informatica.
17 October 2017  •  Wendy van Slooten

Het TechTeam van Support
12 October 2017  •  Wendy van Slooten

Wat we je niet vertellen in een sollicitatiegesprek
22 September 2017  •  Wendy van Slooten

Het TOPdesk DNA om mensen te helpen
21 September 2017  •  Nienke van den Berg

Service Management voor dummies
19 September 2017  •  Martijn Meeder

Een baan zonder functieomschrijving?!
21 August 2017  •  Rob Haaring

Als je STAR begrijpt, wordt solliciteren een stuk leuker
22 May 2017  •  Wendy van Slooten

“Apekooien” at Development (10% time)
20 September 2016  • 

Test Team ≠ Testing Community
07 March 2016  •  Lisanne van der Kaaij

Een jaarvergadering klinkt saai, toch?
01 February 2016  •  Wendy van Slooten

TOPdesk derde in Beste Werkgevers Onderzoek 2015
09 December 2015  •  Wendy van Slooten

A day as a TOPdesk developer
13 July 2015  • 

Challenges in developing service management software
02 March 2015  •  Corina Stratan

Sharing knowledge at International Development Meeting
09 February 2015  •  Anna Afoichini