Mutation Testing
コード
内にミュータントと呼ばれる人工的な誤りを埋め込み、
テスト
の反応を評価する
ホワイトボックステスト
の一種、
テスト技法
ミュータントの種類は複数ある
Decision Mutation
プログラム
内の論理演算子、算術演算子をを変更する
Value Mutation
定数の値、メソッドのパラメーター、ループで使用される値を変更する
Statement Mutation
コードのステートメント全体に変更が加わる
メリット
テスト
の
信頼性
、
品質
を定量的に評価できる
デメリット
実行時間が長い
pull requestのたびに
CI
で実行するのが難しいレベル
Google
は差分にのみ実行している
https://research.google/pubs/state-of-mutation-testing-at-google/
修正対象の洗い出しが煩雑
検出不要なミュータントが入るなど
参考
Mutation Testingを活用して テスト品質を考える
テストコードの品質を客観的な数値で担保しよう〜Mutation Testのすすめ〜
ミューテーションテストの紹介 - Dave Aronson氏のJSConf Hawaiiでの講演より
Ruby実装
Ruby
https://github.com/mbj/mutant