Introduction
テストをしなければならない入力の組み合わせが非常に多くある場合みなさんはどうしていますか?
重要そうな箇所を選んで実施しますか?それとも時間の許す限りすべての組み合わせを実施しようと最善をつくしますか?
不具合摘出率を極力落とさずにテストケース数を削減する手法の1つとして「2因子間網羅」があります。
「本当はすべてのテストパターンを網羅したいけど、そこまで時間もお金もかけられない。誰がやっても同じように、効率的にできるだけ多くの欠陥を取り除くにはどうしたらいいのだろう?」そんな疑問をおもちの方に「2因子間網羅」とはどのようなものなのか、使う時の注意点、さらにテスト設計をする前に知っておきたいことについてご紹介したいと思います。
目次
テスト設計手法「2因子間網羅」とは
分かりやすく説明するため、最初に3つの代表的なテスト条件の組み合わせ手法を見ていきましょう。
因子とは「テストすべきテスト条件」のこと、水準とは「その選択値」のことです。
それではTシャツの購入を例に考えてみましょう。
購入する際に選ばなければならない項目が3つ(デザイン、色、サイズ)あり、この選択項目がここでは「因子」になります。そして、各選択項目の中にあるそれぞれの値が「水準」です。
①「全網羅」の場合
因子・水準のすべての組み合わせです。網羅性は高くなりますが、テストすべき組み合わせ数は多く、実施コストがかかります。
【全網羅】Tシャツ購入の例だと8パターンになります。
②「水準網羅」の場合
1つの水準を必ず1回はテストする(いずれかの組み合わせに当て込む)方法です。組み合わせの観点ではなく、単一の水準確認を最低限のパターン数で確認することができます。
【水準網羅】Tシャツ購入の例だと2パターンになります。
③「2因子間網羅」の場合
2因子間での網羅性を考慮した組み合わせであり、不具合摘出率を極力落とさずにテストケース数を削減する方法です。
【2因子間網羅(All-Pairs)】Tシャツ購入の例だと4パターンになります。
上の2因子間網羅のパターン表から2因子ずつ取り出してみると、2因子間では組み合わせが網羅されていることがわかります。
このように全網羅8パターンに対し、水準網羅では2パターン。2因子間網羅では4パターンの実施となるため、それぞれパターン数の削減が可能です。
因子・水準の数が増えれば、その分削減数も大きなものになります。
そして網羅性について、水準網羅は低くなりますが2因子間網羅の欠陥摘出率は全網羅と比較して7~9割という研究結果(※1)もあります。
もちろんこの摘出率では低くて危険と思われるようなケース(例えば、人命にかかわる、人生を左右する、社会に大きな影響を及ぼす、など)もあります。
しかし、かける労力とその効果を考えると、適切な場面で適切に使用する限り2因子間網羅は有効な手法といえるのではないでしょうか。
※1:Software Fault Interactions and Implications for Software Testing
D. Richard Kuhn, Dolores R. Wallace.
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 30, NO. 6, JUNE 2004
2因子間網羅を使用する際の注意点
2因子間網羅は有効な手法ですが、使い方を間違えると欠陥を生み、大きなトラブルに発展する可能性もあります。こういったトラブルを引き起こさないためにも、使用する際に気をつけていただきたい注意点が2点あります。
①本来必要なパターンが入らない可能性がある
テストをすべき重要なパターンがある場合は、該当のパターンが漏れていないか必ずチェックを行い、不足していたら追加する、もしくは別のテストケースを作成するといった対策が必要になります。
②仕様上あり得ないパターンが入る可能性がある
内容を確認のうえ、適宜削除・修正を行う必要があります。
2因子間網羅の特徴(メリット・デメリット)をしっかり理解し、効率的で効果的なテスト設計を行いましょう。
~テスト設計に着手する前に~「許容できないリスク」の範囲を知る
ここまで2因子間網羅についてご説明してきましたが、みなさんがテスト設計に着手する前に1点だけお伝えしておきたいことがあります。それは「許容できないリスク」の範囲を超えてパターン数を削減してはいけないということです。
大きなダメージを受けるかもしれないリスクは、みなさんもできる限り避けたいはずです。スケジュール通りにシステムが完成しても、稼働後の業務に遅れが生じたりお客様が使用できない状態では本末転倒です。
では、「許容できないリスク」の範囲は何を見ればわかるのでしょうか?テスト設計のインプットである仕様書には記載されていません。
製造業において重視する3要素としてQCDがあります。Quality(品質)、Cost(コスト)、Delivery(納期)の頭文字をとってQCDです。システム開発においてもQCDは欠かすことのできない要素であり、それぞれのプロジェクトによって求められる品質・コスト・納期は異なります。
そしてこの3要素には相関関係があり、限られたコストと限られた期間(納期)の範囲内で求められる品質を達成するよう調整を行います。
テスト工程において、この3要素のバランスを検討するのが「テスト計画」です。つまり、テスト計画で「許容できないリスク」の範囲も決まってくるのです。また、これらを方針としてまとめたものがテスト計画書になります。
テスト設計はこのテスト計画書に従って実施します。効率化といってテスト計画書を無視してテストパターンを削減したり心配だからといって冗長なパターンを追加したりするのは賢明なやり方ではありません。プロジェクト全体の品質管理のなかで対策をとっていく必要があります。
テスト工程全体で漏れを防ぐという視点
テスト設計書のレビューの際、「これで本当に大丈夫?」という問いに対し、つい「心配だから」「念のため」とテストケースを増やしていないでしょうか?
目の前のテスト設計書だけを見ていると、不足しているようにも思えてきます。そのようなときはマスターテスト計画を確認しましょう。マスターテスト計画にはどのテスト工程で何を確認するのかがまとめられています。
現在の工程の目的・役割をしっかり理解することにより、テストすべき範囲も見えてきます。
そのうえで、全体を通して「漏れのない重複のない」テストを行うために工程別のテスト計画書に従ってテスト設計をしていきましょう。
~最後に~テスト設計の基礎を体系的に学ぶためには
どんなに優れた道具でも、適切に使用しなければトラブルにつながります。テストの目的をしっかり理解し、その目的に応じた手法を用いてテスト設計を行いましょう。
このつづきは、下記SHIFTヒンシツ大学の講座及びワークショップで受講(オンライン参加)することができます。
みなさんのご参加をお待ちしております。