Stryker mutation switching for JavaScript/TypeScript

There are many ways of introducing mutants into the source code. Mutating sources statement by statement is a logical choice, but not good for performance. Mutation switching can provide a solution to speed up the process. Research how mutation switching can be applied to JavaScript and/or TypeScript sources to improve performance and implement this in a prototype.

Benodigde interesse(s)

  • Software Architecture
  • Software Development Methodologies

Wat krijg je

  • A challenging assignment
  • € 1000 compensation or € 500 + lease car
  • Professional guidance
  • Training based on your graduation project
  • Consult other graduates and colleagues
  • Two vacation days per month
  • Become a member of Info Support Research

You're going to do

  • 65% Research

When writing software unit testing is used to verify the code. This way the initial implementation can be tested and in the future new bugs can be detected early. However, how do you test the effectiveness of your tests?

Code coverage measures which lines of code are executed during a test. This number is often used to indicate (in)sufficient testing. However, the execution of the code does not say anything about whether it is doing the right thing. You could write a test that does not assert anything relevant, but will give you good coverage. Therefore, the assertions in the tests need to be tested as well.

Mutation testing can solve this problem. A mutation testing framework will introduce mutants by make tiny changes to the original source code of a program. If a test fails after introducing the mutant, it is killed. If a test still passes, the mutant survived, indicating a test that is not totally effective as a bug could be introduced without being detected. The percentage of killed mutants (the mutation score) is therefore a good indicator for the effectiveness of tests.

Stryker is an open-source mutation testing framework developed by Info Support. Originally Stryker was developed for JavaScript and similar languages, but other variants for .NET (Stryker.NET) and Scala (Styker4s) have been developed as well.

There are many ways of introducing mutants into the source code. Mutating sources statement by statement is a logical choice, but not good for performance as the codebase needs to be recompiled or reloaded after every mutation. Mutation switching can provide a solution to speed up the process. With mutation switching all mutants are compiled into the codebase at once and switched on one-by-one at runtime. In the case of Stryker.NET and Styker4s this has resulted in a significant performance boost.

We would like to improve the performance of our JavaScript and TypeScript mutators in a similar fashion. You will research how mutation switching can be applied to JavaScript and/or TypeScript sources to improve performance and implement this in a prototype. Your results will contribute to the Stryker open source project.

About Info Support Research Center

We anticipate on upcoming and future challenges and ensures our engineers develop cutting-edge solutions based on the latest scientific insights. Our research community proactively tackles emerging technologies. We do this in cooperation with renowned scientists, making sure that research teams are positioned and embedded throughout our organisation and our community, so that their insights are directly applied to our business. We truly believe in sharing knowledge, so we want to do this without any restrictions.

Apply for this assignment

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

Application process

1

Kennismakingsgesprek

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

2

Assessments

Toetsing vakinhoudelijke kennis en persoonlijkheid (capaciteit, competenties en drijfveren).

3

Selectiegesprek

Verdiepen van vakinhoudelijke kennis en persoonlijkheid.

4

Contractondertekening

Contractaanbieding en uitnodiging tekenmoment.

Other assignments

afstudeeropdracht

Stryker mutation switching for JavaScript/TypeScript

There are many ways of introducing mutants into the source code. Mutating sources statement by statement is a logical choice, but not good for performance. Mutation switching can provide a solution to…

afstudeeropdracht

Text style transfer using deep neural networks

We’ve all seen how neural networks can be used to transfer the artistic style of one image to another image.

afstudeeropdracht

Differential privacy for AI & ML models

Although the implementation of privacy regulations and laws is not a recent development, new laws are being implemented to the challenges and characteristics of the modern information era.

afstudeeropdracht

Automatic assessment of dataset quality for ML

With the rise of automated machine learning tools it becomes much easier for developers to build machine learning models.