end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

HAYST法でソフトウエアテストを効率化

ソフトウエアテストを効率化できるHAYST法というものを見つけたので、今回は、その復習を行います。

HAYST(ヘイスト)法の特徴

まず、クーン(Dr. Richard Kuhn)という方によれば、アプリケーションの種類により多少の違いはあるものの、テストでの組合せ因子数とバグの発見率には次のような傾向があるそうです。

組合せ因子数 バグの発見率
2 70〜90%
3 90〜99%
6 100%

HAYST法では直交表を使用しますが、2因子間の組合せ網羅率=100%、L16以上の直交表を利用時すれば、3因子間の組合せ網羅率≧96% となる直交表の性質を利用することで、テストの効率化を実現します。

大きなサイズの直交表の作成方法

2水準系直交表では次のL4直交表が基本となります。※L4の「4」とは、テスト回数=4を表します。

A B C
1 0 0 0
2 0 1 1
3 1 0 1
4 1 1 0

他のサイズの直交表は、L4→L8→L16 ... L128→L256 のように拡張する為、ここでは L4→L8 の作成方法を解説します。

1. 各行をコピー
A B C
1 0 0 0
1 0 0 0
2 0 1 1
2 0 1 1
3 1 0 1
3 1 0 1
4 1 1 0
4 1 1 0
2. 新しい列を追加し、「0,1」を交互に割付
A B C D
1 0 0 0 0
2 0 0 0 1
3 0 1 1 0
4 0 1 1 1
5 1 0 1 0
6 1 0 1 1
7 1 1 0 0
8 1 1 0 1
3. 既存列と2の追加列のXORによる列の追加

A,B,C列と先程追加したD列で、排他的論理和(XOR)をとり、更に列を追加します。

A B C D E F G
AxorD BxorD CxorD
1 0 0 0 0 0 0 0
2 0 0 0 1 1 1 1
3 0 1 1 0 0 1 1
4 0 1 1 1 1 0 0
5 1 0 1 0 1 0 1
6 1 0 1 1 0 1 0
7 1 1 0 0 1 1 0
8 1 1 0 1 0 0 1

L8->L16 ,..., L128->L256 は、1〜3の手順を繰り返すことで作成できます。

直交表の大きさを算出

直交表の大きさ = ��(各因子の水準数 -1) +1

交互作用と多水準因子の割付

先程の手順の中では、A,D列のXORからE列を作成しています。このとき、A,D,E列には交互作用があると言い、多水準の因子を割付では交互作用のある列同士を結合します。

実際にA+D+E列を結合すると、次のように 000, 011, 101, 110 の4水準の列ができます。

A+D+E B C F G
1 000 0 0 0 0
2 011 0 0 1 1
3 000 1 1 1 1
4 011 1 1 0 0
5 101 0 1 0 1
6 110 0 1 1 0
7 101 1 0 1 0
8 110 1 0 0 1

このA+D+E列に3水準因子:色={赤,青,黄}を割り付ける場合、ダミー水準を用いて割付を行います。このダミー水準は新たな水準が増えた場合に利用します。

A+D+E B C F G
1 0 0 0 0
2 0 0 1 1
3 1 1 1 1
4 1 1 0 0
5 0 1 0 1
6 dummy_赤 0 1 1 0
7 1 0 1 0
8 dummy_赤 1 0 0 1
3因子間の組合せ網羅率を上げるには

HAYST法の特徴として「3因子間の組合せ網羅率≧96%」と書きましたが、3因子間の網羅率を上げる場合も交合作用のある列(A+D+E)に割り付けます。

組合せ網羅率を確認するには

組合せ網羅率を確認するには、ms-excelのピボットテーブルを利用するといいようですが、ピボットテーブル自体の作成方法は、今回、解説しません。

線点図による列の結合

結合する列の組合せを決める際に線点図をテンプレートとして利用することもありますが、ここでは触れません。

参考にした書籍など

http://hayst.com/default.aspx
HAYST法の公式サイト?。いつの間にできたんだろう。

ソフトウェア・テスト PRESS Vol.2
HAYST法の存在は、このソフトウェア・テストで知りました。

ソフトウェアテストHAYST法入門
HAYST法の考え方や実践法が分かりやすく書かれています。

http://www.jasst.jp/archives/jasst04.html
http://www.jasst.jp/archives/jasst05e.html

ソフトウェアテストシンポジウムでのHAYST法に関する発表論文