ある項目における組み合わせにおいて、なるべく網羅したいことはありませんか?
例えば「テストの項目で複数の設定を扱う場合、それらの設定の組み合わせた動作をさせたい(組み合わせテスト)しかし、多くの工数は確保できない」とか。
この要望を叶える方法の1つに二因子間網羅という考え方があります。
記事の内容は業務に特化していますが、興味ある方はご覧ください。
二因子間網羅って何?
そもそも二因子間網羅とは何なのか?について、説明します。
まず知っておかなくてはいけない単語があります。「因子」そして「水準」の2つです。
「因子」とは、変数名です。「項目名・条件」とお考え下さい。「水準」とは、因子が取りうる値です。「項目・条件の選択肢」のイメージです。
例を下表で示します。
因子 | 水準 |
用紙サイズ | A3、A4、B4、B5 |
濃さ | 濃い、ふつう、薄い |
カラー | 白黒、グレースケール、カラー |
印刷面 | 片面、両面 |
OS | Windows、Mac OS、Linux、iOS、Android |
ご理解いただけましたか?
「二因子間網羅」とは、この2つの因子の組み合わせを全て網羅するという考え方になります。
上表の「用紙サイズ」「濃さ」「カラー」「印刷面」を例に二因子間網羅をしてみましょう。下表のようになります。
※All-Pairs(Pair-wise)法という方法を使用しています。All-Pairs法については、こちらを参照ください。
No | 用紙サイズ | 濃さ | カラー | 印刷面 |
1 | A3 | ふつう | 白黒 | 片面 |
2 | A3 | 濃い | グレースケール | 両面 |
3 | A3 | 薄い | カラー | 両面 |
4 | A4 | ふつう | カラー | 両面 |
5 | A4 | 濃い | グレースケール | 片面 |
6 | A4 | 薄い | 白黒 | 両面 |
7 | B4 | ふつう | グレースケール | 両面 |
8 | B4 | 濃い | カラー | 片面 |
9 | B4 | 薄い | 白黒 | 片面 |
10 | B5 | ふつう | カラー | 両面 |
11 | B5 | 濃い | 白黒 | 両面 |
12 | B5 | 薄い | グレースケール | 片面 |
上記の表を見てみると、2因子間の網羅が100%であることが分かります。つまり、「用紙サイズ」と「濃さ」「カラー」「印刷面」、「濃さ」と「カラー」「印刷面」、「カラー」と「印刷面」の組み合わせがもれなく存在していることになります。
全ての組み合わせを網羅しようとした場合は「用紙サイズ:4種」「濃さ:3種」「カラー:3種」「印刷面:2種」で、72通りになります。全網羅と比べると、二因子間網羅の組み合わせ数は格段に少なくなっていることが分かりますね。
仮に 5分/項目 で項目を消化する場合、全網羅では 360分、二因子間網羅では 60分となり、5時間もの差が生じます。
二因子間の網羅だけで品質が保てるのか?
私は「万能ではありませんが、最低限の労力で一定以上の品質は保てる」と思っています。
ですが、業務におけるテスト項目の点で言えば、「多くの障害・欠陥(バグ)は、2因子間で見つかる」という定説があります。
これを裏付けるデータの1つに D.Richard Kuhnの研究結果があります。 D.Richard Kuhn は、①医療機器に搭載されているソフトウェア、②Webブラウザ、③サーバー用ソフトウェア、④NASAのデータベースの4つを対象に調査しています。その結果、1因子のみと2因子間で生じた欠陥(バグ)の合計は、①97%、②76%、③70%、④93%を占めることになりました。この研究結果から、全欠陥ではありませんが大半の欠陥数が検出できるといことが分かります。
なお、同研究結果で3因子間の場合を調査した場合、①99%、②95%、③89%、④98%になっています。検出率は上がりますが、組み合わせ数も増大するため、相当する確認時間も膨れ上がります。
そのため、コストとのバランスにはなりますが、二因子間の網羅でも一定以上の成果が見込まれ、実際に採用される理由の1つとされています。
ただし、充てられたリソースによって調整する必要がありますが、テスト対象によって「二因子間網羅よりも手厚く確認する必要性」が出てくる場合があると思います。
例えば、人の命を扱う「医療機器」では小さな欠陥が重大な損害を与えることもあります。心電図が正確に動作しなかったら、心拍が分からず誤った判断をしてしまう恐れがあります。また、一般的な製品においても既存機能よりは「新機能」に関わる箇所の方が欠陥が潜む確率が高いはずです。このようなことにも配慮して扱う必要があります。
省略した時の影響も考慮・検討しながら、ちょうどいいバランスを見出していくというのが良いでしょう。
まとめ
今回は、二因子間網羅の概要を説明しました。
ただし、二因子間網羅を用いれば問題なく、これで間違いないというわけではありません。(何事も頼り過ぎると、後々酷い目に遭います。)
必要な時に使えるように、あくまで考え方の1つの選択肢として頭に入れておいてもらえたらと思います。