ホーム自己紹介ブログ
NO.450
DATE2026. 08. 25

ブローガスト25日目: ミューテーションテストのキルゼロテスト

テストコードをテストする、ミューテーションテスト。
プロダクションコードを突然変異でコードを書き換えたら(ミューテーション)、テストが失敗してくれるかどうか。
失敗するということは、不具合を検知できたということです。

ミューテーションする箇所を宇宙人として、

  • 宇宙人が生き残る(サバイブ) = テストが成功
  • 宇宙人が殺される(キル) = テストが失敗

という表現です。
サバイブが少ないほどよく、キルされるほど良いのです。

キルゼロ

宇宙人を誰も殺せなかった、キルゼロなテストケース。
例えば、以下のようなコードでしょうか?

function add(a: number, b: number) {
  return a + b;
}
 
it("1 + 2 は 3 になる", () => {
  // 実行しているだけで、検査していない
  add(1, 2);
});

このテストケースは、何もキルしません。
これは極端な例ですが、テストコードを見ているとたまにこういう どのような変異をしても絶対成功するテスト いうのがあります。
キルゼロなテストケースは、必ずPASSする計測数値上 水増しするので 確認が必要です。
ただ、以下のような場合は必ずしもキルゼロではありません。

function add(a: number, b: number) {
  return a + b;
}
 
it("足し算できる", () => {
  expect(add(1, 1)).toBe(2);
});

a+b を a*b に変異してもキルしません。
a-b に変異するとキルします。(1-1で0になるので、2ではない)。

終わりに

ミューテーションテストでキルゼロなテストコースは、プログラムミスを防げていない冗長なものです。
適宜見直す必要がありそうです。

テスト

-

読者になる

|

シェアする

|

silverbirders

silverbirder

Webソフトウェアエンジニア
個人ブログキュレーション こぶりー 運営

ブログを応援する

この記事がよかったら、お布施という形で応援してもらえるとうれしいです。

おふせぼたん

※ ログイン不要で投稿できます。

※ 同じブラウザから投稿を削除できます。

0

読み込み中...

前の記事へ

関連する記事

タグ「テスト」の記事

Testcontainers運用経験から分かった、良い点・困る点

お仕事先のWebアプリケーションに、Testcontainersを導入運用して数ヶ月経過しました。 良い点と困る点について、書き残しておきます。 前提 簡単な前提として、バックエンドDB・APIとフロントエンドの3層構成のよくあるWebアプ

2026年07月08日

テスト
写経テストコードを全部消した

以下で書いた通り、プロダクトコードを写経したテストコードを削除しました。 "こぶりー" ( https://kobliy.vercel.app/ ) という個人ブログを読むアプリのコードです。 https://silverbirder.gi

2026年06月08日

AI
フロントエンド
テスト
テストコード、どこに何書く

業務でWebフロントエンドのテストコードを書く際に、どこに何を書くかというのをざっくりと考えをまとめてみます。 前提 Webアプリケーションのプログラムファイルがツリー構造である前提とします。 tree よくあるフィーチャー単位のフォルダ構

2026年06月05日

テスト
← ブログ一覧へ