組み合わせテストをオールペア法でスピーディに!
第1回 組み合わせテストの技法
はじめに-この特集のねらい
この特集では,ソフトウェアの組み合わせテストについての技法である「オールペア法」と,オールペア法を採用したテストケース作成ツール「PICT」の機能,およびその効果的な使い方を,多くの例を用いて解説していきます。筆者はPICTを実際のテスト業務に1年半以上使用してきました。そこから得られたノウハウも合わせて公開したいと思います。
ソフトウェアはさまざまな因子(パラメータ)の組み合わせにより,その挙動が違ってきます。これらパラメータの組み合わせを総当りで行うことはテスト件数の爆発を招き,実際に行うのは多くの場合,不可能です。どのようにすればテスト件数の爆発を招かずに,しかもテストの質を落とさない組み合わせをテストできるかが重要な課題となっています。
こうした課題を解決するために考え出された効率的な組み合わせテスト技法は,大規模,複雑化するソフトウェアの組み合わせテスト件数を大幅に削減することが可能な技法です。この技法には,直交表と,オールペア法の2つがあります。
この特集ではこのうち,オールペア法を取り上げています。その理由は,直交表を使う方法は単純な組み合わせの場合は問題はありませんが,パラメータの値により組み合わせることができない条件がある場合,扱いが急に難しくなります。これに対してオールペア法を採用した特定のツールでは,そのような場合でも難しさはなく,誰にでも扱えるという特長を備えているからです。
この特長を備えているオールペア法のツールが,MicrosoftのフリーソフトであるPICTです。
組み合わせテストとパラメータ数
パラメータの組み合わせがテスト結果に影響を与える場合がありますが,先にも述べたように,実際のテストでは時間や費用の制約から,そのすべてをテストすることはできないことがよくあります。テストでどのようなパラメータをとりあげ,無数にある組み合わせの中から,どのような組み合わせでテストを行うかが非常に重要となっています。
表1に,ソフトウェアの欠陥がいくつのパラメータの組み合わせで発生したかの例(※1)を示します。表の要因数の欄が,関係したパラメータの数を表します。
表1 欠陥に関係したパラメータ数の割合(%)
| 要因数 | 組込み機器 (医療用) | ブラウザ (Netscape) | サーバ (Apache) | データベース |
|---|---|---|---|---|
| 1 | 66 | 29 | 42 | 68 |
| 2 | 31 | 47 | 28 | 25 |
| 3 | 2 | 19 | 19 | 5 |
| 4 | 1 | 2 | 7 | 2 |
| 5 | 2 | 0 | ||
| 6 | 1 | 4 |
表1から,組込み機器(医療用)とデータベースシステムについては,2つまでのパラメータの組み合わせで発生した欠陥が90%以上を占めていることがわかります。一方,ブラウザ(Netscape)とサーバ(Apache)では,これが70%~76%となります。この違いはどこから来るのでしょうか。筆者は,ブラウザとサーバの開発形態がオープンソースということがその理由ではないかと考えています。
次に,筆者らが統合テストを担当したビジネスホンシステムでの実例を表2に示します。ビジネスホンシステムとは,企業のオフィスなどに設置され,アナログ,ISDN,IP外線などの各種回線と数十台のボタン電話機を収容し,顧客のニーズに合わせてさまざまなサービスを提供する構内交換システムのことです。
表2 ビジネスホンシステムでの実例
| 要因数 | 割合[%] | 累積割合[%] |
|---|---|---|
| 1 | 63.7 | 63.7 |
| 2 | 32.6 | 96.3 |
| 3 | 3.7 | 100 |
この例からも明らかなように,少なくとも筆者が担当したテストケースについては,ほとんどの欠陥が2つまでのパラメータの組み合わせで発生しています。パラメータの組み合わせを考えるときは,まずは2つのパラメータの組み合わせが全て網羅されるように考慮することが重要であるといえます。
- ※1)
- R.D.Kuhn et al.“Software Fault Interactions and Implications for Software Testing,” IEEE Transactions on Software Engineering, 30(6), June 2004
直交表の特徴
効率的な組み合わせテストの技法のひとつである直交表は,数字の入った2次元の配列であり,配列から任意の2つの列を選ぶと値のすべてのペアが同じ回数現れるという特徴があります。
表3 直交表の例
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
| 3 | 2 | 1 | 2 |
| 4 | 2 | 2 | 1 |
表3は,直交表特有の表現で L4(23) という4行3列で1と2の2つの値からなる直交表です。この表で各列はパラメータを意味し,ある列のある行の数字は,パラメータの値を意味します。
この表が,すべての値のペアを含んでいるか調べて見ましょう。方法は次のとおりです。
- (1) 1列目と2列目に着目し,1と2のすべての組み合わせがあることを確認します。
- (2) 1列目と3列目に着目し,1と2のすべての組み合わせがあることを確認します。
- (3) 2列目と3列目に着目し,1と2のすべての組み合わせがあることを確認します。
すべての値のペアを含んでいることが確認できたと思います。この方法ですべての組み合わせが確認できれば,表3がすべての値のペアを含んでいるということができます。
この方法は,もっと大きな直交表でも同じように適用できます。たとえば表4に示す7列からなる直交表 L8(27) では次のように確認します。
表4 直交表 L8(27) の例
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
| 3 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
| 4 | 1 | 2 | 2 | 2 | 2 | 1 | 1 |
| 5 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
| 6 | 2 | 1 | 2 | 2 | 1 | 2 | 1 |
| 7 | 2 | 2 | 1 | 1 | 2 | 2 | 1 |
| 8 | 2 | 2 | 1 | 2 | 1 | 1 | 2 |
- (1) 1列目と2列目を確認します。
- (2) 1列目と3列目を確認します。
- :
- (6) 1列目と7列目を確認します。
- (7) 2列目と3列目を確認します。
- (8) 2列目と4列目を確認します。
- :
- (11)2列目と7列目を確認します。
- (12)3列目と4列目を確認します。
- :
- (15)3列目と7列目を確認します。
- :
- (21)6列目と7列目を確認します。
この直交表で任意の2つの列を見ると,同じ値のペアが2回ずつ現れていることがわかります。この同じ値のペアが同一回数現れるという直交表の性質から,テストケースの数はオールペア法に比べて多くなります。
直交表を使った組み合わせテストでは,組み合わせたいパラメータ数と値の数に合わせて適切なサイズの直交表を選び,表の各欄に実際のテスト対象を割り当てます。直交表のサイズの種類は限られており,多くの場合,実際に必要とするサイズより大きなサイズの直交表を使用することになり,このこともテストケース数の増加につながります。
ただし,メリットもあります。直交表の性質から,2パラメータの組み合わせだけでなく,3パラメータの組み合わせについてもある程度カバーされます。可能な組み合わせのうち,どの程度までカバーされるかを網羅率といいます。直交表では3パラメータに渡る網羅率もそれなりに確保されます。これはオールペア法にはないメリットです。
-
組み合わせテストツール PictMaster
組み合わせテストツール PictMaster
Tracked : #1 やじゅ@アプリケーション・ラボ わんくま支局 (2009/04/17, 02:45)


