タグ: pytest
"pytest" が付いた記事と Wiki ページ
形式手法を Claude Code で回す — Z3 と TLA+ で仕様の穴を見つけ、反例をテストに落とす
Claude Code に料金計算の仕様を Z3 で、キャッシュ設計を TLA+ で形式化させ、仕様の矛盾と並行実行の競合を見つけた。形式手法とテストの違い、道具の選び方、反例を pytest に落とす手順、検査の空振りの確かめ方を実行結果つきで解説する。
ミューテーションテスト(mutation harness)
コードをわざと 1 箇所壊してテストが落ちるかを確かめ、テストの検出力を測る技法。専用ツールなしの 30 行のスクリプトでも価値が出る
テストの導出元(ホワイトボックスとブラックボックス)
ホワイトボックス/ブラックボックスの違いを「内部を見るか」ではなく「テストケースと期待値をどこから導くか」で捉える。期待値を実装から取ったテストは、カバレッジ 100% のままバグを守る
ホワイトボックスとブラックボックスの違いを実測した — 分岐カバレッジ 100% でミューテーションスコアは 0% と 100%
ホワイトボックステストとブラックボックステストの違いを実測した。同じ関数・同じ分岐カバレッジ 100% の 4 スイートのうち、境界値分析を仕様から導出した側だけが off-by-one を検出。ミューテーションスコアは 0% と 100% に割れた。AI エージェントに実装を見せてテストを書かせると何が起きるかも測った。
テストを信じる前に、テストを壊す — mutation harness で「緑」に意味を持たせる
テストが全部緑でも、コードについて何も分かっていない。わざとコードを壊してテストが落ちるかを見るミューテーション(mutation)テストを、専用ツールなしの 30 行の Python スクリプトで回した実例。到達不能な死んだガードの見つけ方、GREEN の 3 分類、踏んだ 6 つの罠、そして AI コーディングエージェントに検査を任せるときの指示の書き方までをまとめる。
AI エージェントのレートリミット対策 — 指数バックオフとサーキットブレーカーで「翌朝全部止まっていた」を防ぐ
claude --print CLI を毎朝 40 回叩く自律トレーディングシステムに、429 / 529 / usage limit の検知、retry-after を尊重した指数バックオフ、サーキットブレーカーを入れた実装記録。300 秒を超える待ちは待たずに degrade する判断、半開スロットのリークで永久ロックしたバグ、配線テスト・発動率の計器・ミューテーションによる検証まで。
自動テスト修正パイプライン(監査ツール + 自律修正スキル)
大規模 Django で pytest の失敗を冪等な Issue キューに変換し、AI エージェントのループで1件ずつ自律修正する3フェーズ・パイプラインの設計。なぜ自動マージしないのかの安全境界も解説する
テスト失敗を「人が直す」から「キューを自律消化する」へ — 監査ツール + 自律修正スキルの設計
大規模 Django プロジェクトで「pytest の全テスト → 失敗を Issue 化 → AI エージェントのループで 1 件ずつ自律修正」というテスト保守パイプラインを組んだ記録。監査ツール・冪等 Issue 同期・自律修正スキルの設計と、なぜ自動マージしないのかの安全境界を解説する。
「対策済みのはず」のバグはなぜ生まれるのか — 規約が形だけ守られて意図を外すとき
pytest のテストが常に緑なのにバグが通り抜けた。マイグレーション fixture の忠実度ギャップとテスト DB 分離不備、その共通根本原因と autouse fixture による「規約の機構化」を解説する。
pytest でカオスエンジニアリングを始めるガイド
pytest.mark.chaos カスタムマーカーを使って障害注入テストを実装し、CI/CD に組み込む手順