halleck45 / mutatesting
mutation testing tool for PHP
Installs: 157
Dependents: 0
Suggesters: 0
Security: 0
Stars: 65
Watchers: 7
Forks: 10
Open Issues: 5
Requires
- php: >=5.3
- halleck45/php-metrics: master
- sebastian/diff: 1.0.*@dev
- symfony/config: ~2.0
- symfony/console: ~2.0
- symfony/event-dispatcher: ~2.0
- symfony/process: ~2.0
- twig/twig: 1.15
Requires (Dev)
- phpunit/phpunit: 3.7.*@dev
This package is auto-updated.
Last update: 2024-12-18 00:42:52 UTC
README
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.
## Requirements
You only need PHP 5.3 . No specific PHP extension is required...
Installation
### As phar archive
Simply download the phar archive and run the following command :
php mutatesting.phar {tool} {binary} {test directory}
With Composer
Edit your composer.json
:
"require": { "halleck45/mutatesting" : "@dev" }
And run Composer:
php composer.phar update halleck45/mutaTesting
Usage
./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...
Advanced usage
Strategy
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.
Formatters
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
Testing options
If your tests need options, you can pass them with --options
./bin/mutatesting phpunit phpunit.phar myTestFolder --options="-c phpunit.xml"
#### Parallelization
You can change the number of parallelized tests with the processes
options :
./bin/mutatesting {tool} {binary} {test directory} --processes=10
#### Performance
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
Copyright (c) 2014 Jean-François Lépine. See LICENSE for details.