JaSST’14 Tokyo	

直交表とオールペア法の並行運用によるソフトウェアテスト
手法と強さ、因子、水準の選択ガイドライン
五味 弘 OKI
辻村 浩 OKI
小池 宏道 OKI
須田 健二	 群馬高専	

内容	
1．はじめに(組合せテストの概要)	
因子と水準の抽出	
組合せとテスト回数	
これまでの組合せテスト	
2．直交表	
定義	
ソフトウェアテストへの適用	
直交表生成ツールGalois	
3．オールペア法	
定義（カバリングアレイ）	
オールペア法ツール PICT	
4．直交表とオールペア法の比較	
因子や水準の制限	
テスト回数、網羅率、網羅効率	
5．直交表とオールペア法の使用のコツ	
因子と水準の抽出、強さや手法の決定	
事例紹介	
既存の組合せテストからの移行
評価
6. おわりに	2

はじめに（組合せテストの概要）	
¡ ソフトウェアテストにおける組合せテスト	
l 主にブラックボックステストでの組合せテスト	
l すべての組合せのテスト→ 膨大なテスト回数	

l 組合せテストの効率化	
¡ すべての組合せ→ 組合せを限定してテスト	
l 組合せの限定方法 → 直交表とオールペア法¡ 効率的な組合せテストのための方法	
l 因子と水準の抽出l 直交表とオールペア法とそのツールの使用	¡ 直交表生成ツール、オールペア法ツール	

l 並行運用とそのガイドラインや事例	
3

組合せテスト – 因子と水準の抽出 	¡

用語の定義（実験計画法の用語を使用）
l
l
l

因子 --- テスト対象の項目
水準 --- テスト項目の取り得る値（バリエーション）
強さ --- 基準とする水準組合せの因子数
¡l

¡

例. 強さ 3 とは任意の3個の因子の水準組合せがすべて出現していること

禁則 --- 組合せテストに出現しない水準の組合せ組合せテストの準備（因子と水準の抽出）	
l

因子と水準の抽出¡ テスト対象からテストの因子と水準を抽出	

l

因子と水準の妥当性確認
因子の抜け・漏れがないことを確認	¡ 因子の重なりがないことを確認	
¡ 各因子における水準の同値分割・境界値の妥当性を確認¡l

因子と水準のバランスの調整¡

因子数や水準数に極端なばらつきや多数の禁則が出現するときは調整ll

例. 水準が連続値であれば、範囲を調整する
例. 特定の水準値の状態を持った因子を作成（例. 状態が a である因子 A）

4

組合せテストの回数	¡

抽出した因子と水準の全組合せテストの回数	
因子数が m で i番目の因子 fi の水準数を qiとすると	
l 全組合せのテスト回数 n は
n = q1 x q2 x ・・・ x qm となる。	
l¡ 実際は禁則処理分を除く必要があるl

膨大な数になる¡ そこで全組合せテストを実施せずに、何らかの方法でテスト回数を制限していた	

5

これまでの組合せテスト	¡ デシジョンテーブルや状態遷移表などを使用
l または頭の中で同値分割l 経験的に組合せを削除して回数を減少させていたl 同時に禁則処理も実施していた¡ しかしテストが巨大になると限界→ 直交表やオールペア法	
1

因子	性別年齢曜日水準	諸割引

男性
女性
それ以外
０～１２
１３～４９
５０～５９６０～
それ以外
水曜日
他の曜日
それ以外
年齢
レディなし

2345617189101111111
1111111111

入力エラー

デシジョンテーブル	

11
1
1

1

1

1

状態遷移表	

イベントe状態se1 e2 e3

s1-

s2-

s2s1-

s3

s3-

s2s1

1

実験項目
テストケース	

因子	

水準	
6

直交表 Orthogonal Array	¡ 直交表 OA(n,m,q,t)直交表の定義	q個の水準を持つ m×n
行列で、どの t 個の行を取っても、水準の組合せが同数個出現する	

n --- 大きさ、テスト回数	m --- 因子数、テストデータの項目数	
q --- 水準数、テスト項目の値の種類数	
t --- 強さ、テスト項目の組合せ数		同数個の出現のことを均一出現と呼ぶ	

¡ OA(8,4,2,3)の例	

1回因子１因子2因子3因子42回
00003回
00114回01015回01106回
1001

7回
1010

8回
11001111

どの3行を取っても、000, 001, 010, 011, ・・・,110, 111が同数個（今回は1個）出現する	
（参考）直交表は実験計画法に使うために考えられた表で、実験では推定，分析を行うためには、この均一出現は必須になる性質である。	

7直交表とソフトウェアテスト	
直交表の列が、ソフトウェアテストのテストケースに対応	
1回目のテストでは
1回 2回 3回 4回 5回 6回 7回 8回因子1の値を 0,
因子１00001111
因子2の値を 0,因子200110011
因子301010101
因子3の値を 0,因子401101001
因子4の値を 0を入力として実施する。	 テストケースの入力部	
この直交表は強さ3であるので、任意の3個の因子の水準組合せが平等に同一個数出現することを保証して、テストが実施できる。	

→ いわゆる3因子間の網羅率100%を保証	

8

(参考) 直交表の表記 OA と Ln
¡

直交表 OA(n,m,q,t)¡

Ln(qm) = OA(n, m, q, 2)

n --- 大きさ、テスト回数	m --- 因子数、テストデータの項目数	
q --- 水準数、テスト項目の値の種類数	
t --- 強さ、テスト項目の組合せ数	

強さを2に限定した直交表の表記	
l 例. L81(340)
サイズ81、因子数40、水準数3、強さ2の直交表	
OA(81,40,3,2)と同じ	• L16 や L32 はサイズのみを示した表記法	
l

9

（参考）教科書等の既存の直交表について	¡

既存の直交表に無理に合わせて使用l

ソフトウェアテストを既存の直交表に無理に合わせていた¡ ソフトウェアテストに適した直交表を作るという考えはあまりなかった¡ 直交表の生成方法はあまり知られていない¡ その結果、無駄な実験やテストをしていた¡

直交表の強さは 2 のみが使われていた
多くの教科書等にある既存の直交表は強さ2の直交表であるので、強さ2の直交表が使われていたl 強さ3以上の直交表は使われていないことが多いl10直交表による組合せテストの効率化	
¡ すべての組み合わせでソフトウェアテストをするのは膨大な回数になる	
¡ 直交表では強さを制限することで回数を減少	
l

全組合せテストは、強さを因子数と同じにすることである	¡ 因子数 8個、水準数3個で、すべての組合わせは 3 の8乗 = 6561個になる。	

¡ 直交表では、強さ 2 の直交表を用いると27個, 強さ 3

でも 81個	対象	全組み合わせ	

強さ2の直交表	

強さ3の直交表	

8因子 3水準	

6,551

2781

10因子 4水準	

1,048,57664

256

16因子 5水準	

1500億個以上	

12562511直交表生成ツール Galois – 紹介
直交表生成ツール Galois (ガロア)¡ll

多因子、多水準、多強度、混合水準の直交表を生成	例.
¡OA(243, 20, 3, 3)l¡OA(128, 11, 2, 4)
l

¡l

11因子 2水準 強さ4 サイズ 128 の直交表	

OA(32, ((1, 8), (8, 4)), 2)ll

20因子 3水準 強さ3 サイズ243の直交表	

1因子8水準と8因子4水準の混合で強さ2サイズ 32の直交表	

多水準の直交表も生成できるので、（よくやるように）2水準に無理にマッピングする必要はない	
強さも任意の強さが生成できるので、対象のソフトウェアに応じた強さのテストが可能 	

12直交表生成ツール Galois – 実行例
Galois GUI

Galois CUI

名前,五味,須田,辻村	 
年齢,20台,30台,40台,50台	 
性別,男性,女性	 
趣味,漫画,旅行,プログラミング	

テスト項目の入力ファイル	
テスト項目ファイルを入力にして、テストケースを生成	

入力画面	
m,q,t を入力して、直交表を生成	

>galois2013	  input.csv	  3	  名前	 年齢	 性別
五味	 20台	 男性
五味	 30台	 女性
五味	 40台	 男性
五味	 50台	 女性(snip) 	  	  須田	 20台	 男性
須田	 30台	 女性
須田	 40台	 男性
須田	 50台	 女性(snip)PICT 互換！		 趣味	 	 	 漫画	 	 	 旅行	 	 	 プログラミング	 漫画	 	 プログラミング	 漫画	 	 	 漫画	 	 	 旅行	 	 	 	 	 Galois CUI (出力画面)
13

（参考） Galois の直交表生成の原理	
G行列 	

原始既約多項式	
PG(2,2) x3=1+x2次元 2水準 	4因子 強さ3

原始既約多項式から、解の0乗から周期までの次数の解の式を求め、その係数を点とする。	

G1: 1 0 0
G2: 0 1 0
G3: 0 0 1
G4: 1 1 1

この点からどの3点を取っても一次独立であるように点を選択する。

有限体GF上で既約（低い次元の式で割り切れないもの、整数の素数に相当）で、原この点を求めるのが一般的には困難。	
始多項式（周期が最大になるもの）を原始既約多項式と呼ぶ。
なお、強さ2のときは点すべてが1次
なおPGの引数は(次元数、水準数)である。	 独立であるのでそのまま使える。	

G行列
どの3点を取っても一次独立な表	

直交表OA(8,4,2,3)
1回因子１因子2因子3因子42回
00003回
00114回
01015回
01106回
10017回
1010OA = G・θ

8回
11001111

但し、θは水準のすべての組み合わせを列にする行列 	θ＝	0 0 0 ... 1 10 0 1 ... 1 10 1 0 ... 0 1

注意: この生成方法は素体（水準数が素数）のときであり、拡大体（水準数が素数のべき乗）のときは別の方法になる。	

14

Galois の直交表の水準数の制限	
生成される直交表の水準数の制限(原始既約多項式を用いる方法での制限)	
(制限1) 水準数は素数か素数のべき乗に制限される。	
例. 水準数は2,3,4,5,7,8,9,11,13,16がある	
(制限2) 水準数の混合は素数とその素数のべき乗である水準数の混合に制限される。	
例. 水準数の混合は(2,4,8,16)や(3,9,27), (5,25)がある。 		
この制限は次に紹介するオールペア法と比較して、強い制限になっている。		
ツールでは、上記の水準数の条件になるようにダミーの水準を自動挿入している。しかし、この場合、均一出現ではなくなる。	

15

オールペア法	¡ 因子の2個（ペア）の水準組合せが少なくとも1回はテストに出現することを保証する組合せテスト	
l すべてのペアをテストするから、オールペア法	
l 直交表のように同数個の出現（均一出現）は保証しない	¡ ペア＝2個の因子の組合せであることから、直交表の強さ ２ に相当	

16

カバリングアレイ 被覆配列	
¡ オールペア法で2個に限定していた因子の組合せの個数を限定せずに一般化したもの。
¡ 任意の個数の組合せを対象にした配列をカバリングアレイ（被覆配列）と呼ぶ	
¡ CA(n, m, q, t)n --- 大きさ、テスト回数	m --- 因子数、テストデータの項目数	
q --- 水準数、テスト項目の値の種類数	
t --- 強さ、テスト項目の組合せ数	

直交表の表記と同じ	

¡ オールペア法は CA(n, m, q, 2)で表現される	

17

(参考) オールペア法による割り当て	因子	 水準	AB を割り当て	

Ａ	

０， １	

Ｂ	０， １	

Ｃ	０， １， ２	

因子	 1234A0

101

B001156CAC を割り当て	因子	 123456A

010101

B

00

1

1C001

1BC を割り当て	2

注意:
完全なバックトラックをしない割り当ての場合は、割り当てる順番でテスト回数が異なる。	

2

因子	 123456

A

0

1

0

101

B

001

10

1

C

00

1

12218

オールペア法ツール PICT¡ 名前はオールペア法になっているが実際はカバリングアレイを生成するツール	¡ Microsoft 製	
テスト項目ファイルを入力にして、¡ 機能が豊富	
テストケースを生成	¡ PictMaster>pict input.csv /o:3
名前	 年齢	 性別	 趣味	 により Excel
辻村	 20台	 男性	 漫画	 辻村	 30台	 男性	 プログラミング	 
から利用可
須田	 30台	 男性	 旅行	 
名前,五味,須田,辻村	 
年齢,20台,30台,40台,50台	 
性別,男性,女性	 
趣味,漫画,旅行,プログラミング	

入力ファイルは Galois と同じファイル

五味
五味
辻村
須田
辻村
須田
須田
辻村

Galois が PICT 互換になるように開発		 40台	 50台	 30台	 30台	 50台	 30台	 20台	 40台	 男性	 女性	 女性	 女性	 女性	 女性	 女性	 男性	 旅行	 	 旅行	 	 旅行	 	 漫画	 	 プログラミング	 	 プログラミング	 	 旅行	 	 プログラミング	

PICT (出力画面)
19

オールペア法ツール

PICT の特徴	
豊富な機能
・禁則処理（制約条件定義）	
テストに出現しない組合せを制約条件に記述することで生成をしない		
・無効値テスト	
無効値同士の組合せが生成されないようにする（無駄なテストはしない）		
・重み付け	
特定の値を重点的にテストしたいときに指定する（水準ごとに1つだけ指定できる）		
・原型ファイル	(1) パラメータ値(水準)を追加したい場合、既存のテストケースを再利用し、できるだけ	少ないテストケースを追加して作成する（追加されたテストケースをテストすればよい）	
(２) テストケースに必ず含まれるべき重要な組合せ指定したテストケースを作成する	20

オールペア法ツール

PICT の機能追加ツール（PictMaster）	
GUIを Excel化して、PICTを使いやすく高機能にしたツール	

岩通ソフトシステム（株）が作成して公開 	
http://sourceforge.jp/projects/pictmaster/(このページの図は上記より引用)

21

手法の選択のための直交表とオールペア法の比較	
直交表

カバリングアレイ(参考)オールペア法

ツール実装例

Galois

PICT(PICTMaster)

TConfigなど多数

強さ

任意

任意

2個因子の組合せ

同数回の出現少なくとも1回

左同強さ+1の網羅率

高い

PICTMasterでは目標網羅率を設定可能だが、低い

一般の実装では低い

テスト回数

オールペア法と比較して多い（しかし少ない場合もある）

直交表と比較して一般的に少ない（しかし多い場合もある）

左同テストの最小回数

Galoisではほぼ保証

PICT  では保証していない

一般的な実装では保証していない

水準数の制限素数か素数のべき乗に制
限制限はない左同水準数混合の制限

素数とそのべき乗の混合に制限制限はない

左同禁則処理均一出現を保証できない

PICT  では任意の禁則が可能

実装しやすい赤字で書いている部分は他の手法と比較して優れていることを示す	
22

直交表とオールペア法の比較

テスト回数での比較	
因子数

水準強さ

PICT

Galois比較△4321391332202740322781○322447227843334

2715221016103365

81

31221232

53410081○32221464

1134249243○42388△14342967298231616△5422216162323322142396432233364

6431116452423161743207

2566242632544333256○8243464

6829164○32

244764683846

512

○

○

○

○
○

○は Galois の方がテスト回数が少ない場合で、△は同数のテスト回数	23直交表とオールペア法の比較

強さ t + 1 の網羅率の比較	
PICTMaster

強さ

Galois

因子

水準

722 -

773.9

890.0  △

1522 -

1083.21696.2  -15221495.1

1696.2  △432 -1347.2933.3  -732 -1653.72782.4  -7322880.62782.4  ◎1134 -

249

71.9

243

89.8  ◎

113437588.5

243

89.8  ◎

1332 -

2060.12787.9  -1332873686.7
2787.9  ◎は Galois の方がテスト回数が少なく、かつ網羅率が高い場合△はほぼ同数の場合(参考) t + 2 の場合でもほぼ同様の結果が得られている	

◎目標

958088

回数網羅率

回数網羅率

比較

24

直交表とオールペア法の比較

網羅効率の比較	条件

PictMaster

因子数 水準数 強さ 回数 網羅率

1547135136152333445522222222101316202133355483.2
47.2
53.7
60.1
32.5
45.3
27.4
38.3

Galois網羅効率

回数 網羅率8.32 16
3.639
3.36 27
3.01 27
1.55 16
1.37 64
0.78 250.71 125

網羅効率

96.2
33.3
88.6
87.9
25.0
87.7
20.0
88.9

6.01
3.70
3.28
3.26
1.56
1.37
0.80
0.71

網羅効率とは、テスト1回当たりの網羅率であり、網羅効率 e = c / n である。但し C は網羅率で、n はテスト回数。
赤で囲んだ部分は網羅効率が高いことを示す

網羅効率もカバリングアレイの評価基準の一つになる	25

直交表とオールペア法の運用

並行運用と運用ガイドライン	¡ 方針	l コストを少なくするため、両者を透過的に運用	
l テストケースの生成結果を見て優れた方を採用	

¡ 対応	l 入出力インタフェースの統一	
l ツールの並行実行	PICT
因⼦子と値の⼊入⼒力力

名前、五味、須田、辻村、小池
趣味、旅行、カメラ、鉄道、漫画
年齢、10台、20台、30台、40台

入力形式の統一	Galois2013

ツールの並行実行	

テストケースの出⼒力力
名前 年齢 性別 趣味
五味 20台 男性 漫画
五味 30台 女性 旅行

出力形式の統一	l 支援窓口の一本化
l 運用ガイドラインの策定	
26

運用ガイドライン

強さと手法の決定基準	
直交表やオールペア法の知識がないメンバでは強さや手法の選択は困難であるため、決定基準が必要
プロダクト種別

例

強さ

手法

一般プログラム

データ処理

2 オールペア法

共通プログラム

ライブラリ

3 直交表

並列処理

WebサーバＡＰ

3 カバレッジアレイ

リアルタイム処理

組込み系の一部

3 カバレッジアレイ

対話処理

UIプログラム

2 オールペア法

データ解析処理

3項組のデータが多いＡＰ

3 直交表

重要プロダクト

品質要求が強いもの+1 カバレッジアレイ

基準例(文献[3]などや事例を元に策定)	

27

運用ガイドライン - 強さと手法の決定基準各パラメータの決定の流れ	
因⼦子

強さ２
プロジェクト重要度度
プロダクト種別
文献[3]も参考

強さ３
強さ４以上
従来基準

⽔水準
トレードオフPICT

因⼦子数・⽔水準数の平滑滑化

Galois2013

因⼦子と⽔水準の決定
禁則処理理

禁則処理理の削減・平滑滑化

⽣生成されたテストケース
発⾒見見したバグ

基準の⾒見見直し妥当性の評価

経験的・フィードバックによる定期的見直しを実施予定
28

運用ガイドライン(参考) オールペア法と直交表運用サイト	

運⽤用ガイドライン
A. 手法編
1. オールペア法
2. 直交表
B. ツール編
1. PICT/PictMaster
2. Galois2013
3. Galois2008

C. 運⽤用編
1. 強さの決定
2. ツールの選択
3. 因⼦子と⽔水準の決定
4. 禁則処理理5. テストの妥当性の評価
E. FAQ
F. 事例紹介
G. 問い合わせ29

適用事例	
¡

送受信システムの新OS移行テスト 	
強さ2のオールペア法	lWinXP/SP2

WinXP/SP3

WinVista/SP1

WinVista/SP2

IE6

IE7

IE8

IE9

OutlookExpress

WindowsMail

WinLiveMail

Outlook2010

送信側ICカードR/W

ICCardReaderA

ICCardReaderB	

受信側OS

WinXP/SP2

WinXP/SP3

IE6

送信側OS	

送信側Webブラウザ
送信側メール		

受信側Webブラウザ
受信側メール	

受信側ICカードR/W

l

¡

Win7

Win7/SP1							WinVista/SP1

WinVista/SP2

Win7

Win7/SP1

IE7

IE8

IE9

OutlookExpress

WindowsMail

WinLiveMail

Outlook2010

ICCardReaderA

ICCardReaderB								強さ2で37回のテスト、強さ3で97回のテストになった	

情報端末の状態遷移マトリクス 	
強さ3のオールペア法 	l 禁則処理が多い	l¡

金融端末制御 	l

強さ2、サイズ32の直交表 	
30

適用事例: 既存の組合せテストからの移行	¡

因子と水準の抽出	
l

システム試験仕様書¡ デシジョンテーブルもそれに類似したドキュメントもないとき	
¡ 用語の統一、用語辞書、短文化、情報補填	

l

デシジョンテーブル	¡ 因子・水準の独立性、因子・水準の抜け	

l

状態遷移図
¡ 状態の縮退（複数の状態を1個の状態で記述）	

¡

因子間・水準間の調整l¡

この調整作業は組合せテスト全体で効果があることを条件に実施	

手法・ツールの選定～実施l

ガイドラインを元にレビューを実施しアドバイス

手法以前の問題（因子と水準の抽出～調整）が多い`	31直交表とオールペア法の運用評価	
¡

因子と水準の抽出に効果
直交表とオールペア法の入力となる因子と水準の抽出に注目が集まり、経験的な方法から科学的・網羅的な方法で実施
l 同様に禁則処理の部分にも注目l¡

テストケースの削減に科学的根拠
過去は経験的に削減を実施していたl 強さや手法を変えることでテストや結果としての品質を制御l¡

テストケースの抜け・漏れ、重なりの排除l¡

上記の因子と水準の抽出と、それに基づくテストケースを生成する
ため、テストケースに抜け・漏れがなく、また重なりがないことを保証

ユーザのスキルツールとして利用するのは容易l 因子と水準、禁則処理で経験が必要l 生成されたテストケースの評価には、対象プロジェクトの知識が必要（どんなテスト手法を採用しても言えることであるが）	
l

32おわりに	
¡ まとめ	l 直交表とオールペア法を用いた組合せテスト	
¡ 因子と水準の抽出	¡ 過去の方法論との比較	

l 直交表とその生成ツール Galoisl オールペア法とそのツール PICT	l 直交表とオールペア法の比較	
l 並行運用のガイドライン¡ 事例紹介¡ 評価	

¡ 今後	l ツールのリファイン、データ収集、ガイドラインの精緻化	33