Detect compile errors in Stryker4s

Het mutation testing framework Stryker4s leren omgaan met compileerfouten. Dat is waar deze opdracht om draait. Zodat Stryker for Scala ingezet kan worden op grote projecten zonder aanpassingen te hoeven doen.

Benodigde interesse(s)

  • Scala
  • Build tools
  • Open Source
  • Automated testing

Wat krijg je

  • Een uitdagende afstudeeropdracht
  • € 1000 vergoeding, € 500 + leaseauto of € 600 + woonruimte
  • Professionele begeleiding
  • Trainingen gericht op jouw afstudeertraject
  • Sparren met andere afstudeerders en collega’s
  • Twee vakantiedagen per maand

Wat je gaat doen

  • 35% Afstudeeronderzoek
  • 40% Analyseren, ontwerpen, realiseren
  • 25% Documentatie

Een mutation testing framework maakt kleine wijzigingen in je productiecode. Een `>` teken verandert bijvoorbeeld in een `>=` teken. Er ontstaat dan een mutant. Hierna voert het framework je unit tests uit. Als ten minste 1 test faalt, dan is de mutant killed. Slagen al je tests, dan is de mutant survived. Het percentage van killed mutants wordt de mutation score genoemd. Hoe hoger de mutation score, met meer gefaalde tests, hoe effectiever je unit tests zijn.

Stryker Mutator, of simpelweg ‘Stryker’, is een open source mutation testing framework waar Info Support de maintainer van is. Veel collega’s dragen hieraan bij, in vrije tijd en in Info Support tijd. Stryker bestaat uit 3 implementaties:

  • Stryker4s: voor Scala
  • Stryker: voor JavaScript en TypeScript
  • .NET: voor C#

Alle drie Stryker frameworks maken gebruik van ‘mutation switching’. Met deze techniek worden alle mutaties in 1 keer in de broncode gezet en hoeft maar 1 keer worden gecompileerd. De mutaties worden dan door middel van variabelen geactiveerd. Doordat maar 1 keer hoeft worden gecompileerd brengt dit grote snelheidsvoordelen. Hoe dit precies werkt, kan je in lezen in ons blog.

Het grote nadeel van deze techniek is dat als 1 mutatie een compileerfout creëert de rest van de mutaties ook niet kunnen compileren. Zowel Stryker.NET als Stryker voor JavaScript/TypeScript gaan al om met compileerfouten. Stryker4s nog niet. Op grotere projecten is de kans dat er een compileerfout optreedt door een mutatie groter waardoor Stryker4s niet op het project kan draaien zonder aanpassingen.

De opdracht

Onderzoek de mogelijkheden om compileerfouten in Scala-code te ontdekken. Bekijk opties om zowel voor als na het compileren analyses uit te voeren. Omdat Stryker4s voor meerdere build-tools beschikbaar is (sbt, Maven) is het belangrijk dat de oplossing ook build-tool onafhankelijk werkt.

Implementeer vervolgens een proof of concept om compileerfouten te ontdekken en mutaties te filteren. Deze implementatie moet kunnen worden aangeboden aan de ‘master’-branch in Stryker4s dus de codekwaliteit is belangrijk.

Bewijs dat je implementatie werkt door hem toe te voegen aan (een fork van) Stryker4s.

Meld je aan voor deze opdracht

  • Geaccepteerde bestandstypen: docx, doc, txt, pdf.
  • Geaccepteerde bestandstypen: docx, doc, txt, pdf.

Sollicitatieprocedure

  1. 1
  2. Kennismakingsgesprek

    Bespreek (studie) loopbaan, interesses en ambities en introductie Info Support.

  1. 2
  2. Beoordelingen

    Assessment van professionele kennis en persoonlijkheid (capaciteit, competenties en motieven).

  1. 3
  2. Selectie interview

    Professionele kennis en persoonlijkheid verdiepen.

  1. 4
  2. De ondertekening van een contract

    Contractaanbieding en uitnodiging voor tekenmomenten.