並行テストは同時起動ではなく競合点への到達を同期し、旧実装を落とせることを採用条件にする
テスト
並行処理
テスト設計
運用
原則
並行処理のテストで複数の実行単位をほぼ同時に開始しても、スケジューラ次第で逐次実行される。最終状態だけを検証すると、排他制御を外した旧実装でも偶然通り、反復成功が安全性の証拠にならない。
競合対策の回帰テストでは、守りたい不変条件だけでなく、競合が成立したこと自体をテスト設計で保証する。両実行が判定済み・更新前など同じ競合点へ到達したことを barrier、hook、制御用トランザクション等で観測してから解放し、旧実装では破綻し修正後だけ通る条件を作る。単なる開始合図は、競合点までの処理時間が異なると片方が完了してしまうため不十分。
レビュー時は、(1) 競合点への到達を待つ仕組みがあるか、(2) timeout でハングを診断できるか、(3) 成功数・失敗種別・ロールバック後の状態を確認しているか、(4) 排他制御を除いた mutation でテストが落ちるか、を確認する。反復実行はフレーク検出には有効だが、競合成立の証明には代えない。