探索的テストとは|スピード×コストに優れるテストスタイル

探索的テストとは|スピード×コストに優れるテストスタイル

探索的テストとは

探索的テスト(Exploratory Testing)とは、テスト担当者がテスト対象のプロダクトおよび欠陥の学習・テストの計画・テスト内容の設計実行を並行して行う、ソフトウェアテストの1つのスタイルです。

事前にテストケースを設計せず、テスト実行の過程や結果を通じてテストの目標や内容を動的に調整し、積極的に質の高い新しいテストケースを設計していくという特徴があります。

テスト対象の振る舞いに着目し、そのフィードバックを元にテスト内容を改善していくことから、「対話型」のアプローチといわれることもあります。

事前にテスト設計を行う必要がないことから、必ずしも仕様書や設計書といったドキュメントを必要とせず、また同様の理由から事前に準備がかからずスピーディーに実施できることから、特にアジャイル開発と相性が良いとされています。
近年では開発手法としてアジャイル開発が取り入れられるケースが増えていることから、探索的テストに対する注目度が高まっています。

なお探索的テストと混同されがちな「アドホックテスト」「モンキーテスト」とは明確に異なります。
「アドホック」とはラテン語で「その場限りの」「特定の目的のための」といった意味をもち、場当たり的に思いついたテストを実施することを指します。

アドホックテスト(モンキーテスト)については、『アドホックテスト(モンキーテスト)とは|短期間・低コストで品質を底上げ』の記事で紹介していますので、ぜひ合わせてご参照ください。

一方で探索的テストの場合は、テストの過程でテスト対象からのフィードバックをもとに目標や内容を動的に変更・改善していくという特徴から、場当たり的な「アドホックテスト」「モンキーテスト」とは一線を画します。

記述式テスト(スクリプトテスト)との違い

従来の「記述式テスト(スクリプトテスト)」では、設計書や仕様書といったドキュメントをインプットとし、それをベースにテスト設計を行いテスト仕様書を作成した上で、実行者はテスト仕様書のテストケースにもとづいてテストを実行します。
記述的テストのアプローチでは、仕様に対して網羅性の高いテストが実施でき、またテストケースにもとづいてテストを進めることから個人のスキルに左右されず、属人性が取り払われるというメリットがあります。

その一方で、事前にテストケースを準備する必要があることからその分の時間やコストを要することや、テストケースに沿って機械的にテストを実行することから、バグが見つかる可能性が低いテストまで行う必要があったり、テストの最中で実行者が得た気づきをテスト内容に反映しにくいというデメリットがあります。

探索的テストはこの真逆のアプローチといえます。
上で述べたように、探索的テストでは事前にテストケースを準備せず、テスト担当者が自身の経験・学習を通じて「属人的」にテストを実施し、その結果に応じて柔軟にテスト内容を変更していくアプローチです。
ゆえに、探索的テストと記述式テストは相互に補完的な関係にあるといえます。

探索的テストのメリット・デメリット

探索的テストにも記述式テストと同様に、メリットだけでなくデメリットも存在します。
実際のテストにおいては、探索的テストのメリット・デメリットを明確に認識した上で運用する必要があることから、主なメリットとデメリットについてこちらで紹介いたします。

探索的テストのメリット

1.スピードの速さ

記述式テストと異なり、事前にテストケースを用意する必要がないことから、テスト設計やレビュー・修正といった工程が必要ありません。テストケースの準備には実行以上に時間を要することも多く、その工程を省くことができるのは大きな時間的なメリットとなります。

またテストの過程で目標や内容を変更する必要が生じた場合でも、必ずしも逐一ドキュメントを作成する必要がないことから、実行自体もスピード感をもって行うことができます。
さらに事前準備は最低限としてスピーディーに開始することができるため、不具合が検出されるタイミングも早くなる傾向にあります。これはテスト対象の品質を素早く向上することにも役立ちます。

このことから網羅性よりもスピードを重視する場合に特にメリットが大きく、アジャイル開発と相性が良いと言われる1つの理由となっています。

2.工数・コストを抑えやすい

上で述べたようなドキュメントの作成や事前準備を最低限として実行・改善をハイスピードでまわすことができる上、実行者のスキルや判断に左右されるものの、より効果的な部分にフォーカスしてテストを行うことができることから、記述式テストに比べて工数・コストを抑えやすいアプローチといえます。

またテストにおいて意外と見逃されがちなコストとして「コミュニケーションコスト」がありますが、探索的テストは基本的に個人のテスト活動であることから、コミュニケーションコストの抑制にもつながります。

3.記述式テストでは検出困難なバグを見つけやすい

探索的テストでは、実行の結果・システムの振る舞いというフィードバックをもとにその場で新たなテストケースを設計(必ずしもドキュメント化する必要はなく、頭の中で行われるケースも多い)し実行を進めていきます。
その特性上、テストケースとしては用意しにくいような部分のテストができ、結果として記述式テストでは検出困難なバグを見つけやすいというメリットがあります。

4.仕様書や設計書といったドキュメントが無い/不十分な状態でも実施可能

探索的テストはテスト対象のみをインプットとしても実施可能なことから、ISTQBによれば「仕様がほとんどなかったり、不十分であったりする場合に最も効果が大きい」といわれています。
このことからも、仕様が未確定であったり、ドキュメントとして存在していない場合であってもテストが実施でき不具合を検出できるという点は大きなメリットです。

アジャイル開発では仕様がドキュメントに十分に記載されていないことや、そういったドキュメント自体が存在しないという場合もあることから、メリット1と同様にアジャイル開発と相性が良いと言われる理由の1つとなっています。

探索的テストのデメリット

1.属人性が極めて高い

探索的テストは基本的に個人のテスト活動であることから、テストの内容やアウトプットは実行者の経験やスキルに極めて高く依存します。
また貴重なインプットとなる実行の結果における「気づき」には偶然性が高く、実行スピードもテストケースをベースとしたテストに比べると安定しにくいことから、アウトプットの品質にムラが生じやすいという傾向があります。

ゆえに探索的テストを実施する際には、テスト対象に対する深い知識と豊富なテスト経験を有する実行者をアサインすることが重要です。

2.網羅性の担保ができない

探索的テストでは事前に具体的に何をどうテストするかといったことを厳密に定義することができず、また実行の最中においてテストケースが作成されないことも多いことから、テストの結果どの程度の網羅性が担保されたかの判断ができません
このことは、「探索的テストだけでは品質保証ができない」ということを意味します。

例えば「この機能のこの範囲に対して、こういった前提のもとこういった観点でこういったテストをしたことから、こういった手順・操作での不具合は発生しないことを保障します」の積み重ねが品質の保証だとすると、探索的テストの場合はテストを行った内容自体はブラックボックス化されることから、テストを終えた後に何が担保できるか・保証できるかを明確にエビデンスをもって説明することができません。
ゆえに不具合の検出ではなく「品質保証」を目的とする場合は、記述式テストなど他のテスト手法を組み合わせて実施する必要があります

3.管理・コントロールが難しい

探索的テストは基本的に厳密なテスト計画やテスト設計を行わないことから、管理者が実施されるテストの量や質、範囲をコントロールしにくいというデメリットがあります。
このデメリットに対応するために、探索的テストの中にも様々な手法が存在しています。

テストチャーターを使用して事前にテストの指針を決めた上でテストを実行する手法や、テストを一定の時間と実施単位(セッション)で一区切りにし、各セッションの中で目的や範囲を決めて行うセッションベースドテストと呼ばれる手法などがあります。
探索的テストの手法や具体的な実施方法については、また別の記事で詳しくご紹介させて頂く予定です。

探索的テスト導入事例|電子カルテシステム

高い品質水準が求められる医療系システムにおいて、短期間で集中的に品質を引き上げるためにSHIFT ASIAと協業。
アドホックテストと探索的テストを活用したハイスピード×低コストのアプローチにより、短い期間で効果的に品質向上を実現しました。

まとめ

探索的テストにはスピードやコスト面を中心に大きなメリットがありつつも、記述式テストのような網羅性は担保できないという弱点があります。それぞれに違った特徴があり、どちらが優れているというものではありません。
探索的テストだけでは品質の保証はできず、一方記述式テストだけではテストにおける気づきを十分に活かせない表面的なテストとなってしまう恐れもあります。

この2つのテストはそれぞれが補完的な関係にあることから、両方の特徴をしっかりと認識したうえで、適切に組み合わせてテストを実施することが大事です。
御社のプロジェクトにおいても、探索的テストを活用してみてはいかがでしょうか。

SHIFT ASIAのテスト設計

SHIFTグループで蓄積されたデータをもとに標準化されたテスト観点をもとに専門のテストエンジニアがテストを設計。属人性を排除し、網羅性の高い高品質なテスト設計を実現します。