Stryker Mutator over de 1 miljoen downloads

Het klinkt een beetje als een jongensdroom: dat je afstudeerproject uitmondt in een open source-oplossing waar door veel mensen aan wordt gewerkt en die een miljoen keer wordt gedownload. Het overkwam Simon de Lang. Stryker Mutator, een platform voor mutation testing, heeft net de barrière van een miljoen downloads doorbroken.

Kun je uitleggen wat Stryker is?

“Het is eigenlijk een mechanisme om de kwaliteit van de geautomatiseerde testen te meten. Geautomatiseerde testen zijn van cruciaal belang in continuous delivery. We willen zo snel mogelijk nieuwe of verbeterde functionaliteiten in productie zetten. We vertrouwen op de geautomatiseerde testen die controleren dat er geen fouten worden geïntroduceerd. Maar wie zegt dat die geautomatiseerde testen goed zijn? Meestal wordt hiervoor de me mate van testdekking (test coverage) gebruikt, maar dit is een hele slechte methode. De testdekking zegt immers wel iets over hoeveel procent van je applicatie wordt geraakt door testen, maar niks over of er wel goed wordt getest. Dat kan wel met mutation testing. Hiermee wordt eigenlijk een stuk broncode ‘gemuteerd’, waarna geautomatiseerde test wordt uitgevoerd. Wordt de gemuteerde broncode niet ontdekt door de test, dan is er dus iets mis met de test.”

Kun je hier een voorbeeld van geven?

“Als je een bank-app ontwikkelt, dan wil je kunnen testen of de functionaliteit ‘overschrijven’ werkt: wordt het bedrag van de ene rekening afschreven, en bijgeschreven bij de andere? Kloppen de saldo’s nog? Met unit testing kun je die functionaliteit als het ware los testen. Dus hoef je niet voor elke kleine test het hele systeem live te zetten en door het hele proces heen te klikken. Mutation testing betekent in dit geval dat je bijvoorbeeld een fout gaat introduceren die ervoor zorgt dat het geld wel van de ene rekening wordt afgeschreven, maar niet wordt opgeteld bij het saldo van de andere rekening. Als dit niet wordt ontdekt door de automatische (unit) testen, dan betekent dat de automatische testen niet voldoende zijn. Zo zijn er heel veel verschillende manieren om bewust mutaties door te voeren. Met Stryker kun je dat proces automatiseren en op grote schaal uitvoeren.”

 

Als developer moet je vaak heel veel van die unit tests uitvoeren. En dat kost veel tijd en rekenkracht. Met Stryker kun je dat op grote schaal doen, in relatief korte tijd.

 

Waarom is dat nodig?

“Als developer moet je vaak heel veel van die unit tests uitvoeren. En dat kost veel tijd en rekenkracht. Met Stryker kun je dat op grote schaal doen, in relatief korte tijd.”

En hoe kwam je ooit op dat idee?

“Vier jaar geleden studeerde ik nog, en het frustreerde me nog wel eens dat er zo weinig aandacht is voor testen. Toen mochten we als studenten een keer naar J-Fall en daar zag ik een talk over mutation testing. Het idee vond ik supercool. Ik wist destijds al dat ik graag bij Info Support wilde afstuderen. Toen ik ging kijken welke afstudeeropdrachten daar beschikbaar waren, zag ik dat er eentje tussen zat over mutation testing in JavaScript. Het kwam allemaal zo mooi samen.”

Maar het bleef dus niet bij een afstudeeropdracht.

“Nee, dat kun je wel zeggen. Toen Stryker af was, hebben we besloten om de code open source op GitHub te zetten. Nu, vier jaar later, is hij daar dus al een miljoen keer gedownload. En dat is alleen nog maar Stryker voor JavaScript. Inmiddels hebben we het platform ook ontwikkeld voor C# en Scala.”

 

Hoe ben je eigenlijk bij de naam gekomen?

“Eerlijk is eerlijk; die heb ik niet zelf verzonnen, maar een Belgische collega. William Stryker is een figuur uit de X-Men, een commandant die een hekel heeft aan mutanten. Hij wil ze het liefst allemaal uitroeien, maar is in dubio, want zijn zoon is zelf ook mutant.”

Waarom is eigenlijk gekozen voor open source?

“We vinden het belangrijk dat we iets kunnen bijdragen aan de wereldwijde developers community. Dat doen we op veel verschillende manieren, Stryker is daar maar één voorbeeld van. Ontwikkelaars krijgen bij ons ook tijd om aan open source-initiatieven te werken. Een keer per maand zit ik samen met andere developers aan Stryker te werken.”

 

We vinden het belangrijk dat we iets kunnen bijdragen aan de wereldwijde developers community.

 

Als Stryker een miljoen keer is gedownload, dan zal het vast ook een positieve uitwerking hebben op Info Support?

“Zeker. Wat je ziet, is dat steeds meer experts aan de slag gaan met Stryker, je ziet het ook terugkomen in talks van experts buiten Info Support. En dat draagt natuurlijk wel bij aan het imago. Maar daar is het eigenlijk niet eens om begonnen, hoor. We zien dat er ook in het buitenland veel interesse is voor het platform; een man in Australië heeft al twee of drie keer een presentatie gegeven over Stryker. Dat vind ik misschien nog wel het allermooiste; dat je via het platform in contact komt met zo veel verschillende mensen van over de hele wereld.”

Hoe kunnen developers hieraan bijdragen?

“Op verschillende manieren. Het makkelijkste is om even contact met ons op te zoeken. Voor collega’s is er op Slack een channel voor open source (#opensource), maar ook voor Stryker (#stryker). Ook zijn er wereldwijde channels voor Stryker op zowel GitHub als Slack (zie Github).  Daarnaast hebben we momenteel een interessante afstudeeropdracht, waarin we de afstudeerder uitdagen om te onderzoeken wat de beste manier is om zowel C# als F# te ondersteunen. Kortom: iedereen die daar energie van krijgt, is welkom om bij ons aan te sluiten. Er is werk genoeg.

Kost het veel tijd?

“Hoe vaker Stryker wordt gedownload, des te meer tijd erin gaat zitten. Ter vergelijking: in oktober zaten we op de 500.000 downloads, sinds die tijd zijn er dus nog eens 500.000 bij gekomen. Dus alle hulp is welkom.”