PHPUnit で単体テストはやっているが、テスト項目に自信がなかったので infection を使ってみました。infection はソースコードにわざとバグを紛れ込ませることで、テスト項目の不備を見つけ出す仕組みらしい。バグを生成することを mutation と呼ぶらしいけど、時節柄、mutaion で検索すると変異株の話題ばかりで関連記事を探すのに苦労した。
インストール
Composer でインストールする。
1 | composer require --dev infection/infection |
対話的に設定ファイルを作成する。
1 | vendor/bin/infection |
色々聞かれるので答えていくと、カレンto
ディレクトリーに設定ファイル infection.json.dist が作成される。
1 | { |
infection を実行する
実行する前に、環境変数 XDEBUG_MODE を設定する。これを行わないと、実行時にエラーとして表示される。
1 | export XDEBUG_MODE=coverage |
設定後に、infection を実行する。
1 | vendor/bin/infection |
実行時に作成される infection.log を見ると、生成された Mutaion の内容を確認できる。
1 | Escaped mutants: |
内容を精査して Muation しているわけではないので無意味なものもあるらしいが、考慮不足をなくすために使えるかどうか利用してみたい。