🐞 認知バイアスが結合テストの邪魔をする
結合テストをしている時、「開発者としてコードを書いてきた知識」が邪魔をしてしまい、「このケースはコードの仕組み上、絶対問題ない」とテストを省略してしまった経験はありませんか?
このようなケースこそ「想定外のバグが潜んでいる可能性が高いポイント」だと思っています。
今回は、開発からテストまで一貫して担当する人が陥りやすいこの罠を避け、「想定外のバグ」を効果的に発見するために持っておきたい考えを記します。
🧠 開発者が陥りやすい「メタ認知」の罠とは?
開発とテストを一人で行うことは珍しくありませんが、問題はその「メタ認知」にあります。
メタ認知とは「自分自身の思考を客観的に見ること」です。しかし、コードを深く理解しているがゆえに、「プログラムの構造的にここは問題がない」といった先入観が強くなりがちです。
例えば、以下のようなケースです。
「この処理は単体テストで確認済みだから、結合テストでは確認しなくていいや」
このような考え方では、「単体テストで見つかったバグ以上のバグ」は絶対に見つかりません。
⬆️⬇️ 抽象度を上下に動かしてテストする
結合テストで想定外のバグを見つけるためには、「抽象度を上下にずらして」テストすることが非常に効果的だと思いました。
具体的には以下のような方法です。
🔍 ① 一つ上の視点でテストを行う
コードの詳細を忘れ、ユーザーの視点から「実際に行いそうな操作」を意識してテストをしてみる。
- 「もしユーザーが想定外の順序で操作したらどうなるか?」
 - 「エラーが起きた時にユーザー視点ではどう見えるのか?」
 
こうした視点を持つことで、予想外のバグが見つけられたりします。
🧪 ② 一つ下の視点でテストを行う
逆に、普段見落としがちな内部的な視点でのテストも重要です。
- データベースの状態変化を詳しく見る
 - 内部APIのレスポンスを詳細に確認する
 
こういった「深掘りテスト」も、意外なバグの発見に繋がります。
♻️ ③ デグレードテストの観点も忘れずに!
さらに、「以前似たような機能でバグがあったケース」や「関連する機能で起きた問題」を念頭に置いたテストも重要です。
具体的には、以下のような視点で確認します。
- 「この機能、あのバグが出た機能と実装が似ているな…」という視点
 - 「過去に修正した問題が再発していないか?」という確認
 
これにより、以前修正したバグが再発していないかどうか、類似の問題が起きていないかをしっかり確認できます。
✅ まとめ
結合テストは「プログラムの動きを保証する」だけではありません。
- メタ認知の罠に陥らないよう注意する
 - 抽象度を上下に動かして視点を切り替える
 - デグレードテストで以前のバグの再発を防ぐ
 
これらを意識すれば、「単体テストでは絶対に見つからない想定外のバグ」を発見できます。
今後のテストでも上記は忘れずに進めていきたいと思います。