We covered the basics of mutation testing. Now it’s time to have a look at why you may have never seen it in any web application you’ve worked on and what tools are available to use.
Software quality has evolved to an important factor when developing software systems. Especially for commercial systems, quality assurance of the software is necessary to provide a reliable and pleasing product. Testing is a crucial step in the software development life cycle and should be of every software engineer’s concern. Testing frameworks and tools such as JUnit or PHPUnit have made their way to production systems and are often deeply integrated into release processes.
Consequently, the quality of the tests themselves is crucial for their reliability to ensure the software’s quality and correctness. One of the approaches to evaluate tests is Mutation Testing. However, this technique does not seem to be very popular and has its downsides. Is it mature and useful enough to support strategic decisions regarding development of a software and its tests?
First, let’s get down with the basics.
In summer of 2016, just a few months before finishing my bachelor’s thesis, I wrote a short report on an interesting paper concerning Control-Flow Integrity for common C++ compilers as part of a seminar. Since the topic is still of importance, I’m sharing it here.