Mutation testing tool for PHP.
According to Wikipedia:
Mutation testing (or Mutation analysis or Program mutation) evaluates the quality of software tests. Mutation testing involves modifying a program's source code or byte code in small ways.
MutaTesting supports PHPUnit and atoum. You can create an adapter for any PHP testing framework.
You only need PHP 5.3 . No specific PHP extension is required...
Simply download the phar archive and run the following command :
php mutatesting.phar {tool} {binary} {test directory}
Edit your composer.json
:
"require": {
"halleck45/mutatesting" : "@dev"
}
And run Composer:
php composer.phar update halleck45/mutaTesting
./bin/mutatesting {tool} {binary} {test directory}
Example for PHPUnit:
./bin/mutatesting phpunit phpunit.phar myTestFolder
Example for atoum:
./bin/mutatesting atoum mageekguy.atoum.phar myTestFolder
Note that you don't need to use the -d
or -f
option with atoum...
In order to avoid to have too much mutants, MutaTesting uses PhpMetrics in order to estimate number of bugs in each tested file, and focuses only on files that contain more anomalies.
You can use the --bugs
option to define the limit to use.
For example, --bugs=".6"
means that mutants are preserved only if there is at least 0.6 estimated bugs in the tested file.
To have a html report file, tou need to use the --report-html
option.
./bin/mutatesting {tool} {binary} {test directory} --report-html=/tmp/file.html
If your tests need options, you can pass them with --options
./bin/mutatesting phpunit phpunit.phar myTestFolder --options="-c phpunit.xml"
You can change the number of parallelized tests with the processes
options :
./bin/mutatesting {tool} {binary} {test directory} --processes=10
MutaTesting is very slow : your unit tests will be runned as many times as there are mutant.
In order to increase performance, a cache file is created in /tmp/muta-cache.php
.
Copyright (c) 2014 Jean-François Lépine. See LICENSE for details.