Android の調べ  Lisp の調べ  鉄道の調べ  旅先料理の調べ  ビールコレクション

直交表の調べ

直交表とは

直交表とは2次元の表で、任意の行を n個選択して、選択した行の列毎の組を取り出したとき、 その要素の組み合わせが同数個出現している表です。このとき n を直交表の強さと言います。
実際の例として、以下の表を見てください。

例. 大きさ8(実験回数8回)、4因子、2水準、強さ3の直交表 OA(8, 4, 2, 3)

  1 2 3 4 5 6 7 8
  ---------------
1|0 1 1 0 1 0 0 1
2|0 0 0 0 1 1 1 1
3|0 0 1 1 0 0 1 1
4|0 1 0 1 0 1 0 1

これはどの3行を取っても、その列の要素の組み合わせは、(0 0 0), (0 0 1), ..., (1 1 0), (1 1 1)になり、 各組み合わせが同数個(この表では1個)出現しています。確認してみてください。

直交表の使い方

実験計画法や品質工学

直交表はどこに使うのでしょうか。
本来は実験計画法で使います。 ここではソフトウェアテストでの使い方を紹介します。

ソフトウェアテスト

ソフトウェアテストに直交表を使います。

それでは、ソフトウェアテストにどのように、この直交表を使うのでしょうか?
直交表を使う目的は、テストの効率化、テストコストの削減です。 もちろん、闇雲に効率化するのではなく、数学的な網羅性を保証してコストを低減することを目的としています。

この直交表では、どのような網羅性をソフトウェアテストで保証するのでしょうか?
これは「テストケースの入力として、テスト対象(この個数が因数)の値(この種類数が水準数)で関係(この関係する種類数が強さ)する組み合わせが均衡に出現する」という網羅性です。
この網羅性がソフトウェアテストにおいて、ちょうどいいのか、それとも弱すぎるのか、または強すぎるのかは、分かりません。

直交表はこのソフトウェアテストの網羅性を保証する低コストな方法を与えることができます。 ソフトウェアテストと直交表の関係は、上記の括弧書きで書いたように、直交表で言う「強さ」は上記の関係数であり、「水準数」は値の種類数であり、「因子」はテスト対象の種類数です。 そして「サイズ」または「実験回数」が試験項目数になります。

例えば、テストケースの入力として、相性診断システムを考えます。 性別、年齢、身長、体重、年収、趣味、家族構成、夢、希望、特技・・・などの各種の入力があります。この種類数が因子になります。 年齢で年上、年下、同年代といった値の種類数が水準数となります。 趣味と夢、希望、特技そして年収が同時にテストに関係していると思えば、これらの個数が強さになります。

発見した混合形直交表の例

1 サイズ256の混合形直交表(強さ2)
(1) 16水準7個 + 8水準12個 + 4水準20個 + 2水準6個
(2) 16水準7個 + 8水準13個 + 4水準2個 + 2水準53個

2 サイズ128の混合形直交表(強さ2)
(1) 16水準1個 + 8水準12個 + 4水準8個 + 2水準4個

3 サイズ1024の混合形直交表(強さ2)
(1) 16水準6個 + 8水準12個 + 4水準280個 + 2水準9個
実際の直交表データ 16x6-8x12-4x280-2x9-1024.txt (600KB)

直交表に関する誤解

多くの教科書やサイトで紹介されている直交表は強さを2に限定している直交表が多く、網羅性を制限しています。 例えば、L4, L8, L18, L128, L256などと書かれている直交表は強さ2に限定した制限された直交表です。 これらの直交表が、制限されている直交表と考えず、直交表のすべてであるかのような誤解された記載が多いので、注意してください。 但しこの制限が直ちに悪いということではなく、あるソフトウェアシステムのテストでは十分かもしれません。
この直交表作成ツールでは強さを2に限定せずに、任意の強さが設定できるようにしています。
またオールペア法も、制限された網羅性の保証になります。

直交表関連で発表した論文や文献

  1. 「現場で使うためのオールペア法、直交法の基本」最新記事一覧
  2. 五味弘: 現場で使うためのオールペア法、直交法の基本(5):Q&Aで読むソフトウエアテスト「オールペア法、直交表の基本」、@IT、2015/6/11.
  3. 五味弘: 現場で使うためのオールペア法、直交法の基本(4):組み合わせテストを現場で使うときの判断指針とPDCA、@IT、2015/5/29.
  4. 五味弘: 現場で使うためのオールペア法、直交法の基本(3):組み合わせテストを開発現場で使いこなすには?――考え方のヒントと5つのコツ、@IT(2015/4/28)
  5. 五味 弘:「現場で使うためのオールペア法、直交法の基本(2): 組み合わせテストを科学的に効率化する――手法とツール、品質保証のための道具 」、@IT(2015/3/20)
  6. 五味 弘:「現場で使うためのオールペア法、直交法の基本(1): ソフトウエアテストの考え方――本質、基本を知る」、@IT(2015/2/18)
  7. 須田 健二、五味 弘: 「直交表とオールペア法のテスト回数と網羅率について」、 情報処理学会第76回全国大会、6A-4(2014/3/13).
  8. 五味 弘、辻村 浩、小池 宏道、須田 健二: 「直交表とオールペア法の並行運用によるソフトウェアテスト−手法と強さ、因子、水準の選択ガイドライン−」、 JaSST2014 Tokyo(2014/3/7).

(参考) 原始既約多項式から直交表を作る方法

原始既約多項式から直交表を生成する方法を紹介します。

ここで原始既約多項式(*)の係数行列は以下の性質を持っています。

(性質)任意の行の組み合わせは、それぞれ1次独立になっています。
(制限)但し水準数は素数か素数のべき乗に制限されます。
(*) 原始既約多項式とは、多項式 f(x) が既約であり(因数分解できない)、解の n-1次以下のすべての多項式が含まれるものを言います。

水準数が2,4,8,16のように混合しているときは、ベースの2水準以外は同一空間上にない点(係数行列の行)を選ぶ必要があります。
また強さが3以上のときも同様に同一空間上にない点を選ぶ必要があります。
こうして選んだ点の行列をG行列と呼びます。強さ2で水準が同一であるときは係数行列がそのままG行列になります。
このG行列から、直交表は以下の式で生成できます。

OA = G・θ

但し、θはサイズが水準数のべき乗であり、要素には水準のすべての組み合わせを得られる1列の行列の集合です。
・は、各θの要素(1列の行列)を乗算して、その結果を並べたものです。例を参照してください。

例. OA(8, 5, 2, 2)は以下で得られます。

G = 0 0 1   
    0 1 0
    1 0 0
    1 0 1
    1 1 0
# 強さ2で同一水準であるので、原始既約多項式の係数行列がそのままG行列になります

θ = 0 0 0 0 1 1 1 1 
     0 0 1 1 0 0 1 1
     0 1 0 1 0 1 0 1

OA = G・θ = 0 1 0 1 0 1 0 1  
             0 0 1 1 0 0 1 1
             0 0 0 0 1 1 1 1
             0 1 0 1 1 0 1 0
             0 0 1 1 1 1 0 0

Android の調べ  Lisp の調べ  鉄道の調べ  旅先料理の調べ  ビールコレクション

Copyright © 2011-2015 GOMI Hiroshi All Rights Reserved