全ゲート合格なのに実運用で症状が出たら、直す前に検査を新設して現行実装が落ちることを確認する
開発手法
QA
テスト設計/eval
運用
原則
実運用で報告された症状が既存の自動検査のどれにも再現しないとき、それは「実装がたまたま運悪く壊れた」のではなく検査の穴である。穴を放置したまま修正すると、直った証拠がゲートから得られず、次の回帰も同じく素通りする。
手順
- 症状を再現する検査を先に作る。
- 現行の(壊れている)実装がその検査で落ちることを確認する。落ちなければ、検査が症状を捉えられていないので検査を作り直す。修正に進まない。
- その上で修正し、新しい検査で通ることを確認する。
2 を省くと、修正後に通ったことが「直った」なのか「検査が最初から甘い」なのか区別できない。
穴が空く位置
検査は単一条件ごとに整備されがちだが、穴は既存検査の条件の直積に空く。条件Aを見る検査と条件Bを見る検査があっても、A かつ B の組み合わせは両方をすり抜ける。実運用は条件を組み合わせて踏むため、そこで初めて表面化する。検査を足すときは、既存検査の直積に穴がないかを見る。
併せて注意する点
- 修正の依頼を、そのまま「対策の実施依頼」として受け取らない。原因が想定した層になければ何をしても直らないので、切り分けが済むまで対策に着手しない手順を作業手順そのものに書き込む。
- 離散的な事例を並べる検査より、連続的に条件を掃く検査の方がこの種の穴に強い。