タグ: テスト
"テスト" が付いた記事と Wiki ページ
ミューテーションテスト(mutation harness)
コードをわざと 1 箇所壊してテストが落ちるかを確かめ、テストの検出力を測る技法。専用ツールなしの 30 行のスクリプトでも価値が出る
沈黙する失敗(成功に見える失敗)
終了コード 0・出力あり・手元では正常に見えるのに中身が壊れている失敗。エラーを出さないため、コマンドの成否やファイルの有無で検証すると全部すり抜ける
テストの導出元(ホワイトボックスとブラックボックス)
ホワイトボックス/ブラックボックスの違いを「内部を見るか」ではなく「テストケースと期待値をどこから導くか」で捉える。期待値を実装から取ったテストは、カバレッジ 100% のままバグを守る
ホワイトボックスとブラックボックスの違いを実測した — 分岐カバレッジ 100% でミューテーションスコアは 0% と 100%
ホワイトボックステストとブラックボックステストの違いを実測した。同じ関数・同じ分岐カバレッジ 100% の 4 スイートのうち、境界値分析を仕様から導出した側だけが off-by-one を検出。ミューテーションスコアは 0% と 100% に割れた。AI エージェントに実装を見せてテストを書かせると何が起きるかも測った。
テストを信じる前に、テストを壊す — mutation harness で「緑」に意味を持たせる
テストが全部緑でも、コードについて何も分かっていない。わざとコードを壊してテストが落ちるかを見るミューテーション(mutation)テストを、専用ツールなしの 30 行の Python スクリプトで回した実例。到達不能な死んだガードの見つけ方、GREEN の 3 分類、踏んだ 6 つの罠、そして AI コーディングエージェントに検査を任せるときの指示の書き方までをまとめる。
AI エージェントにリファクタさせる時の「完了の定義」
AI エージェントは与えた検証境界にぴったり最適化して止まる。局所的に正しい修正が遠くで静かに壊れる事故を、blast radius(影響範囲)を織り込んだ完了の定義で防ぐ
Django の transaction.on_commit と TestCase の相性
Django の TestCase(ロールバック方式)では transaction.on_commit が発火しない。正しい本番修正が離れた結合テストを赤にする事例と、captureOnCommitCallbacks による解決を解説する
AI エージェントにリファクタさせるときの「完了の定義」の引き方 — 局所的に正しい修正が遠くで壊れる前に
AI エージェントは与えた検証境界にぴったり最適化して止まる。局所的に正しい修正が遠い場所で静かに壊れる事故を、blast radius(影響範囲)を織り込んだ指示(完了の定義)の引き方で防ぐ実践 Tips。
Django の transaction.on_commit と TestCase の相性 — 正しい本番修正が「昨日まで緑だったテスト」を赤にした話
Django の TestCase(ロールバック方式)では transaction.on_commit が発火しない。正しい本番修正が結合テストを離れた場所で壊した事例と、captureOnCommitCallbacks による解決を解説する。
Brownfield リファクタリング
改修を重ねた既存コード(brownfield)を、振る舞いを固定してから安全に作り替えるための原則・ワークフロー・パターン。greenfield との対比で捉える。