Afstudeeropdracht: Mutation testrunner voor Stryker.NET

Maatwerksoftware bouwen waar miljoenen mensen dagelijks gebruik van maken. Dat is ons werk. Voor grote gerenommeerde klanten in Nederland en België. Betrouwbaar, schaalbaar en onderhoudbaar. Wij gaan voor software oplossingen van zeer hoge kwaliteit. Binnen de afgesproken tijd en het budget. Door samen continu te vernieuwen helpen we klanten en de wereld significant vooruit!FunctiebeschrijvingHoe kunnen we VsTest beter inzetten binnen Stryker.NET, hét mutationtest framework voor .NET? We besteden tot wel 90% van de tijd aan wachten op de initialisatie van VsTest en slechts 10% van de tijd aan het uitvoeren van de unit tests. Dat moet heel veel sneller kunnen! Lukt dat jou? Dan kan jouw oplossing in de volgende release zitten!Functie-eisenStryker.NET is het mutationtest framework voor .NET. Mutation testing wordt gebruikt om de effectiviteit van Unit Tests te meten. Bugs, of mutanten, worden automatisch gegenereerd in jouw source code. Vervolgens worden per mutatie alle unit tests uitgevoerd. Wanneer minimaal 1 test faalt, markeren we de mutatie als killed. Als de tests slagen, markeren we de mutatie als survived. Hoe meer killed mutaties, hoe effectiever jouw unit tests. Dit geeft een beter beeld dan code coverage omdat daadwerkelijk bewezen wordt dat de tests effectief zijn.

Al 4 jaar wordt er hard aan Stryker.NET gewerkt maar er blijft een groot nadeel, een mutation testrun met Stryker.NET kan soms uren duren… Dit moet sneller kunnen!

De huidige workflow in Stryker.NET is als volgt: 
Stryker plaatst mutaties in de sourcecode door ze in conditional statements te zetten.Stryker zoekt uit welke mutaties tegelijk gedraaid kunnen worden, oftewel welke mutaties geen conflicterende code paden hebben.Stryker start een VsTest host per mutatie batch en zet bepaalde mutaties aan.Stryker bekijkt de test resultaten om te bepalen of een mutatie killed of survived is.

Doordat elke batch een eigen VsTest host krijgt ontstaat veel overhead. VsTest is een uitgebreid proces wat lang duurt om op te starten. Helaas is het in de huidige implementatie van VsTest niet mogelijk om een testhost in leven te houden voor meerdere testruns. In de praktijk betekent dit dat tot wel 90% van de tijd gewacht moet worden op de initialisatie van VsTest en slechts 10% van de tijd besteed wordt aan het daadwerkelijk uitvoeren van de unit tests. Zonde!

Dit betekent dat Stryker.NET potentieel tot wel 10x sneller zou kunnen zijn! Als Stryker slechts 1x hoeft te wachten op de initialisatie van VsTest en daarna de unit tests uit kan blijven voeren zal dit een merkbaar verschil in tijd maken. In stryker voor Scala is deze oplossing al geimplementeerd en ook daar heeft dit een enorme performance boost veroorzaakt. Hier hebben wij een interesant blog artikel over geschreven: Stryker4s: from 40 minutes to 40 seconds | Stryker Mutator (stryker-mutator.io)ArbeidsvoorwaardenDe opdracht
Aan jou is het de taak om uit te zoeken hoe we VsTest beter kunnen inzetten. Hier komt een stuk onderzoek bij kijken.
Hoe werkt VsTest precies?Welke processen moeten in leven gehouden worden om zo min mogelijk overhead te creeren?Hoe kunnen deze processen in leven gehouden worden?Als dit niet mogelijk is in VsTest, hoe kan een custom testrunner gebruik maken van de VsTest interfaces?

Uiteraard ga je ook een PoC bouwen om te bewijzen dat jouw oplossing werkt. Dit kan door een eigen implementatie van het VsTest protocol in Stryker.NET te bouwen. Of door VsTest zo aan te passen dat deze geschikt wordt om meerdere testruns achter elkaar uit te voeren.

Mocht jouw oplossing goed werken dienen we een Pull Request in bij Stryker.NET en/of VsTest en zou het zomaar kunnen dat jouw code in de volgende release zit!

Wat biedt Info Support jou tijdens je afstudeerperiode?
Uiteraard bieden we je een uitstekend pakket aan afstudeervoorwaarden met verschillende keuzemogelijkheden. Denk hierbij aan:
Laptop, alle benodigde tools en ontwikkelomgevingen om je opdracht succesvol uit te kunnen voerenEen afstudeervergoeding waarbij je de keus hebt uit:
€ 1000,- bruto per maand€ 500,- bruto per maand + leaseauto met tankpas€ 600,- bruto per maand + woonruimte in Veenendaal



Tijdens je afstudeerstage word je opgenomen in een van onze business units. Zo krijg je direct een goed beeld van de ontwikkelingen binnen onze projecten.
Daarnaast biedt Info Support jou:
Een uitdagende afstudeeropdracht bij een solide, groeiend en financieel gezond bedrijfProfessionele en ervaren begeleiding, hybride werkenEen afstudeerprogramma met onder meer trainingen, kennisavonden, projectbezoek, activiteiten en team-, unit- en bedrijfsuitjesExperimenteren met nieuwe producten en releases die in de pre-releasefase zittenSparren met andere afstudeerders en collegiale en gepassioneerde IT-collega'sUitzicht op het IT Top Traineeship mét een vast dienstverband!

Over Info Support

Info Support is specialist in maatwerksoftware, data/AI solutions, beheer en trainingen en actief in de sectoren Finance, Industry, Agriculture, Food & Retail, Mobility & Public en Healthcare. Wij bieden solide en innovatieve oplossingen voor complexe en bedrijfkritische softwarevraagstukken. Onze hoofdkantoren zijn gevestigd in Veenendaal (NL) en Mechelen (BE). Op dit moment zijn er circa 500 medewerkers bij Info Support in dienst.

De werkwijze van Info Support kenmerkt zich door een aantal kernwaarden: soliditeit, integriteit, vakmanschap en passie. Deze kernwaarden zijn verweven in ons werk en de manier waarop we met elkaar omgaan. Ook dit jaar zijn we uitgeroepen tot Top Employer Nederland!

Om te zorgen dat alle medewerkers altijd op de hoogte kunnen zijn van de nieuwste ontwikkelingen beschikt Info Support over een inhouse kenniscentrum waar graag wordt voldaan aan de honger naar meer of andere kennis en vaardigheden.

Aanvullende informatie

Bedrijfsnaam Info Support
Functie titel Afstudeeropdracht: Mutation testrunner voor Stryker.NET
Adres Kruisboog 42
Postcode 3905TG
Plaats Veenendaal

Vacature Details

Veenendaal
32-40
HBO
Plaatsingsdatum: 24-07-2023
Sluitingsdatum: 27-07-2023
Gesloten
Helaas is deze vacature gesloten