コンテンツにスキップ

mutrim

結果をテストスイートの最小化にも用いる、Go 向けの Bazel ネイティブなミューテーションテスト。

mutrim (mutation + trim) は test × requirement のビット行列を構築する。requirement は、テストが 到達するミュータントサイトと、テストが kill するミュータントの和集合である。その行列に対して 重み付き貪欲集合被覆を実行し、冗長なテストと、どのテストも kill できない関数を報告する。 プレアルファ版である。

型検査済みのミュータント

すべての式ミュータントはビルドされる前に元のスコープで go/types により検査されるので、 コンパイルできないミュータントはまれである。

パッケージごとに 1 回のビルド

ミュータントスキーマタは全ミュータントを 1 つのソースに埋め込み、実行時に GOMUTANT_ID で 選択する。mutation_test ターゲットは通常の Bazel テストと同様にシャーディングできる。

テストごとの kill 行列

各テストは一度だけトレースされ、各ミュータントはそれに到達するテストに対してだけ実行され、 report.json が誰が何を kill したかを記録する。

テストスイートの最小化

mutrim minimize は冗長なテスト、必須のテスト、保護されたテストと弱点を報告し、 何も削除しない。