114.274 vacatures

18 sep 2024

Afstudeeropdracht in DevOps Methods & Tools: Better mutation testing for Java

Branche Zie onder
Dienstverband Zie onder
Uren Zie onder
Locatie Veenendaal
Salarisindicaties 0-5.000
Opleidingsniveau Zie onder
Organisatie Info Support
Contactpersoon Info Support Nederland
0318552020

Informatie

Onderzoek de implementatie van Mutant Schemata in Java, een alternatief voor de huidige standaard, PITest. Ondanks de kracht van bytecode mutatie, kent het nadelen zoals onnauwkeurigheid, onbereikbare mutanten en performance overhead. Jouw taak is het analyseren van deze techniek, de voor- en nadelen ten opzichte van PITest te evalueren en een prototype te ontwikkelen. Dit werk kan bijdragen aan verbeteringen in mutation testing en de basis vormen voor toekomstige open-source ontwikkelingen.

Omschrijving

Onderzoek de implementatie van Mutant Schemata in Java, een alternatief voor de huidige standaard, PITest. Ondanks de kracht van bytecode mutatie, kent het nadelen zoals onnauwkeurigheid, onbereikbare mutanten en performance overhead. Jouw taak is het analyseren van deze techniek, de voor- en nadelen ten opzichte van PITest te evalueren en een prototype te ontwikkelen. Dit werk kan bijdragen aan verbeteringen in mutation testing en de basis vormen voor toekomstige open-source ontwikkelingen.

Functie eisen

Vakmanschap is één van de kernwaarden van Info Support. We vinden goede codekwaliteit belangrijk. Om te zorgen dat onze code grondig getest is, schrijven en voeren we onder andere unit tests uit. Maar hoe bepaal je de effectiviteit van je unit tests? Hier komt mutation testing om de hoek kijken.

 

Bij mutation testing voert een framework kleine wijzigingen door in je productiecode. Zo kan bijvoorbeeld een > teken veranderen in een >= teken, wat resulteert in een mutant. Vervolgens draait het framework je tests. Faalt er ten minste één test, dan is de mutant ‘killed'. Slagen alle tests, dan heeft de mutant ‘survived'. Het percentage ‘killed' mutants wordt de mutation score genoemd. Hoe hoger deze score, hoe effectiever je unit tests zijn.

 

Pitest is het mutation testing framework voor Java, dat werkt op basis van bytecode mutatie. De code wordt eerst naar bytecode gecompileerd, waarna mutanten één voor één worden ingevoerd in de bytecode en getest.

Stryker is een mutation test framework voor .NET, JavaScript, Scala en in de toekomst ook Kotlin. Het wordt ontwikkeld door Info Support als open source tool (met inmiddels meer dan 10 milioen downloads). Stryker werkt altijd met mutant schemata. Bij mutant schemata worden de mutanten allemaal tegelijk in de broncode gezet, maar er kan er maar één tegelijk actief zijn.

Dit is een voorbeeld van mutant schemata bij JavaScript:

Wanneer je mutation testing wilt toepassen in Java-projecten, is PITest momenteel de go-to keuze. Dit betekent dat er gebruik wordt gemaakt van bytecode mutatie, wat enkele nadelen met zich meebrengt:

  • Accuratie: Het is niet mogelijk om de exacte locatie van een mutant in de broncode aan te duiden
  • False positives: Er worden mutanten gegenereerd die in Java niet gecreëerd kunnen worden
  • Performance: Voor het testen van een mutant moet deze eerst aan de bytecode worden toegevoegd, wat aanzienlijke overhead veroorzaakt
  •  

    Solliciteer direct