![見出し画像](https://assets.st-note.com/production/uploads/images/133983671/rectangle_large_type_2_fecb210287d92249d7ea1a57b96e4ceb.jpeg?width=1200)
テストケースを作成しない!?【探索型テスト】を解説
探索型テストは、事前にテストケース設定をせず、テスターの知識と経験でテストを進めていく、ソフトウェアテスト手法の1つです。
市場リリースの前段階として、ソフトウェアの信頼や品質保証のために、ソフトウェアテストは、なくてはならない重要な開発工程の1つです。
今回は、ソフトウェアテスト手法の中でも昨今注目を集めいている探索型テストについて、探索型テストとは?という基礎的な部分から、実践方法やメリット・デメリット、現状の課題から今後の展望まで、解説していきます。ぜひ最後までご覧ください!
探索型テストとは?
探索型テストとは、探索的テストやExploratory Testingとも呼ばれる、ソフトウェアテスト手法の1つです。
従来のソフトウェアテストは、テストケースを洗い出し、あらかじめ定義した上で、それに準じたテストを行なっていくことで、バグや不具合を発見をしていました。
しかし、探索型テストでは事前のテストケース設定をせずに、一定の方向性は定めつつ「アプリケーション学習」「テスト設計」「テスト実行」の3つすべてを並行で進めていきます。
具体的には、アプリケーションを実際に操作しながら使い方を習得し、テスターの直感で様々なテストを柔軟に実行していきます。その間、行ったテストや実行手順を記録しておくことで、後から同じテストが行えるような再現性も確保していきます。そうすることで、作成するテストケースの内容を常に質の高いものへとアップデートすることが可能です。
テスト実行のフィードバックを元に、テストの内容改善を行う様子から「対話型のアプローチ」と表現されることや、多数のテスターが担当箇所をそれぞれの知識や経験値で進めていく様子から「アジャイル的なソフトウェアテスト手法」というような表現をされることもあります。
歴史と進化
探索型テストは、従来の手法ではすべてのテストケースを網羅することが難しいという課題や、必要に応じてテスト内容を変更できない柔軟性に欠けるという点をカバーできる、新たなアプローチ手法として、1990年代から2000年代にかけて広まっていきました。
最初に概念を提唱した、プログラマーのCem Kanerは、複雑なソフトウェアテストを効果的に行うためには、従来の計画的なテスト方法だけではなく、テスター自身の経験や知識に基づく直感や洞察力、創造性を活用していく必要があると主張しました。
そして、ソフトウェアテスターのJames Bachが、探索型テストの理論・実践を広めるために先頭に立ち、探索型テストはより実践的なものへとなっていき、多くのシステム開発で採用されるようになりました。
広まるアジャイル開発にマッチした探索型テスト
![](https://assets.st-note.com/img/1710471768896-tBcVkedwz8.jpg?width=1200)
探索型テストの広まりと同時期に、システムを機能ごとに小さく分割して短期間の反復開発を行う、アジャイル開発が誕生ました。
これは、現代の市場の特徴である「ユーザーニーズの変化が早い」「ニーズが潜在化している」といった傾向にマッチした開発手法ととして、急速に広まりを見せ、現在ではウォーターフォールと並んで主流の開発手法となっています。
このアジャイル開発の手法と、「変化に柔軟に対応し、素早いフィードバックを得れる」という探索型テストの性質がマッチしていたため、探索型テストは普及を加速したと言われています。
2009年には、James Bach と Jonathan Bach によって『Exploratory Testing Explained』が出版され、明文化された探索型テストの概念は、実践へ取り組むためのガイドとして、ソフトウェアテスターの探索型テストへの取り組みをサポートしました。
また探索型テストは、アジャイル開発だけでなく、テスト自動化やDevOpsなど、現代のソフトウェア開発で主流となっている考え方や仕組みともマッチし、ともに進化して来ました。
探索型テストに関わる人
探索型テストは、ソフトウェアテスターだけでなく、開発者やUXデザイナーなど、ソフトウェア開発に関わる人すべてが、それぞれの目線から貢献できるテストと言えます。
・ソフトウェアテスター
ソフトウェアテストの原理を深く理解し、専門的な知識と経験を持つソフトウェアテスターは、潜在的な問題を素早く特定するテストと、効果的なフィードバックが可能です。
・開発者
アプリケーションの技術面(開発の裏側)を支える開発者ならではの視点で、テストを実行できます。開発者は、開発段階でテストを行うことも可能なため、バグの発見や、実装機能が期待している動作ができるかを、早い段階で検証することができます。
・UXデザイナー
UX(ユーザー体験)デザインやUIデザインの側面からソフトウェアテストを実施することで、設計したデザイン通りに開発されているかや、ユーザービリティの改善など、ソフトウェア全体のユーザー体験を向上させるために、有効的なテストを実施することができます。
・開発依頼者
開発されたソフトウェアが要件を満たし、開発の目的/ビジネスのゴールと一致したソフトウェアになっているかや、より一般ユーザーに近い視点で「使やすさ」に関する検証を行うことができます。
探索型テストの実践
![](https://assets.st-note.com/img/1710471814925-iSKzX4Gxg7.jpg?width=1200)
テスターが自由にソフトウェア内を操作(=探索)し、その都度テストを実施する手法である探索型テストですが、実践する場合、目標設定やある程度の方向性を定める場合がほとんどです。
プロジェクトの要件や、チームのニーズに応じて適宜調整していきますが、一般的には以下のような流れで進めていきます。
【目標の設定】
特定の機能やリスクなど重要性の高い領域を定め、テストの目的・方向性を明確にします。
▼
【環境の準備】
必要なハードウェア、ソフトウェア、その他リソースを確保し、テスト実行のための適切なテスト環境を準備します。
▼
【テストの開始】
テスターが自由にソフトウェア内を操作し、バグや不具合がないか、ソフトウェアの反応やパフォーマンスに問題ないかを確認していきます。
【テストの実行と同時に学習】
テスターは、テストを実行しながら機能や動作などソフトウェアについて学習していきます。そして、それらに基づいて新たなテストケースやシナリオを考案します。
【問題の特定】
テストを実行しながらバグやエラーを特定し、記録します。
▼
【テスト結果の評価・再テストに向けた調整】
テストの結果や学習をもとに、テストの方向性や重点を置くべきポイントを調整し、再度テストを実行します。テストの目標が達成できた場合、もしくは時間やリソースが尽きた場合には、ここでテストを終了します。
▼
【報告とフィードバック】
テスト結果や発見された問題について、バグレポートの作成や他の関係者へのフィードバックなどを行います。
▼
【反省と改善】
全体を振り返り、テスト手法やアプローチを改善するための反省を行い、次回の探索型テストが効果的に行えるよう改善していきます。
近年では、探索型テストの実践を後押しする、ツールの活用も盛んになっています。例えば、テストを一定時間(=セッション)で区切り、そのセッション内で目的や範囲を決めて行うセッションベースのテスト管理ツール(例:SessionStac、SessionTest)の活用は、探索型テストの効率性を向上させてくれます。また、画面録画ツール(例:Camtasia、OBS Studio)を使って、テスト内容をチームで分かりやすく共有できたり、不具合追跡ツール(例:Jira、Bugzilla)を使って、テスト中に見つかったバグを記録し追跡するツールの活用も有効的と言えます。
探索型テストのメリット・デメリット
ここでは、探索型テストのメリット・デメリットを挙げていきます。
【メリット】
・短期間で効率的なテストを実行できる
開発期間が短く、事前にテストケースを準備する時間が十分に設けれない場合でも、探索的テストであれば、「学習」「設計」「実行」を同時に進めることがでるため、効率的にテストを進めることができます。
・状況に合わせて柔軟なテストができる
テスターが操作する中で見つけた不具合に応じて、必要なテストを実施できる柔軟性があります。形式的なテストでは早期発見できないバグも、探索型テストにより発見できる可能性があります。
【デメリット】
・テスターの経験やスキルで効果に大きな差が出る
探索型テストはテスターの直感的な判断に委ねる部分が大きいため、テスターの経験やスキルが大きく影響します。事前にテストケースが定義されていないため、バグや不具合を見落としてしまう可能性も否定できません。
・探索的テストだけで品質を保証することが困難
作成するバグや再現方法のレポートは、テスターの主観が入ったり、質にも個人差が出てしまうことがあるため、テスト内容に一貫性を持たせれない可能性があります。1つ目のデメリットと合わせて、探索型テストだけで品質を保証するのは難しいのが現状です。
現状の課題と今後の展望
探索型テストは従来の型を破る斬新なテスト方法とされていますが、まだまだ新しいアプローチ手法として課題もあります。
しかし、これからもテクノロジーの進化に適応していくことで、探索型テストはその存在感を大きくしていくでしょう。
例えば、テストケースの生成や不具合の検出にAI・機械学習を活用することにより、さらなる効率性向上を期待できます。また、単純作業や反復作業など一部作業での自動化を進めることで、テスターはより重要な項目のテストに力を注ぎつつ、データ分析まで行うことができます。
また、探索型テストはテスターの主観も大きく影響するため、テスターの育成にも焦点を当てていく必要があります。専門知識を深め、テスターの創造性や直感力を鍛えていくことで、より効果的なテストの実施が期待できます。
まとめ
ここまで、ソフトウェアテスト手法である「探索型テスト」について、基礎的な知識から、実践方法やメリット・デメリット、現状の課題から今後の展望まで、解説してきました。
探索型テストは、テストに関わる人それぞれの視点から、知識や経験をもとに、不具合の早期発見や、有効的なテストを短期間で行うことができます。
そして、今後新しいテクノロジーを取り入れていくことで、探索型テストの存在感は大きくなっていくと予想されます。
JIITAKでは、ストラテジー・デザイン・エンジニアリングの各デジタル分野の専門チームが、ビジネスの成長段階に応じて最適なサービスを提供します。プロダクト開発では、アイデアの創出から戦略設計、開発、スケールまでの包括的な支援でプロジェクトを成功へと導きます。新規・既存サービス問わず、アイデアやお困りごとのある方は、ぜひ一度JIITAKまでご相談ください!
この記事が気に入ったらサポートをしてみませんか?