ミューテーションテスト

単体テスト品質の向上により
アジャイル時代に対応する

アジャイル開発のプラクティスやスピード感において、従来のようなプロセス毎に品質保証を行う手法が適応しにくくなったことで、単体テストの重要性が高まってきています。

単体テストにおいてテストケースが網羅すべきコードを網羅しているか、期待値が正しく設定されているか等のように単体テストが適切であるかを確認するのが「ミューテーションテスト」です。

このテストにより、単体テストが適切であるかどうかを検証し、アジャイル型開発におけるプロダクトの品質向上をサポートします。

ミューテーションテストとは?

ミューテーションテストとは、ソースコードに対し、ツールで作為的にエラーコードを入れ、テストコードの品質を見える化する手法です。

ミューテーションテストの流れ

実施ステップ

ミューテーションテストは下記の流れで実施します。

※1 環境の構築はIntelliJ IDEAのインストールとミューテーションプラグイン追加。実行環境作成はソースコードとテストコードのビルドを行います。

※2 Pitestの場合現在29個のオプションメニューがあります。

レポートサンプル

ミューテーションテストレポートの一部イメージです。

ECサイトのログイン部分のソースコードに対しミューテーションテストを実施した例

導入事例

対象:
情報サービスアプリからのデータ取得に使われるバックエンドシステム(API)

実施結果:
境界値に重点を置いてミューテーションテストを実施。
ミューテーションカバレッジ(埋め込まれたミューテーションをkilledした率)が80%を超えているため、カバレッジの達成基準を満たしており、システムとしては問題なし。

達成基準について

ミューテーションテストを実施した際に、例外処理等でどうしても分岐を通らないルートが20%くらい存在する。
そこを解消するにはかなりの工数がかかるため、現実的な80%を達成基準とするケースが多い。

※ミューテーションテストを行っているGoogleでも、同様の指標としている。

参考) 高橋寿一著 ソフトウェア品質を高める開発者テスト(改訂版)