テストケースが思わず叙述トリックになってしまうかも!?
背景
最近自分のチームで探索的テストの本(探索的テストの考え方 ソフトウェア開発のテスト設計とテクニック)を輪読会で扱っています。
そんな中でどうして探索的テストの方がバグを見つけたい際に有効なのか?とよく言われることについてなんとなく言語化できたので、残しておきます。
冷蔵庫から牛乳取って!
「冷蔵庫から牛乳取って」って言われたのに、目の前にあったのに見逃した。
そんな経験、ありませんか?
私たちは何かを「見る」とき、目に映るすべてを正しく認識しているわけではありません。実際には、目的や期待に沿ったものだけを見ていることが多いのです。
これが、ソフトウェアテストにおいて「見逃し」が発生する数ある理由のうちの一つでもあります。そしてこの人間の特性が、探索的テストの有効性を裏付ける根拠のひとつだと理解しました。
探索的テストがバグを見つけやすい理由
先入観が視野を狭める
たとえばあなたが誰かにこう頼まれたとします。
「冷蔵庫から牛乳取ってきて」
多くの人は頭の中で「白い紙パック」を思い浮かべて冷蔵庫を開けます。
でも、もし牛乳が透明なガラスボトルに詰め替えられていたら?
見えているのに、見えない。
それは、先入観に基づく注意のフィルタリングが働いているからです。
「牛乳=紙パック」という思い込みが、それ以外の形を「視界から除外してしまう」のです。
手順書の呪い
この現象は、テストでも起こります。
例えば、次のようなテスト指示があったとします。
「文字の色、背景色、大きさを確認してください」
テスト実行者はその3点に意識を集中し、それ以外の要素──たとえばフォントの違和感──には気づかないかもしれません。
なぜなら「書かれていないこと=確認不要」と無意識に解釈してしまうからです。
手順書やチェックリストは、注意を向けるポイントを限定してしまいます。
これにより、他の異常や違和感に対する感度が下がるのです。
(ちなみに、僕は正直この類の見逃しを結構してしまうタイプで、それだけにハッとしました)
探索的テストの強み
探索的テストはこの逆を行きます。
テスト観点を事前に限定せず、「何かおかしなことはないか?」という姿勢でソフトウェアと向き合うことで、観点外の異常にも気づきやすくなるのです。
これはまさに、「冷蔵庫を開けて中を“全体的に”見る」行為と似ています。
牛乳が入っている容器は?
他に飲み物が入っていないか?
賞味期限は切れていないか?
こうした複数の視点を同時に持つことで、見逃しが減っていきます。
テストは“指示通りやる”だけでは思わぬ叙述トリックに引っ掛かるかもしれない
仕様書通りに動くことを確認することも大切ですが、仕様外にある問題を見つけるには、人間の感覚や直感も活かす必要があります。感覚や直感を養うには、どうしてバグは生み出されるのか?というテーマに対するその人の答えや経験を持っていることがとても大事だと思います。
そしてその感覚や直感を活かすには、テスト技法を使って自分の先入観に気づく力だけではなく、そこから自由になる柔軟性も時には必要なんだと思いました。
探索的テストとは、「先入観から自由になるプロセス」なんだと理解しました。
そういう意味では、JSTQB ALTAに「技法の組み合わせ」という言葉が出てくるのですが、テスト技法を使ったスクリプトテストと先入観から自由になるための探索的テストを組み合わせるのは有効だなと思ったりもしました。
まとめ
人は「見ているつもりでも見えていない」ことがある。
手順書は注意を向ける範囲を無意識に狭めてしまう。
探索的テストは先入観を超えて、より広い視点で確認できる。
だからこそ、探索的テストは予期しないバグを見つけやすいのです。
「冷蔵庫から牛乳を取る」という、ごく日常的な行為の中にも、テストに通じる本質的なものを見出す事ができてちょっと面白かったです。
だから、テストに限らず、私たちは時々こうした例を思い出しながら、“見逃しているものがないか” 自分自身に問い直す必要があるのかもしれませんね。
Discussion