前ページまでは組み合わせテストのコツと選定基準について見てきました。また、組み合わせテスト運用面での問題のいくつかを解決するコツも紹介してきました。
ここからは、組み合わせテストの基本的な問題点や、組み合わせテストだけでは解決できない問題をどのように解決していくのかを考えていきます。
オールペア法や直交表による組み合わせテストは、ツールにより比較的機械的に、かつ数学的に網羅性を保証してテストを実施できます。もちろん、今まで紹介してきたように因子や水準の発見、強さの選定などで多くの知見やコツが必要になっていますので、誰もがすぐに使いこなせるわけではありませんが、それでも少しの修練で使えるようになるテスト方法です。
一方、発見的にテストケースを見つける「探索的テスト」は、エンジニアのセンスと経験に大きく依存しますが、「機械的テスト」よりも効率的にテストを実施できることが多いのも事実です。逆に、「機械的テスト」はエンジニアのセンスや経験が入らないため、誰でも一定の効率でテストができます。
「機械的テスト」と「探索的テスト」は相反するものでなく、相互補完して使うものです。つまり探索的テストを実施する優秀なエンジニアでもオールペア法や直交表を使った組み合わせテストを使えるところでは使うべきです。
例えば、探索的テストの欠点の一つは網羅性が計測しにくい点です。この点を、組み合わせテストの強さと、その強さでの網羅率により計測することもできます。
また逆に、探索的テストで深く追求する必要があると判断した怪しそうなソフトウエアモジュールには、「強さ3」の網羅率100%を目指してテストを実施し、怪しくなさそうなところでは「強さ2」のテストを実施するなどのように、組み合わせテストの選定基準として、探索的テストの結果を利用することが可能です。この関係を図3に示します。
テストでは、(1)要求された品質に適したコストを掛けてテストを実施しているか、そして(2)コストに応じた効果を得ているか、そして(3)これらの要求、コスト、効果をちゃんと計測しているかが問われます。これらは、本稿で紹介してきたオールペア法や直交表を使った組み合わせテストでも、例外なく問われます。
「組み合わせテスト」ではコストはテストケース数で計測し、効果は発見したバグ数で計測できます。このテストケース数は「強さ」や手法の選定に大きく依存し、また「因子」や「水準」の粒度による因子数や水準数に大きく影響します。
逆にいえば、「強さ」や手法、因子数や水準数は制御できますので、そのコストも制御できるものになります。こうしたことからオールペア法や直交表では、コストと効果の計測は比較的容易にでき、コストの制御も可能ですが、探索的テストなどと相互補完して実施する場合は計測が困難になることもあり得ます。
また、ソフトウエアテストではどうしても「機能テスト」に重心を置いてテストをします。性能や可用性、運用・保守性、移行性などの非機能要求のテストは、その重要性は認識していても、コスト面や実施の困難さから、あまり行われない傾向にあります。これもソフトウエアテストの大きな問題で、オールペア法や直交表による機械的組み合わせテストをするときでも、他のテストで実施するなど、常に考慮する必要があります。
筆者らが目指しているソフトウエアテストは属人的ではなく、達人しかできないテストでもなく、「誰もができる機械的な、そして科学的なテスト」です。
これは制御パステストのようなホワイトボックステストではある程度実現可能ですが、ブラックボックステストでは入力条件そのものに「曖昧さ」「矛盾」「間違い」「多数の仕様変更」などがあり、どうしても科学的テストをするのが容易ではありません。オールペア法一つとっても、因子や水準の発見ではどうしてもエンジニアのスキルやセンス、経験、勘、そして運が必要になってきます。これをできるだけ、普通のエンジニアでも科学的ソフトウエアテストが簡単に効率的に実施できるようにする必要があります。本連載を読んだ方は、これを目指して、その最初の入り口として、オールペア法や直交表を使ってください。そして手法に振り回されることなく、「便利な道具」として使いこなしてください。
ソフトウエアテストに関しては第一回でも紹介したように、まだまだ本質的なものを含めて問題点が山済みの状況です。これを解決するキーワードはバランス(トレードオフ)です。
「テストに掛けるコスト」と「結果としての品質」とのバランスが最重要であり、このために「経験や勘、スキルに頼るテスト」と「科学的な機械的テスト」のバランスが重要になってきます。この点は、オールペア法や直交表であっても強さと品質のバランス、組み合わせテストを実施するときの因子や水準のバランスが重要になっています。バランスの良いテストを実施し、またそのための自分自身の成長と、周りのエンジニアを育成する必要があるでしょう。
ソフトウエア開発におけるソフトウエアテストのコストは、3割から4割程度を占めるものになっています*。ですから、テストを制することがソフトウエア開発を制することにつながるといっても過言ではありません。ソフトウエアテストにおいて、エンジニアはいつも悩み、苦労しながら、開発現場でテストを実施しています。
古くて新しい問題であるソフトウエアテストを効率よく、科学的に実施して、いろいろな問題を解決していきましょう。次回は「番外編」として、FAQ形式で用語解説やそれぞれの目的、制約を見ながら、本連載を通して考えてきたソフトウエアテストの本質を整理していきます。
* 情報処理推進機構(IPA/SEC)『ソフトウエア開発データ白書 2014-2015』pp.222-223.
OKI(沖電気工業) シニアスペシャリスト、エバンジェリスト。博士(工学)。
ソフトウエアの開発支援・教育に従事。電子情報振興協会(JEITA)専門委員会の委員長や情報処理振興機構(IPA/SEC)などの委員多数。三重大学などの非常勤講師も務める。エンタープライズ系と組み込み系におけるソフトウエア開発の知見融合が関心事。
共著書に『定量的品質予測のススメ』(オーム社、2008年)、『プログラミング言語論』(コロナ社、2008年)などがある。
今回は連載の総集編として、ここまでで解説してきたポイントをFAQ形式でまとめてみました。本稿を、ソフトウエアテストで「考え過ぎた」ときに、リファレンスとして使ってみてください。詳細を確認したい場合は連載各回の解説を確認してみましょう。
組み合わせテスト実施時の判断のコツは分かったけれど、どのくらいの「強さ」で、どの手法を組み合わせればいい? 筆者の経験から、判断基準やテストのPDCAにおける「トレードオフ」の正しい悩み方、賢い対策の考え方を紹介します。
オールペア法や直交表は組み合わせテストの品質を一定に保ち、テストケースを合理的に削減できる利点を持ちます。しかし、ツールでやみくもにテストケースを削減してはいけません。そこには勘も経験則もコツも必要です。筆者がコツを伝授します。
あらゆる条件を網羅したテストを実行することは現実的ではありません。しかし、職人技と勘、あるいは闇雲にテストツールに頼っても、科学的に品質を保証できません。最小のコストで品質を保証するための手法と、その考え方、制約がどのようなものかをじっくり見ていきましょう。
手法やツールだけでなく、そもそもテストとは何か、トレードオフを適切に判断するために必要な知識は何かをじっくり考えてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.