探索的テストについて
探索的テストとは
探索的テストとは、テストの設計・実行・学習・評価をリアルタイムで同時に行うテスト手法です。
事前に詳細なテストケースを準備するのではなく、実際にソフトウェアを操作しながら、その場で確認すべき観点や仮説を立て、それらに基づいてテストを進めていくことが特徴です。
探索的テストは、システムを動かしながら、考え、調べ、学び、判断し、次の確認に活かしていく思考重視のテストアプローチ、といえます。
探索的テストは、以下のような開発状況で特に有効です。
- 仕様がまだ固まっていない段階の開発
アジャイル型やプロトタイプ型の開発のように、要件や仕様が開発中に頻繁に変化する環境では、あらかじめテストケースを整備することが難しいため、柔軟に対応できる探索的テストが適しています。 - 設計資料が不十分または存在しない場合
設計書やテスト仕様書が整備されていない古いシステムの改修や、外部委託によるブラックボックスなコンポーネントに対しても、動作を観察しながら仕様を把握してテストを進められる探索的テストは有効な手段となります。 - 新機能やUI/UXの初期評価が求められる場面
たとえばWebアプリやモバイルアプリの開発において、新たに追加された画面や機能について直感的な使い勝手やエラーハンドリングなどを重点的に確認する際には、探索的なアプローチが柔軟かつ迅速な問題発見につながります。
このように、探索的テストは「変化に強く、状況に応じて思考しながら進められる」ことから、柔軟性が求められる現代の開発プロジェクトにおいて、極めて実践的かつ有用な手法であると言えます。
探索的テストのメリットとデメリット
この部分では探索的テストのメリットとデメリットを紹介します。
探索的テストは柔軟でバグを見つけやすく、準備に時間がかからない点が強みです。
一方で、属人性や記録の曖昧さ、テストの抜け漏れといった課題があるため、工夫が必要です。
以下に紹介するメリットとデメリットを把握して効果的な検証を行えるようにしましょう。
メリット
- 柔軟な対応力
- 高いバグ検出力
- 準備が少なくてすむ
柔軟な対応力
探索的テストは、事前に詳細なテストケースを準備しなくても実施できるため、仕様変更や設計の不備があっても、すぐに方向転換して対応することができます。
特にアジャイル開発のように要件が頻繁に変化する現場では、スクリプト型テスト(あらかじめ決められたテストケースに従って実施するテスト手法)では対応が難しい部分も、探索的テストであれば即応的にカバーすることが可能です。
仕様が未確定な新機能の初期検証において非常に有効です。
高いバグ検出力
テスト実施者が自身の判断で操作内容を選択できるため、固定的な手順では見落としがちな異常系のバグや、操作の組み合わせによる問題を発見しやすくなります。
特に、ユーザーの視点に立った使い方や、仕様にない操作を試すことで、設計上の見落としやUIの不備などを明らかにできる点が大きな利点です。
操作性の不備や想定外の使われ方によるバグなど、潜在的な問題を発見する手法として活用できます。
準備が少なくてすむ
スクリプト型テストでは、テストケースの設計、レビュー、承認といった工程に多くの時間がかかります。
一方、探索的テストは「動作確認をしながら学び、考える」プロセスを前提としており、設計と実行を一体化できるため、短期間でテストを立ち上げることが可能です。
つまり、テスト準備にかかる工数を削減できます。
これは、コスト面での大きな利点とといえます。
限られた時間・リソースでもテスト活動が展開できるからです。
デメリット
- 人によって質に差が出る
- 記録が残りにくい
- テスト資産が構築されにくい
- テストの全量が把握できない
- 不具合の予防ができない
人によって質に差が出る
探索的テストでは、テストの進め方や的確さがテスト実行者のスキルや知識に強く依存します。
そのため、同じ対象をテストしても、担当者ごとに得られる成果や見つかる不具合が異なる傾向があります。
経験豊富なテスト実行者であれば効果的な検証が可能ですが、新人や不慣れなメンバーが実施すると、確認の偏りや見落としが発生しやすく、品質にバラつきが生じるリスクがでてしまいます。
記録が残りにくい
探索的テストは即興的な操作が多いため、テスト後に「何をどのように確認したか」を説明するのが難しくなります。
結果として、同じテストを再現することが困難となり、バグの再現性や根拠の明確化が不十分になりがちです。
また、チーム内でのナレッジ共有や品質レビューが行いにくくなり、テスト結果が属人化してしまうことがあります。
テスト資産が構築されにくい
スクリプト型テストのように明文化されたテストケースが残らないため、探索的テストは資産として蓄積されにくいという特徴があります。
これは、スクリプト型テストであれば、作成されるテスト計画書、テスト設計仕様書、テストケース仕様書などのドキュメントが作成されないということです。
結果として、回帰テストや類似機能への再活用が難しくなり、同様のテストを将来も繰り返し行いたい場合には、探索的テストの場合は、再度同様の探索を実施せざるを得ません。
その結果、効率面でのロスが生じるだけでなく、品質保証の一貫性を維持するのが困難になることがあります。
テストの全量が把握できない
探索的テストでは、事前に明確なテストケースが存在しないため、テスト全体の進捗や網羅性を把握しにくいという問題があります。
たとえば、機能Aについて「どこまで確認したか」「どの条件を試したか」といった情報が明示的に残らないままだと、プロジェクト全体としての品質評価や報告が曖昧になってしまいます。
これは、マネジメントや品質保証部門にとって大きな課題となってしまいます。
不具合の予防ができない
探索的テストは実際の動作を通じて欠陥を見つける「検出型」の手法であるため、事前に欠陥の混入を防ぐ「予防型」の品質保証にはなりにくいという側面があります。
設計段階での問題点の洗い出しや仕様の矛盾点の指摘といった活動が不十分になりやすく、結果として、後工程での修正コストが増大する可能性があります。
デメリットへの対策
これらのデメリットに対しては、探索的テストの特性を理解したうえで、計画性と記録性を補完する手段を取り入れることが重要です。
属人性の課題に対しては、「チャーター」と呼ばれる簡潔なテスト目的の定義を各セッション前に行うことで、テスト内容に一定の方向性と狙いを持たせることができます。
また、経験の浅いテスターに対しては、観点表や過去のバグ事例を活用することで、操作の観点に偏りが出ることを防ぎやすくなります。
テスト記録の問題については、「セッションベースドテスト(SBTM)」の手法を活用するのが効果的です。
これは1回のテストセッションを一定時間に区切り、その間の操作内容・観察結果・発見事項などを記録テンプレートに沿って整理する手法で、再現性と共有性の向上に役立てるというものです。
テスト結果の資産化の課題については、セッション終了後にテスト観点や発見された課題を文書化し、ナレッジとして共有・保管する体制を整備することが有効です。
文書の形にこだわらず、ドキュメント化の目的である、[手順通りにテストを実施したこと、その結果品質がリリースの判断基準に沿っていること(もしくは、沿っていないこと)を表すために『エビデンス」』を残す]ことに立ち返ることを目指しましょう。
画面のキャプチャをパワーポイントスライドに貼り付けたような簡易的なものでも役立ちます。
テスト全量の可視化には、各チャーターに紐づいた「観点リスト」や「カバレッジマップ」の作成が有効です。
これにより、「どの機能をどの観点で確認したか」が整理され、網羅性や進捗状況の可視化につながります。
不具合の予防につながる活動につながらないという問題については、探索的テストを仕様レビューや設計段階でのウォークスルーと並行して実施することで解消が望めます。
また、発見されたバグや設計ミスを振り返り、次回以降の設計や仕様検討に活かすという、テストからのフィードバックループを構築することも、品質予防の一助となるでしょう。
他のテスト手法との比較
上であげたように探索的テストは自由度が高く柔軟なテスト手法として知られていますが、自由度の高いテスト手法として「アドホックテスト」と「モンキーテスト」が存在します。
これらの手法は一見似ているように思われがちですが、目的や実施方法、得られる成果の質において明確な違いがあります。
この部分では、まず探索的テストとスクリプト型テストとの違いをはっきりさせてから、アドホックテスト、モンキーテストとの違いについて紹介していきます。
探索的テストとスクリプト型テスト
スクリプト型テストは、あらかじめ定義されたテストケースや手順に沿って実施される計画的なテストです。
明確な進捗管理や再現性が確保されやすく、大規模な品質保証に適しています。
一方、仕様が流動的で詳細な設計ができない段階では、スクリプト型テストは柔軟に対応しにくいという課題があります。
一方で、探索的テストは即応性に優れており、仕様の曖昧な段階や新機能の初期検証に適しています。
探索的テストとスクリプト型テストの両者は相反するものではなく、開発フェーズや目的に応じて使い分け、補完し合う関係にあると言えます。
探索的テストとアドホックテストorモンキーテスト
まずアドホックテストとモンキーテストについて簡単に紹介しておきます。
アドホックテスト
アドホックテストは、計画や設計書がほとんどない状態で、思いつきのままに自由に操作を行い、不具合を探すテスト方法です。
事前の目的設定や体系的な記録を伴わないため、テスターの即興的な判断に大きく依存します。
主に短時間でざっと問題を見つけたいときや、リソースが限られている状況で実施されることが多いテスト手法です。
モンキーテスト
モンキーテストは、システムに対して無作為にランダムな操作や入力を大量に行い、クラッシュや異常終了を誘発することを目的としたテストです。
テスターの思考や意図はほとんど介在せず、「モンキー(猿)」が無秩序に操作しているようなイメージからその名がついています。
主に耐久性や例外処理が正しく行われるかを検証するために用いられます
ここからは探索的テストとの違いについて紹介していきます。
探索的テストは、アドホックテストやモンキーテストと異なり、テスト活動に明確な目的(チャーター)を設定し、操作や観察の記録を意識的に行うことで、再現性やナレッジ共有を重視します。
テスターの思考を最大限に活かして、仕様理解と問題発見を同時に進めるため、ただのランダム操作や場当たり的な試行ではありません。
アドホックテストは自由度が高い反面、目的意識や記録が薄いため、発見結果の再現性や評価が難しくなります。
モンキーテストは操作が完全にランダムであるため、探索的テストのような思考や仮説検証のプロセスは存在しません。
| 手法 | 目的設定・計画性 | 操作の自由度 | 記録・再現性 | テスターの思考・判断 | 主な用途 |
|---|---|---|---|---|---|
| 探索的テスト | 明確(チャーター有) | 高い | 記録次第で高められる | 高い | 仕様不確定期の検証や問題発見 |
| スクリプト型テスト | 事前に詳細に計画 | 低い | 高い | 低い | 品質保証の標準的な検証 |
| アドホックテスト | なし または 暖味 | 非常に高い | 低い | 低い〜中 | 短時間でざっと不具合を探す |
| モンキーテスト | なし | 無作為(ランダム) | ほぼなし | なし | 耐久性・例外処理の検証 |
実施方法とコツ
探索的テストは自由度が高く、効率的に不具合を検出できるテスト手法です。
しかし、漫然と実施してしまうと十分な効果を得ることができません。
この部分では、探索的テストの一般的な実施方法を段階的に紹介します。
また、各段階で必要となるコツについても紹介していきます。
探索的テストの実施方法
- チャーター(テスト目的)を明確にする
- セッション単位で区切る
- 操作や気づきを記録する
- 観点をリスト化して確認する
- 振り返りと情報共有を行う
1.チャーター(テスト目的)を明確にする
探索的テストを始める前に、「このテストで何を確認するのか」という目的(チャーター)を明確にしましょう。
チャーターとは、テストの範囲や観点、狙いを簡潔にまとめたガイドラインのことです。
ECサイトについてのテストであれば以下のようなことをチャーターにできるかもしれません。
たとえば:
- 「会員登録画面における異常系入力のバリデーション動作を確認する」
- 「カート内商品の数量変更時に価格表示が正しく更新されるかを確認する」
このように、機能・操作条件・観点をある程度絞ることで、確認の軸ができ、操作に一貫性が出ます。
また、複数人でテストを分担する場合にも、チャーターがあることで役割分担がしやすくなります。
2.セッション単位で区切る
探索的テストでは、作業を「セッション」として区切るのが基本です。
1セッションは30分〜90分程度を目安とし、時間内にどこまで確認するかを決めてから取りかかります。
たとえば
- 「今回はエラー表示の動作確認に集中する」
- 「モバイル端末でのレイアウト崩れに限定して確認する」
時間とテーマを限定することで集中力を保ちやすくなり、無計画に進めるよりも成果が明確になります。
また、短い時間で終わるテストであっても、セッションという単位で管理することで、進捗報告やチーム共有がしやすくなります。
3.操作や気づきを記録する
テストの自由度が高い探索的テストでは、事前準備がテストの質に大きく影響します。
具体的には以下のような準備を行います:
- 観点リストの用意
あらかじめ確認すべき視点をリストアップしておくと、自由なテストの中でも「見落とし」が減ります。 - 記録用のテンプレートやメモの用意
探索的テストでは記録の質が成果に直結します。
メモ帳や表形式のテンプレートなどを事前に準備しておくことで、思いついた操作を体系的に記録しやすくなります。 - ツールの準備(キャプチャ・録画・ログ)
操作中に画面キャプチャを取ったり、操作を録画できるツールを用意しておくと、後からの再現確認やバグ報告がスムーズです。
4.観点をリスト化して確認する
ここからはテストの実行について紹介します。
チャーター(テストの目的)に沿って、対象機能を自由に操作しながら確認していきます。
ここで重要なのは、「考えながら操作する」という意識です。
何を期待して操作し、どのような結果が返ってきたのかを意識的に観察することで、より深い気づきが得られます。
以下では、以下の図のような会員登録画面の検証について、探索的テストによってどのような観点で検証されるのかを紹介します。

① 正常系の確認(仕様通りに動作するか)
まずは、すべての入力項目に対して正しい値を入力し、期待される処理が正しく行われるかを確認します。
これは仕様が満たされていることを確認する基準点となるため、探索的テストでも最初に行うことが多いです。
- 例)必須項目(氏名・メールアドレス・パスワードなど)を正しく入力し、次へボタンを押す
→ 登録完了画面へ遷移し、完了メッセージが表示されるか確認
② 異常系の確認(不正な入力に対する対応)
次に、不正な値や欠落を入力して、システムが適切にエラーを返すかどうかを確認します。
異常系テストでは、エラー文言の明確さや画面遷移の抑制もポイントになります。
- 例1)メールアドレス欄に「abc@」など形式が不正な値を入力
- 例2)必須項目を空欄のまま登録ボタンを押す
- 例3)パスワードに記号や全角文字など禁止文字を使う
→ 各ケースで正しいエラーメッセージが表示され、登録処理が実行されないことを確認
③ 境界値の確認(ギリギリの値での動作)
項目に設定された文字数制限や数値範囲の「境界(限界)付近の値」を入力し、バリデーションが正しく働いているかを確かめます。
これは仕様の抜けやバグが発生しやすいポイントです。
- 例)氏名欄に最大文字数(たとえば50文字)を入力
- 例)パスワードにちょうど8文字/7文字/9文字を入力(8文字以上という制限を想定)
- 例)年齢欄に「0」「150」などの極端な値を入力(範囲チェック)
境界値の確認では「ちょうど制限値」「制限を1つ下回る値」「制限を1つ超える値」など、複数のパターンを試すことが効果的です。
④ UI・表示チェック(見た目や文言、表示の崩れ)
次に、入力項目やボタンの見た目やラベル表示、配置の整合性を確認します。
これはユーザーの視認性や使いやすさに関わる重要な観点です。
- 例)ラベル名と入力欄が対応しているか(例:「電話番号」と書いてあるのにメールアドレスを入力させているなど)
- 例)ボタンがはみ出していないか、押しやすい大きさか
- 例)エラーメッセージが画面上でわかりやすい位置に表示されているか
- 例)スマホ表示で項目が切れていないか
特にレスポンシブなUIや多言語対応のシステムでは、この観点での不具合がよく発見されます。
⑤ 状態遷移・操作性の確認(操作の流れ・戻る操作)
最後に、画面遷移の流れやボタン操作など、アプリケーションの振る舞いが正しいかを確認します。
システムの状態が変化する場面では、想定外の挙動やデータの不整合が発生しやすくなります。
- 例)登録完了後に「戻る」ボタンを押すと、フォーム内容が消えてしまうか/保持されているか
- 例)途中まで入力した後に「キャンセル」したとき、画面が元に戻るか
- 例)画面更新(F5)時にエラー画面にならないか
また、操作の連打や入力タイミングのずれなど、ユーザーが意図しない操作にも対応できているかを観察すると、より深い気づきが得られます。
5.振り返りと情報共有を行う
セッションが終わったら、行った操作と得られた結果を簡潔に整理します。
ここでは、バグの有無だけでなく、「仕様通りであることの確認」も成果です。
以下のような内容をまとめておくと振り返りもスムーズに行えますし、チーム内で情報共有することも容易になります。
- 実施したチャーター(目的)
- 確認内容と確認結果(正常/異常)
- 発見した不具合の概要(再現手順やスクショ付き)
- 気づいた仕様の特徴や疑問点
- 今回確認できなかった観点(次回への引き継ぎ)
このような簡単な内容の振り返りのための資料であっても、次回以降のテストセッションにもつながる重要な資産となります。
6.次のセッションに備える
探索的テストは1回で終わるものではなく、何度か繰り返して行うことで全体の品質を高めていく手法です。
今回の結果をもとに、次のセッションでは以下のような方針を立てましょう:
- 確認できなかった機能を対象にする
- 新たに見つかった不具合に関係する周辺機能を確認する
- バグ報告の記録精度を上げるための記録手法を改善する
また、複数人で探索的テストを実施する場合には、結果を共有しあうことで、発見内容の幅が広がり、個々の視点では見えにくかった問題に気づける場合もあります。
まとめ
探索的テストは、テスト設計・実行・学習を同時に進める柔軟な手法であり、特にアジャイル開発や仕様変化が多い場面、または、仕様が確定していない状況で実施することで有用性を発揮します。
アドホックテストやモンキーテストとは異なり、目的(チャーター)や観点を定めて進める点が特徴です。
探索的テストの実施にはセッション単位で記録を取り、再現性や共有性を高める工夫が必要で、属人性が強いことや網羅性にかけるという課題には記録テンプレートやチームレビューで対処することができます。
この記事を書いた人