変化内容がわからない生存ミュータントを倒す方法
ミューテーションテストで生存者が見つかったが、そのミューテーションが何をしているのかまったくわからない。ミュータントを理解せずに正しいテストを書くためのステップバイステップの方法を紹介する。
あなたのミューテーションテストレポートは生存者でいっぱいで、そのうち少なくとも1つはあなたにとって意味不明だ。…
7 posts
ミューテーションテストで生存者が見つかったが、そのミューテーションが何をしているのかまったくわからない。ミュータントを理解せずに正しいテストを書くためのステップバイステップの方法を紹介する。
あなたのミューテーションテストレポートは生存者でいっぱいで、そのうち少なくとも1つはあなたにとって意味不明だ。…
コードベース全体に単一のmutation scoreを課すのが間違いである理由と、実際のリスクに応じたモジュールごとのthresholdの設定方法。
コードベース全体に単一のmutation scoreを課すのは、チームにテストを嫌わせる最も効率的な方法だ。…
コードカバレッジは安全だと言う。ミューテーションテストは、テストのほとんどが飾りだと言う。生存ミュータントがその差をどう晒し、どう埋めるか。
テストは通る。カバレッジレポートは87%だ。しかしミューテーションスコアは40%で、半数のミュータントがまだ生きている。…
cargo-mutantsは、コードを検証したふりをしているテストを見つけ出す。Rustでのmutation testingの仕組み、何が捉えられるのか、そしてコンパイル時間のコストに見合う価値があるかを解説する。
100%のline coverageがある。すべての分岐が実行されている。すべての関数が呼ばれている。それなのに、誰かが価格ロジックのをに変えてテストを実行しても、すべて通ってしまう。…
ほとんどのチームはすべてのコミットでフルのミューテーションテストスイートを実行していない。ここでは、ビルドパイプラインを破壊することなく、エンジニアリングチームが実際にミューテーションテストをCIに統合する方法を紹介する。
ミューテーションテストスイートの実行に4時間かかるなら、おめでとう。誰もが疑っていたことを証明したことになる:テストスイートに穴が空いている。…
AI-generated code を production で持たせたいなら、code review だけでは足りません。type constraints から mutation testing、runtime containment までの layered safety stack が必要です。
AI-generated code の危険なところは、常に間違っていることではありません。 危険なのは、merge できてしまう程度には正しく見えることです。 そこが本当のリスクです。明らかに壊れている code は止まります。もっともらしく見え、いくつかの happy-path tests を通り、しかも重要な…
Design by contract、property-based testing、mutation testing、model checking は悪い考え方だったわけではありません。継続運用に必要な専門知が重すぎただけです。AI はその前提を変えます。
ソフトウェアエンジニアリングには、読んだ瞬間に「これは正しい」と分かる考え方がたくさんあります。 function が受け取ってよい値と返してよい値を contracts で定義するのは当然です。tests が数個の例だけでなく properties を検証するのも当然です。coverage…