24章ミューテーションテスト

静的解析とテストでセーフティネットを構築する際に、できる限りテストしているとどうやって確認するのか。すべての条件を完璧にテストするのは不可能であり、賢くテストを書かなければならない。テストが多ければ多いほどセーフティネットも広がる。しかし、セーフティネットの作りが適切であるとは限らない。解れて綻びたセーフティネットはセーフティネットが全くない場合よりも質が悪い。安全であるかのように見せかけ、誤った自信を与えてしまう。

セーフティネットを強化して綻びのない網にするのが目標である。コードにバグがある場合、テストが確実に失敗することを確認する必要がある。この章ではミューテーションテストでそれを実現する方法を学ぶ。mutmutというライブラリでミューテーションテストの方法を学び、テストとコードの間の関係を調べる。最後にカバレッジツールとその使い方、mutmutとカバレッジレポートの統合方法について学ぶ。ミューテーションテストを学ぶことでテストがどの程度効果的かを計測できるようになる。

24.1 ミューテーションテストとは何か

ミューテーションテストはバグを発生させることを目的にソースコードを書き換えるテスト手法である†1。書き換えられたコードはミュータントと呼ばれる。ミュータントに対してテストを行う。テストに失敗したら、それは良い兆候である。テストがミュータントの除去に成功したのだ。一方で、テストに成功したら、それはテストが失敗を検出するのに必要なロバストネスを備えていないことを意味する。ミューテーションテストは、テストがどれだけ優れているかをテストする意味でメタテストの一種である。テストコードもまたコードベースを構成するものであり、テストコードにも何らかのテストを必要とする。 ...

Get ロバストPython ―クリーンで保守しやすいコードを書く now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.