皆さんは「探索的テスト」というテスト手法をご存知でしょうか。
探索的テストは、経験ベースと言われるソフトウェアテスト手法の1つです。テスターの経験や直感を最大限に活かしたテスト手法であり、テストケースやテスト手順を作成しないで、テストが実施される場合が多いのが特徴です。今回、探索的テストについて、第1回・第2回と分けてご紹介していきます。
第1回の本記事では、探索的テストとは何か、探索的テストのメリットとデメリットについて解説します。
第2回の記事につきましては、以下のリンク先をご参照下さい。
- もくじ
1.ソフトウェアテスト手法『探索的テスト』とは
探索的テストは、Cem Kaner氏が著書「Testing Computer Software(邦訳:基本から学ぶソフトウェアテスト)」の中で、「進化型アプローチ」として紹介しました。その後、「Lessons Learned in Software Testing(邦訳:ソフトウェアテスト293の鉄則)」で、「探索的テスト」となりました。日本では、Cem Kaner氏に直接師事した高橋寿一氏の著書「知識ゼロから学ぶ ソフトウェアテスト【改訂版】」で詳しく紹介されました。さらに、世界のソフトウェアテスト資格のデファクトスタンダードであるISTQB(日本ではJSTQB)で、経験ベースドテストの一つの手法として紹介されています。
探索的テストは経験ベースで行うソフトウェアテストの一つです。仕様把握、テスト実施内容の決定、テスト実施の3つを同時に実施していきます。この時、基本的にテストケースを作成せず、ソフトウェアの振る舞いや結果をみて、次に何のテストをするか決めていくことになります。
例えば、この機能でバグが出たので、もう少し深掘りをしてテストをしようとか、この機能は大丈夫そうだから次の機能のテストをしようとかになります。
つまり、探索的テストとは、予めテストケースを作成しないで、テスターが頭の中でどのようなテストをするかその都度決めて、次々にテスト実行していくテストになります。
2.探索的テストのメリット
探索的テストを実施する上でのメリットは以下の3点です。
- テスト実施中の気づきを、テストに反映しやすい
- 相対的にコストが安くなる
- すぐにテストを実施できる
それぞれ解説していきます。
①テスト実施中の気づきを、テストに反映しやすい
探索的テストのメリットは「テスト実施中に思いついた良質なアイディアをテストに反映しやすいこと」です。一般的にテストケースを作成してからテスト実施すると、実施中に浮かんだアイディアはテストに反映されにくくなります。テスト実施はソフトウェアライフサイクルの最終工程であり、時間的余裕がないためです。
ステークホルダーからの強いプレッシャーにより、テストを消化すること以外に時間を割くのが困難な場合が多く、あとでやろうと思ってもテスト実施に忙殺され、せっかく思いついたアイディアも忘却の彼方に消えてしまいます。また、時間的余裕がない状況で、承認されたテストケースを変更するのは勇気がいります。致命的な内容でない限り、そのままでいこうとなってしまうでしょう。その結果、テスト実施時に思いついた質の良いテストは、永久に実施されることの無いまま消えていくことになります。
一方、探索的テストでは、テストケースを作成せずにテスト実施をしながら次のテストを決定していきます。よって、テスト実施中に思いついた良質なアイディアをテストに反映しやすいです。例としては以下のようなケースがあります。
- システムのテスト中、特定のブラウザでの不具合が多いことに気づいて、そのブラウザでの試験を手厚くしたところ、多くの不具合を検出できた
- テストを行っている最中、プロセスの途中でネットワーク障害がおこるとシステムがロックされてしまうことに気づき、異常状態を多く実施(意地悪テストを含む)するようにしたところ、複数のクリティカルな不具合を未然に防ぐことができた
- ある機能が複雑でバグが多いと予想していたが、品質が良く早々に次のテストに移行できた
このように探索的テストは
- テストの途中で不具合が多そうな箇所(デフェクトクラスター)を見つけ、そこのテストを手厚くする
- 品質が良い箇所はツボを押さえたテストのみにする
などテスト実施中の気づきを柔軟に反映できるところがメリットとなります。
②相対的にコストが安くなる
探索的テストは「相対的にコストが安くなる」というメリットもあります。
テストケースを作成する場合、テストする内容をあらかじめ決める必要があります。そのテストケースを作成するにも、仕様理解やテスト設計などの工程を通る必要があります。その工程で、ドキュメントが作成されます。ドキュメントは、アイディアの言語化であり、相応のコストが必要になります。また、ドキュメントは成果物であるため、厳密性が必要になってきます。その厳密性を確保するために、確認作業も必要になってきますし、メンテナンスも必要になってきます。
一方、探索的テストは必要最小限のドキュメントしか作成しないため、コストは相対的に安くなります。コストの制約が厳しいプロジェクトの場合、探索的テストは有力な選択肢となるでしょう。
例えば、あるシステムのテストの見積金額が100万円だったとします。これにはテスト計画やテスト設計、テストケースといった中間生成物の作成が含まれています。しかし、顧客の予算は65万円でした。テストケースを削減して費用を抑えるのはNGです。こういった状況において、中間生成物を作成しない探索的テストはコストを抑えるのに役立ちます。このようにコストの制約が厳しいとき、探索的テストは選択肢の一つとして大きな魅力があると言えます。
③すぐにテストを実施できる
探索的テストは「すぐにテストを実施できる」という点もメリットです。テストケースやテスト手順を作成する場合、それを作成する時間以外に、仕様理解やテスト設計、レビューの時間も必要です。よって、テスト開始までに、相応の時間が必要になります。
一方、探索的テストは、前準備が最小限のため、スピーディにテストを開始できます。時間の余裕がない時や、すぐに試したい時などは、即座にテストを実施できるのは魅力です。例えば、顧客側のスケジュールの関係でこの日までにテスト完了しなければならないなど、時間的制約がある場面においては、探索的テストはスピーディにテストを実施できるため有効です。
余談ですが、時間がかかるということは、別の問題もはらんでいます。テスト実施のタイミングを開発完了と同じタイミングにしようとすると、開発完了前にテストケースの記述を開始しないといけません。しかし、テストケース作成のタイミングが早ければ早いほど、仕様には不明確な部分が増えていき、手探り状態での作成部分が多くなります。よって、テストケース作成のタイミングが早ければ早いほど、テストケースの品質は落ちていくことになります。
つまり、テストケースの質だけを考えた場合、なるべくテストケース作成は遅らせた方が良いということになります。ただし、早期のテスト作成は仕様の品質向上に貢献すると言われており、どちらが良いとは一概には言えません。
3.探索的テストのデメリット
探索的テストのメリットを見てきましたが、もちろんメリットだけではなく以下のようなデメリットもあります。
- テストが担当者任せになってしまう
- テスト実施者にスキルが必要である
- テストを資産化できない
それぞれについて詳しく見ていきましょう。
①テストが担当者任せになってしまう
探索的テストのデメリットとして「テストが担当者任せになってしまう」ことが挙げられます。
探索的テストではテストケースは作成されないので、何のテストをするのかの事前確認や何のテストをしたのかも事後確認ができません。つまり、適切なテストを実施したか/実施しているか、管理することはできないということになります。
高橋寿一氏も著書で、「探索的テスト(もしくはほかの手法)単独の手法で品質確保することはできないので、探索的テスト(もしくはほかのテスト手法)だけでテストを終了することはできないのも事実です。」と述べています。これは、発注する顧客にとっても、管理するマネージャにとっても、恐怖であると思います。この事が、探索的テストの普及を阻んでいる大きな要因になっていそうです。
②テスト実施者にスキルが必要である
探索的テストは、スキルのあるテスト実施者を前提としています。このことは、「ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応」の経験ベースのテスト設計技法の章で、以下のように説明されています。
作業者のスキルに依存するテスト設計となるため、スキルの低い開発担当者がこの技法を用いるとなると、単なるやみくもなテスト(「モンキーテスト」と呼ばれることもあります)になってしまいます。反対にテスト対象に対する理解が深く、経験豊富であるならば、一通りのテストが終わったあとの最終確認的な位置付けとして一定の効果が期待できます。このようなベテランによるテストを「探索的テスト」と呼びます。
スキルのあるテスト実施者は、数が非常に限られます。そうなると、探索的テストをできる人は非常に限られてしまいますし、単価が高いテストになってしまいます。
③テストを資産化できない
探索的テストのデメリットとして「テストを資産化できない」という点もあります。
通常、テスト計画書、テスト設計仕様書、テストケース仕様書などのドキュメントは、似たようなプロジェクトの際に再利用されたりします。またそれらのドキュメントは、テスト対象やテスト技術のノウハウが詰まっており、資産価値があります。成熟した組織は、それらのドキュメントを有効活用して、テストの品質を高めています。
しかし、探索的テストは、それらのドキュメントを基本的に作成しません。そのため、探索的テストは再現性が低く、ノウハウの移転も難しいテストと言えるでしょう。
まとめ
探索的テストは経験ベースで行うソフトウェアテストの一つです。
仕様把握、テスト実施内容の決定、テスト実施の3つを同時に実施していきます。この時、基本的にテストケースを作成せず、ソフトウェアの振る舞いや結果をみて、次に何のテストをするか決めていくことになります。
また探索的テストのメリット・デメリットは以下のようにまとめられます。
メリット |
|
---|---|
デメリット |
|
第2回では、上記で示したデメリットの対策方法について解説していきます。