直交表を利用した組み合わせテスト(2) http://www.ark-web.jp/sandbox/wiki/254.html

直交表を利用した組み合わせテスト(2)

直交表を利用した組み合わせテストで課題としていた件に関して調査結果をまとめる。

[edit]

そもそも直交表をつかったテストのポリシーとは?

ソフトウェア・テスト PRESS Vol.2

ソフトウェアテストは、簡単にいうと「お客様の要求が実現されているかを確認するプロセス」のことです。お客様の要求というと漠然としたものと思われがちですが、現実世界では、システムへのインプットに表れます。ここで、インプットに着目し、操作はいくつあり、その実施順番は何通りあり・・・・・・・と考え出すと、とたんにテスト項目は無限大になり発散してしまいます。そうではなく、お客様の要求、平易な言葉で言い直せば「したいこと=結果」に着目して、そこからテスト項目を作成していくようにするのです。(...)このようにして「結果」に着目してそこからテスト設計を行うとテスト項目数を大幅に減らすことができるのですが、その一方で、まったく予期していない使われ方をした場合の問題に対しては「結果」の想定ができていないためにテスト漏れが発生することになります。そこで、これらのテスト手法に加えて、全体を網羅的にカバーする組み合わせテストが必要になってきます。(文中の省略は筆者による)

つまり、直交表による組み合わせテストは

という位置づけのようです。

[edit]

直交表を使った組み合わせテストの方針

ソフトウェア・テスト PRESS Vol.2 によると、

Webサーバ、Webブラウザにおいては、3機能(≒因子)以上の組み合わせで25~30%のバグが見つかっている(4機能以上の組み合わせで発生するバグは5~9%)。MozilaやApacheの開発においては多人数がバラバラに開発したものをインテグレートしているため組み合わせに対する統一した仕様が不足しているのかもしれません。

とのことで、Webアプリケーションもこれがあてはまるかもしれない。ので、3機能間での組み合わせテストをする必要がアプリケーションによってはある。しかし、3機能間すべての組み合わせテストを行う方針にすると、直交表でテストする場合の数十倍のテスト項目が必要になる。

そこで、

というのが効率的だそう。

[edit]

直交表によるテスト設計の流れ

  1. 因子・水準の決定
    1. 因子の選び方
    2. 水準の選び方
  2. 直交表の作成
    1. 直交表サイズの決定と選択
    2. 選択した直交表の多水準直交表への変形
  3. 因子・水準の割り付け
  4. 禁則の回避
  5. 完成した直交表のチェック
[edit]

因子・水準の決定

因子・水準の決定はテスト品質を決める重要なフェーズ。最も神経を集中して、知恵を集める必要がある。

[edit]

因子・水準とは?

因子とはテスト対象となるパラメータ、要素のこと。
水準とは因子に許可される値の数のことで、例えば、性別であれば男、女の2種の値なので2水準。じゃんけんであればグー、チョキ、パーの3種の値なので3水準となる。

[edit]

因子の選び方

一般に直交表においては、因子が増えても、増えるテスト項目数は「その因子が持っている水準の数程度」となる。

テスト総数 = 因子Aの水準数 + 因子Bの水準数 + 因子Cの水準数 + ・・・

因子を絞り込めばテスト数はさらに少なくてすむけど・・・?

テスト対象の機能のみに着目せず、次のことも因子に検討する。

[edit]

水準の選び方

次の手順で選ぶ

重要な注意事項

異常値のテストは

[edit]

直交表の作成

[edit]

直交表の種類

直交表には2水準系、3水準系、混合系などがあり、それぞれに代表的なものがある。
※ 直交表には全部で26種類しかないらしい(作れそうだけど・・??)

Ln(n=自然数)はn行からなる直交表を意味します。
代表的な直交表の種類は

参考:参考:統計に関するミニ知識所初級編

L4、L8、L16、L32、L64、L128、L256といった2の倍数で直交表の列数が増えていくのが2水準系直交表、L9、L27、L81、L243のように3の倍数で増えていくのが3水準系直交表、これらを組み合わせて作ったL18、L36といった直交表を混合系直交表という。

[edit]

直交表サイズの決定と選択

ソフトウェアテストでは通常2水準系を利用する。理由は

サイズの決定はテストしたい機能が保有する因子・水準の数から決定する。

サイズの見積もり方法には

の2種がある。

2因子間網羅率度100%からの見積もり
保有する水準数が一番大きな因子と次に大きな因子の水準数を掛け合わせる。もし、水準が2のべき乗でない場合は、2のべき乗に繰り上げて計算する。例えば、用紙サイズ(6種類)、用紙方向(2)、両面(2)、拡大縮小(4)、カラーモード(3)なら8(6)×4=32個のテストが必要ということになる。あまりに大きな水準を持つ因子がある場合にこの見積もりを使うと巨大な直交表が選択されてしまう。その場合は抽象化によって因子の水準を小さくする(抽象化については後述)。
自由度からの見積もり
突出した大きな因子がなく、2~3水準しかない場合に使う(この場合、どんなに因子が増えてもサイズが変わらないことになるから)。
因子Aの自由度=因子Aの水準数 - 1
で、この場合、直交表のサイズは
自由度の総和 + 1 = Σ(各因子の水準数 - 1) + 1
になる。2因子間網羅率100%の例で考えると、
(6-1) + (2-1) + (2-1) + (4-1) + (3-1) + 1 = 5 + 1 + 1 + 3 + 2 + 1 = 13
ここから2水準系直交表で最も近いL16を選択する。

例のように、二つの見積もり方法は違う結果を出すことがある。多くの場合、2因子間100%からの見積もり>自由度からの見積もりという関係になる。

[edit]

選択した直交表の多水準直交表への変形

2水準系直交表のままでは2つの値(2水準)の因子しか割り付けられないので、多水準が入る列を持つ直交表(多水準直交表)に変形する。

変形は以下の手順で行う。

例えば、4水準が欲しい場合、4水準の自由度は 4 - 1 = 3なので、3列を合体させることで実現できる。L8直交表でやってみると次のようになる。

L8直交表1234567
10000000
20001111
30110011
40111100
51010101
61011010
71100110
81101001

変形後L8直交表1234567
10000000
20001111
30110011
40111100
51010101
61011010
71100110
81101001

1~3列を合体させた列が(000,011,101,110)の4水準になる。
また、

ただし、各直交表毎に合体させられる列は決まっている

[edit]

次回の内容(予定)

[edit]

参考

投稿者進地 | パーマリンク

| append.gif

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-12-20 (木) 14:14:30 (6324d)

アークウェブのサービスやソリューションはこちら