SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「探索的テスト」でテスト経験を最大限に活かそう

テスト経験を最大限に活かす探索的テストとは? メリットとデメリットを解説

「探索的テスト」でテスト経験を最大限に活かそう 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

探索的テストのメリット

 私が探索的テストを実施した経験上、次の3点が大きなメリットであると考えています。

  1. テスト実施中の気づきを、テストに反映しやすい
  2. 相対的にコストが安くなる
  3. すぐにテストを実施できる

 それぞれについて、詳しく見ていきましょう。

1. テスト実施中の気づきを、テストに反映しやすい

 テストを進めていくと、システムに対する理解がより深くなったり、仕様書に載っていない機能や微妙な違いに気づいたり、システムの不具合傾向が見えてきたりします。それにより、テストの新しいアイディアが出てきます。

 そのアイディアは大抵、あらかじめ決めたテストケースよりも質が良いです。なぜならば、実際にシステムを動かして試せた方が、テストケース作成の難易度が数段易しくなるからです。習熟度が高まってから、テストケースを作成した方がテストケースの質が高くなるのは自明です。最近はソフトウェアの大規模化、複雑化が進み、全ての仕様を事前に把握することが難しくなっている事情もあると思います。

 はじめにテストケースを作成してからテストを実施すると、実施中に浮かんだアイディアはテストに反映されにくくなります。一番大きな理由は、タイムプレッシャーでしょう。テスト実施はソフトウェアライフサイクルの最終工程であり、時間的余裕がない場合がほとんどです 。ステークホルダーからの強いプレッシャーにより、テストを消化すること以外に時間を割くのが困難な場合が多く、あとでやろうと思っていてもテスト実施に忙殺され、せっかく思いついたアイディアも忘却の彼方に消えてしまいます。

 また、時間的余裕がない状況で、承認されたテストケースを変更するのは勇気がいります。致命的な内容でない限り、そのままでいこうとなってしまうでしょう 。その結果、テスト実施時に思いついた質の良いテストは、永久に実施されることのないまま消えていくことになります。

 一方、探索的テストは、テストケースを作成しないため、テストを実施しながら次のテストを決定します。よって、テスト実施中に思いついた良質なアイディアをテストに反映しやすいと言えます。

 例えば、あるシステムのテスト中、特定のブラウザでの不具合が多いことに気づき、そのブラウザでの試験を手厚くして、多くの不具合を検出した事例があります。他にも、テストを行っている最中、プロセスの途中でネットワーク障害がおこるとシステムがロックされてしまうことに気づき、異常状態を多く実施(意地悪テストを含む)するようにし、複数のクリティカルな不具合を未然に防いだ事例もあります。

 逆に、ある機能が複雑でバグが多いと予想していましたが、品質がよく早々に次のテストに移行した事例もあります。複雑であるがゆえに気を付けて開発しており、逆に他の機能より品質が良かったようです。

 このように、テストの途中で不具合が多そうな箇所(デフェクトクラスターと言います)を見つけ、そこのテストを手厚くしたり、逆に品質が良い箇所はツボを押さえたテストのみにしたりするなど、テスト実施中の気づきを柔軟に反映できるところに大きなメリットがあります。

  • 早期のテスト作成は仕様の品質向上に貢献すると言われており、テストケースをはじめに作成するテストと探索的テストのどちらが良いとは一概には言えません。
  • テストケースをはじめに作成するテストも、テスト終了後に、テストの結果を反映させたテスト「強化テスト」を予定に組み込んでおくテストアプローチ方法もあります。
  • テストの7原則の1つに、欠陥の偏在(ディフェクトクラスタ)があります。不具合は平均的に検出されず、特定箇所に偏る傾向にあります。逆に言うと、いかにその偏在を見つけるかが、効果的なテストのカギとなります。

2. 相対的にコストが安くなる

 テストケースを作成する場合、テストする内容をあらかじめ決める必要があります。そのテストケースを作成するにも、仕様理解やテスト設計などの工程を経る必要があります。その工程で、ドキュメントが作成されます。ドキュメントは、アイディアの言語化であり、相応のコストが必要になります。また、ドキュメントは、成果物であるため、厳密性が必要になってきます。その厳密性を確保するために、確認作業も必要になりますし、メンテナンスも必要です。

 一方、探索的テストは必要最小限のドキュメントしか作成しないため、コストは相対的に安くなります。コストの制約が厳しいプロジェクトの場合、探索的テストは有力な選択肢となると思います。

 例えば、あるシステムのテストの見積もりで100万円の費用がかかると分かったとしましょう。これにはテスト計画やテスト設計、テストケースといった中間生成物の作成が含まれています。しかし、顧客の予算は65万円でした。テストケースを削減して費用を抑えるのはNGです。

 こういった状況だと、中間生成物を作成しない探索的テストはコストを抑えるのに役立ちます。実際、このような事例で予算内に収まる探索的テストを提案し、採用された実績がありました。このようにコストの制約が厳しい時、探索的テストは選択肢の1つとして大きな魅力があると言えます。

3. すぐにテストを実施できる

 テストケースやテスト手順を作成する場合、それを作成する時間以外に、仕様理解やテスト設計、レビューの時間も必要です 。つまり、テスト開始までに相応の時間が必要になります。

 一方、探索的テストは、前準備が最小限のため、スピーディーにテストを開始できます。時間の余裕がない時や、すぐに試したい時などは、即座にテストを実施できるのは魅力です。実際の事例を紹介いたします。

 ある顧客が製品を展示会に出展するため、2週間後にはテストを完了しなければならない状況でした。システムを確認すると、通常のテストフローだと、テスト計画とテスト設計、テストケースの作成だけで2週間、その後のテスト実施にさらに2週間、合計4週間かかることが分かりました。物理的にも時間的にもテスト完了は絶望的な状況でした。

 そこで、すぐにテスト実施できる探索的テストを提案し、その難局を乗り切りました(ただし、仕様理解しながらのテスト実施なので、単純に半分になるわけではありません。本事例の場合、リソースの追加と残業対応で、なんとか2週間に圧縮しました)。

 その他の事例として、アジャイル開発のテストがあります。ある顧客のアジャイル開発は2週間のイテレーションとしていたため、テストケースを作成していては間に合わないことが分かりました。そのため、探索的テストが採用され、2週間のイテレーションでも、きちんとテストを実施することができました。この経験から私は、アジャイル開発と探索的テストは相性が良いと感じています。

 このように、時間的制約がある場面においては、スピーディーにテストを実施できる探索的テストには大きなメリットがあります。

次のページ
探索的テストのデメリット

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「探索的テスト」でテスト経験を最大限に活かそう連載記事一覧

もっと読む

この記事の著者

高木 陽平(VALTES ADVANCED TECHNOLOGY INC.)(タカギ ヨウヘイ)

  東京理科大学大学院 技術経営修士(MOT)卒業。バルテスのフィリピン子会社であるVALTES ADVANCED TECHNOLOGY INC.の取締役。今まで、多数のソフトウェアテストやテストプロセス改善の業務に従事。大学でソフトウェア工学の研究室に入り、プロセス改善を研究。そのこともあり、CM...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13962 2021/04/26 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング