探索的テストとは
探索的テストとは、担当者がソフトウェアに触れながら、欠陥の兆候や操作上の違和感を探し出していく検証方法です。あらかじめ決まったテスト手順や仕様書に従うのではなく、その場で得た情報や挙動をもとにテストの進め方を調整していきます。
特徴としては、テストの設計と実行、対象となるシステムへの理解をひとつの流れとして同時に行う点が挙げられます。担当者の観察力や思考力を活かして、形式的なチェックでは見つかりづらい欠陥を効率的に洗い出せる点が強みです。
探索的テストと記述式テスト・アドホックテスト・モンキーテストの違い
それぞれのテストは目的や実施方法において特徴があり、効果的に活用することでシステムの品質向上が図れます。ここでは、探索的テストとほか3つのテストの違いについて解説します。
テストの進め方に違いがあります。記述式テストは、あらかじめ定められた手順に沿って動作を検証する方法です。テスト設計者が仕様を読み込み、項目ごとに手順や期待される結果を文書化し、それに従ってテストが実行されます。
テストの内容や範囲がはっきりしており、誰が実施しても同じ結果が得られる点が特徴です。一方で、準備に時間がかかるほか、予想外のケースには対応しづらい側面もあります。
これに対し、探索的テストは実施者の知見を活かして、実際に操作しながら柔軟に検証を進める手法です。仕様に記載されていない動きや偶発的に発生する問題を見つけやすい特徴があります。
実行前に詳細な手順書を用意せずに進める点で両者は共通していますが、目的や進め方に違いがあります。アドホックテストは、計画性を持たずにその場で思いついた観点で試験を行う手法です。
一方、探索的テストは事前に検証の方向性や注目すべきポイントを整理し、テストチャーターを作成したうえで実施されます。テスターの知識や経験を活かしながら進められるため、網羅性の確保や検証の効率化にもつながります。
テストの進め方がそれぞれ異なります。まず、モンキーテストとは、操作内容を意図的に決めず、無作為にシステムを動かして欠陥を見つける検証手法です。
検証者に専門知識や業務理解がなくても実施でき、操作も感覚的に行われるため、ランダムな欠陥の洗い出しに使われるケースが一般的です。
一方、探索的テストは、実施者の経験やシステム理解を活かし、観察や判断を繰り返しながらテストの内容をその場で調整していく方法です。モンキーテストのように無作為ではなく、欠陥が起こりそうな箇所に狙いを定めて検証を深める点で異なります。
探索的テストの重要性が高まっている背景
近年、ソフトウェア開発のスピードが加速するなかで、探索的テストの重要性が高まっています。ここでは、探索的テストの重要性が高まっている背景について詳しく解説します。
製品が本来果たすべき目的や価値をきちんと捉えたうえで検証を行う姿勢が、昨今の開発現場で重視されています。探索的テストでは、テスト担当者が機能単位の確認にとどまらず、サービス全体の意図や利用シーンを踏まえて検証を進めることが可能です。
たとえば「この機能は誰の、どんな課題を解決するものか」といった視点で観察するなどです。このようにテストを進めれば、仕様どおりに動いていても満足度を損なう可能性のある要素を発見しやすくなるでしょう。
短いサイクルで開発とリリースを繰り返すアジャイル開発では、スピードと柔軟な対応力が欠かせません。このような現場では、あらかじめすべての検証内容を用意するのが難しく、状況に応じて対応できるテストが求められます。
その点、探索的テストであれば、設計と実行を並行して進めることが可能です。急な仕様変更や限られた時間内でも、効果的に欠陥を探せるでしょう。
スプリントごとに仕様が変化する環境では、事前に詳細なテストケースを整える時間が取れないケースが少なくありません。そのため、探索的テストはアジャイル開発のペースに合いやすく、現場のニーズに応じた検証が行える手段として注目されています。
スマートフォンやクラウドサービスの普及により、アプリケーションの種類や使われ方が変化しています。画面の構成や操作方法が製品ごとに異なるため、従来の定型的な検証だけでは現実の使用シーンを十分にカバーできません。
探索的テストであれば、実際の操作を通じてユーザー行動を想定しながら検証を進められるため、動作に対するさまざまなアプローチが可能です。操作パターンが読みづらいインターフェースでも、状況に応じて検証方法を調整できる点が強みです。
このような特性により、画面遷移やタップ操作などユーザーの視点に近い形で欠陥を見つけられる手法として注目を集めています。
アプリケーションの機能や利用環境が複雑化するなかで、すべての動作を事前に計画して検証するのは困難になっています。そのため、実行中に発見した気づきをもとに進められる柔軟なテストが重要視されています。
探索的テストは、想定外の状況に対応しながら検証方法を調整することが可能です。あらかじめ定められた流れにとらわれず、評価を進めるでしょう。
また、利用者の視点に立って操作を行うことで、動作するかどうかだけではなく使いやすいか、迷わないかといった視点からの検証も進められます。
ここでは、株式会社NEXERとポールトゥウィンでの共同リサーチとなる「ソフトウェア開発のテスト工程においてもっとも課題として感じること」の結果を交えて、現場の声を紹介します。
まず、現場の声としてもっとも多く挙がったのは「バグの発見と修正」に関する課題で、全体の約3割がこの点を挙げていました。理由としては「原因の切り分けに時間がかかる」「納期に影響が出る」など、手戻りによる負担の大きさが指摘されています。
次いで「テストケースの品質や網羅性に不安を感じる」という声も多く「全パターンを洗い出すのは困難」といった意見が寄せられました。
さらに「設計に時間がかかる」「環境の整備に手間がかかる」といった声もあり、テスト業務全体の効率性が問われています。こうした課題に対し、柔軟に状況を判断してテストを進められる点で、探索的テストは有効な手段だといえるでしょう。
探索的テストのメリット
探索的テストのメリットは、以下のとおりです。
● 仕様書や設計書がなくとも実施できる
● スピーディーにテストを実施できる
● 工数やコストを抑えやすい
● 記述式テストでは想定しにくいバグを発見できる
● 「殺虫剤のパラドックス」を回避しやすい
● ソフトウェア開発現場の声②バグ修正フローのボトルネック
仕様や設計が固まりきっていない段階でも進められるメリットがあります。あらかじめ詳細な資料が用意されていなくても、実際の動作や画面の挙動を観察しながら、欠陥を見つけることが可能なためです。
検証者が持つ知識や経験を頼りに、状況を判断しながら進めるため、仕様書が不完全だったりドキュメントが不足していたりしても、検証作業を止める必要がありません。開発途中で頻繁に変更が入るプロジェクトでも、安心して導入できるでしょう。
あらかじめ詳細な手順を作成せずに始められるため、準備に時間をかけずに着手できます。事前の資料作成やレビュー工程を省略できるため、短時間で検証を開始し、修正の必要が生じた際も素早く方向転換が可能です。
また、予期しない挙動を見つけたときに追跡もできるため、欠陥の発見が早まりやすくなります。このように、準備と実行の両面で効率を重視できることから、納期の短い開発現場や更新頻度の高いシステムに適しています。
手順書の作成やレビューといった準備作業を最小限にとどめられるため、全体の作業量を軽減しやすい方法です。担当者がその場の状況を見ながら判断し、重点的に検証すべき部分に集中できる点も、効率のよさにつながります。
複数人で綿密なすり合わせを行う必要がないため、打ち合わせや確認にかかるやり取りを減らすことも可能で、コミュニケーションコストも抑えやすいでしょう。
事前に定めたとおりに動作確認する記述式テストとは異なり、動作中に気づいた点に即座に対応できるため、想定しきれない欠陥に目を向けられます。利用者が意図しない操作を行った際の反応や境界値付近での挙動など、見落とされがちな問題も洗い出せるでしょう。
こうした柔軟性が、運用にあたっての品質向上につながります。
同じ内容のテストを何度も繰り返すと、新しい欠陥を見逃しやすくなる現象は「殺虫剤のパラドックス」と呼ばれます。探索的テストは、検証中に気づいた点をもとに新たな観点でテストを展開できるため、実施するたびに内容が変化します。
そのため、特定のパターンに偏らず、思い込みによる確認漏れを減らすことが可能です。テスト範囲が固定されず、さまざまな角度から検証できることにより、これまで見落としていた問題にもアプローチしやすくなるでしょう。
株式会社NEXERとポールトゥウィンによるリサーチ「バグや問題の発見から修正までのフローで改善したいポイント」では、以下のような回答が寄せられました。
● バグが出る条件を探すのに時間がかかる
● バグが再現しないことがある
● 検証に時間がかかる
こうした課題の背景には、想定内のパターンに頼りきった検証方法があります。探索的テストは、検証中に気づいた動きから次の検証手順を臨機応変に組み立てられるため、思いがけない欠陥の早期発見につながります。
初期段階で異常に気づければ、修正作業にかかる負担を減らせるでしょう。
探索的テストのデメリット
一方で、以下のようなデメリットも存在します。
● 属人性が高い
● 網羅性を担保できない
● 期間・範囲・量のコントロールが難しい
● 仕様の不備をテスト前に発見できない
● 非機能テストには向かない
テストを実施する人の知識や経験を頼りに進められるため、どうしても結果にばらつきが生じやすくなります。ベテランの担当者であれば、システムの特性を踏まえた深い検証が可能です。
しかし、経験の浅い担当者では、場当たり的な操作にとどまり、効果的な検証が行えないケースも考えられるでしょう。判断基準が個人ごとに異なるため、記録が不十分だとテスト内容の再現や引き継ぎが難しくなる点も注意が必要です。
一般的なテストと異なり、あらかじめ検証内容が細かく決められていないため、網羅性を担保できない点も課題として挙げられます。テスト範囲の広さや重要度の判断も担当者ごとに異なるため、優先順位が不明確になりやすいです。
実施者の判断に委ねて検証を進めるため、どの機能をどこまで確認したのかをあとから正確に把握することも難しく、全体としての確認状況を把握しづらくなる傾向があります。
細かい進行計画や検証項目を前もって設定しないため、テストにかかる日数や確認範囲、検証のボリュームを管理するのが難しくなりがちです。複数人で作業する場合は、進捗状況や内容のばらつきがとくに生じやすいでしょう。
そのため、全体を統制する立場の人が把握しづらくなるケースも珍しくありません。結果として、検証作業の重複や漏れが発生する可能性もある点に注意が必要です。
事前に細かな検証計画を立てないため、仕様書の矛盾や抜けといった不備に気づくタイミングが遅れやすくなります。一方で、記述式テストでは設計段階で仕様を読み込むことで、不自然な記述や定義の不足に先んじて気づくことが可能です。
実装前に誤りを見つけて修正できれば、修復にかかる手間や費用を抑えられるため、この点は探索的テストにおける課題といえるでしょう。
探索的テストは実際の操作を通じて確認する手法ですが、数値での証明が求められる非機能検証には不向きです。以下のような非機能面の検証では、明確な基準や専門的な測定環境が必要とされるためです。
● 動作速度
● 同時アクセスへの耐性
● 使いやすさの評価
上記の項目は感覚的な判断に頼ることが難しく、経験だけでは対応しきれない場合が多くあります。システムの性能や快適性を確実に確認するには、別の検証方法が適しています。
探索的テストで用いられる手法
探索的テストで用いられる手法には、以下のようなものがあります。
● フリースタイルの探索的テスト
● テストチャーターを用いた探索的テスト
● ツアーベーステスト
● セッションベースドテスト
● ペア探索的テスト
ここでは、それぞれの手法について解説します。
事前に詳細な計画を立てず、担当者の知識や直感に従って検証を進めるスタイルです。設計書や仕様書を深く読み込むというより、実際にソフトウェアを操作しながら、気づいた点に応じて確認内容や手順を変えていきます。
想定外の動作や欠陥の兆候に素早く反応できるため、開発初期や仕様が安定していない段階で有効な方法です。ただし、実施者のスキルや製品理解が不十分な場合には、検証の網羅性が損なわれるおそれがあります。
検証の目的と達成基準をあらかじめ整理しておくことで、一定の方向性を持ちながら柔軟なテストが実施できる手法です。たとえば、セキュリティに関する課題を検出したい場合は、過去のインシデントや攻撃パターンを参考に、チャーターに具体的な観点を盛り込みます。
ただし、チャーターの内容が詳細すぎると通常のスクリプトテストと同様になってしまい、柔軟性が損なわれる可能性があります。そのため、実施者が実際の挙動に応じて臨機応変に判断できる程度に抽象度を保つことが重要です。
観光地を巡るように特定の視点を設定しながら、ソフトウェアを検証する手法です。たとえば、以下のような手法があります。
● ガイドブックツアー:製品のマニュアルに従って基本操作を一通り試す手法
● マネーツアー:営業担当が実施するデモを想定して売り込みポイントを確認する手法
● ランドマークツアー:アプリの中心的な機能を重点的にたどる手法
それぞれの視点に応じてテスト対象や確認項目が変わるため、偏りなく操作の抜けを防ぎながら検証を進めることが可能です。ツアーごとに目的がはっきりしているため、特定の観点におけるバグの発見にもつながるでしょう。
探索的テストに、時間的な枠組みと目的を加えた手法です。1時間などの一定の時間枠を1セッションとして区切り、そのなかで達成すべき目的とテスト方針をあらかじめ定めてから検証を進めます。
各セッションでは、実施中に得られた知見やバグを記録し、終了後には必ず内容を振り返って次の方針につなげます。こうすることで、抜けの少ない検証が可能になり、作業の進捗や品質の可視化にも役立ちます。
2人1組で行うスタイルの検証手法です。1人が操作を担当し、もう1人は観察と記録に専念します。このように役割を分担することで、操作に集中しながらも記録漏れを防ぐことが可能です。
途中で担当を入れ替えれば、新しい視点からの気づきも得られやすくなるでしょう。複数の視野で確認が進むため、単独で実施する場合よりもバグの見落としを減らす効果も期待できます。
互いの意見をその場で共有できるため、認識のすり合わせやテスト観点の整理にも役立つでしょう。
探索的テストを行う際の流れ
探索的テストは、計画的かつ柔軟に進めることが求められるテスト手法です。そのため、テストを効果的に行うためには、明確な流れを理解し、適切に実施することが重要です。ここでは、探索的テストを行う際の基本的な流れについて解説します。
まずはテストの目的を明確にしましょう。確認したい項目やリスクが潜んでいそうな領域など、重点を置くポイントを事前に整理し、それに沿って検証を進めていきます。
目的はテストチャーターとして文書化し、チーム内で共有することが一般的です。曖昧な目的のまま進めると、作業が場当たり的になりやすく、有効な検証につながりにくくなります。
続いて、テストに必要な環境を整えます。対象となる機能や画面をもとに、目的に沿った優先順位を設定し、テストの観点や工数に応じて重み付けを行います。
顧客の要望を踏まえた調整を行えば、現場に即した環境を構築できるでしょう。テストチャーターを活用する場合には、その内容を明記しておくと、関係者間でテストの方向性を共有しやすくなり、進捗や範囲も把握しやすくなります。
対象システムを操作しながら理解を深め、入力するデータや操作方法を調整しつつテストを実施します。予期しない挙動や欠陥が見つかった場合は、原因を調べたうえで必要な検証を追加しましょう。
テストの進行に応じて状況を整理し、必要に応じて重点的な検証箇所を見直すこともあります。
テストの実施後は、欠陥や気づいた改善点を整理し、関係者に伝えるための記録を残します。おおまかな実行件数や工数も集計し、報告資料として活用します。
検出された問題は、件数や深刻度ごとに分類し、どのような箇所に集中していたかを明確にしましょう。
実施したテストの成果をもとに、品質管理の責任者が全体の検証状況を振り返り、次に活かすための対策を検討します。具体的には、欠陥の傾向や頻度を確認し、開発工程で改善すべき点を明確にします。
プロジェクトの目的と照らし合わせて、テストによって得られた知見がどのように役立つかを整理することも不可欠です。顧客から寄せられた要望や課題に応じて、品質向上につながる提案も行います。
効果的な探索的テストを行うポイント
探索的テストを行う際の流れを理解した上で、次に重要なのはそのテストをどれだけ効果的に進めるかです。ここでは、効果的な探索的テストを行うポイントについて解説します。
事前に「なぜテストを行うのか」をはっきりさせることが重要です。単に時間が余ったからという理由で取り組んでも、有意義な成果にはつながりません。
まずは対象となる製品や機能の全体像を把握し、どのような欠陥が懸念されるかといったリスクを考えます。そのうえで、調査や確認を進めるうちに想定される課題などを踏まえ、探索的テストが適しているかを判断しましょう。
どのような流れで試験を行い、どんな結果を得たのかを記録に残すことが求められます。品質が目標水準を満たしているか、客観的に判断するためです。
記録方法はテキストに限らず、操作動画や画面のキャプチャを使った資料作成も有効です。
テストの方針や実施内容をチームで共有することは、品質を全員で確認・管理するうえで欠かせません。担当者だけの判断に頼らず、テストの目的や結果、欠陥の内容をほかのメンバーと共有することで、リリースの可否を的確に判断できます。
開発担当者と情報をやり取りすれば、リスクの高い部分を事前に把握しやすくなり、より実効性の高いテストを行えるでしょう。
探索的テストでは事前に詳細な手順を定めないため、試験範囲の抜けや進行状況を客観的に判断しづらい側面があります。そうした課題を補う手段として、テストチャーターの作成が有効です。
テストチャーターには、対象機能や確認の観点、重点的に検証すべきポイントなどを明記します。記載内容をもとに、実施したテストの目的や進捗を可視化でき、関係者への説明もしやすくなるでしょう。
まとめ
探索的テストは、決められた手順に従わず、実際の操作を通じて欠陥や使い勝手の問題を見つけるテスト手法です。設計や仕様が整っていない段階でも実施できるため、アジャイル開発の現場や頻繁に仕様変更が生じるプロジェクトでも活用できます。
担当者の経験と観察力を活かして、予期せぬ欠陥や見落とされがちな問題を洗い出せる点が魅力です。しかし、属人性や網羅性の担保といった課題もあるため、一概にすべてのプロジェクトに最適とはいえません。
どのようなテストが最適なのかわからないのであれば、ぜひ一度ポールトゥウィンにお問い合わせください。ポールトゥウィンは、JTSQBプラチナパートナー認定を取得した「テストのプロ集団」として、ソフトウェアテストを提供しています。
WEBサイトやモバイルアプリ、IoT機器などの検証実績が豊富で、お客様の商習慣やプロダクト特性を考慮し、テスト計画から実行までトータルでご提案します。
600機種以上、5,000台以上のスマートフォンやPC、さまざまな新旧OSなど、多様なテスト端末を完備しています。また、多数のテスターが在籍しており、お客様のご要望に応じて、常駐やラボ型⽀援、テレワークでの検証など、ご要望に合わせた稼働が可能です。
ソフトウェアテストでお悩みの方は、ぜひ一度ご相談ください。