テストエンジニアが適切なテスト設計を行う際の気を付けるべきポイントとして、「実施すべきテストの抜け漏れがないか」と「適切な箇所に必要数のテストケースを作成しているか」の2つが挙げられます。
テストエンジニアがどんなに多くのテストケースを作成することができても、必要なテストが抜けており、不要箇所にテストが集中していれば、肝心なバグを検出できず、ソフトウェアは低品質となってしまいます。
今回の記事では、この2つのポイント「実施すべきテストの抜け漏れがないか」と「適切な箇所に必要数のテストケースを作成しているか」に対し、それらをチェックすることのできる手法である「テストマップ」についてご紹介いたします。
テストマップとは
テストマップとは、テスト対象システムにおける設計単位(機能、画面、状態など)と、実施するテスト観点の対応表になります。
テストの観点とは、ソフトウェアが正しく動作するかを確認するための項目、着眼点、発想の仕方といった、いわばテストを行う上での「切り口」のようなものです。
このテスト観点を使い、テストマップを作成することで、どのようなテストを行うのかを個別に考えるのではなく、同じテスト観点を複数の設計単位に割り当てて考えることができます。
例えば、機能を個別で考えてテスト設計をすることにより、「機能Aでは排他制御のテストを作成したのに、機能Bでは考えられていない」といったことが起こりえます。
テストマップに「排他制御」のテスト観点を記載することで、各機能と排他制御の組合せを俯瞰してみることができ、この抜け漏れを防ぐことができるわけです。
<テストマップ作成例>
ただし、すべてのテスト観点がすべての設計単位に適用できるわけではありません。
「画面レイアウト」や「画面遷移」は、「画面」に適用するテスト観点ですし、「排他制御」や「日またぎ」は、機能を使用するプロセスの途中で行うため、「機能」に適用するテスト観点といえます。
作成例のように、適用できない箇所には「-」などを記載し、テスト実施を行わないことが分かるようにします。
テストの重要度
ブラックボックステストにおいて、機能動作などの確認を行う際、様々な条件や入力をしてテストする必要があります。
例えば、会員サイトのログイン画面には、通常、会員IDとパスワードを入力するテキストボックスが存在し、それぞれにデータを入力し、ログインボタンを押下すると、ログインできるよう仕様になっています。
このログイン機能に対して、「不正なパスワードでログインができないこと」の確認をするとします。
ここでの不正なパスワードとは、
・会員IDと登録されているものとは異なるが、有効な文字種・文字数のパスワード
・無効な文字種
・無効な文字数
・未入力
・HTMLタグやJavaのスクリプト
などが考えられます。
こういったパスワードとして考えらえる文字の組合せは無数にありますが、それらの中からどれくらいの件数をテストするかは、「テストの重要度」と「使用できるリソース」によって変わってきます。
「テストの重要度」は、「以前の工程のテストですでに確認しているか」、「テストしていても、問題が多く検出されていないか」、「その箇所に欠陥が存在した場合のリスクの大きさ」などによって変わります。
この「テストの重要度」と「使用できるリソース」を元に判断した、どれくらいの入力や条件でのテスト実施が必要か?というのが「テストケースの件数」に繋がります。
テストマップの設計単位とテスト観点が交差する位置に、そのテストの重要度を記載することによって、テスト全体のどの部分を重点的に実施するか、つまり、どのテストのテストケース数を多めに実施するのか、最低限実施するのかが一目瞭然になります。
<重要度を記載したテストマップ作成例>
そのため、テストマップは、テスト設計者とステークホルダーでのテストケース数のバランス調整の合意を取る用途にも使えます。
このようなことを行わないと、お互いの認識のズレが発生し、本来そこまで件数の必要のない箇所に対して、多くのテストを実施し、無駄にリソースを使いかねません。
テストマップは、そういったことを未然に防ぐことができます。
また、ソフトウェア開発において、計画通りに進まないことは日常茶飯事です。
テスト開始後のトラブル発生により、テストが押してしまい、計画よりも少ないリソースでテストを実施しなくてはならない状態になることもあります。
重要なテストを減らさないために、テストマップは、テスト全体を俯瞰しながら、絞り込むテストを決定するのに役立ちます。
おわりに
テストマップは、設計単位とテスト観点の組合せを網羅し、テストの抜け漏れ防止に役立てることができます。しかしながら、そもそも、設計単位の分割が不適切であったり、必要なテスト観点自体が漏れてしまったりする場合は、効果が無くなります。
また、詳細なテストマップを作成しようとすると、テストマップ自体が非常に大きくなり、設計単位とテスト観点の組合せの記載ミスや、テスト全体が俯瞰しにくくなるといったテストマップ作成のメリットが失われてしまうことにもなりかねません。
テストマップは、実施するテストを俯瞰でき、抜け漏れをしっかりとチェックできるような粒度になるよう考慮して作成することが重要です。