テストパターンを効率化!直交表でテスト工数を最低限に!

ソフトウェアやハードウェアのテストパターンをどのように作っていますか?パラメーターの組み合わせを網羅しようとするとテストパターンは膨大になってしまいます。すべてのパターンをテストする時間はないけれども重要なパターンは押さえておきたい、というときに役に立つのが直交表です。

すべての組み合わせをテストするのは非効率

1_data

例としてスキャナーのドライバーのソフトウェアをテストする場合を考えてみましょう。スキャナーの動作を決めるパラメーターは、用紙サイズ、解像度、色、の3つとします。そして用紙サイズにはA4/B5、解像度には普通/きれい、色には白黒/カラー、とそれぞれ2つの選択肢があるとします。

全部の組み合わせパターンは2×2×2=8種類になります。8パターンのテストをするくらいは簡単です。しかし仮にパラメーターが2倍の6つに増えたら、組み合わせは2×2×2×2×2×2=64パターンにも増えます。パラメーターが増えると組み合わせの数は指数的に増えていきます。それを全部テストしようとしたら、テストパターンは無限大になってしまうのです。

そもそもすべての組み合わせをテストする必要はあるでしょうか? 手間がかかるわりにはバグをあまり検出できないという結果になってしまいそうです。ではどうすれば効率的にテストをおこなうことができるのでしょうか。

効率的な組み合わせを示したのが直交表

2_scaner

直交表とは、パラメーターの効率的な組み合わせが書かれた表です。先ほどのスキャナードライバーの例で説明しましょう。

スキャナーの3つのパラメーター(用紙サイズ、解像度、色)を、直交表の用語では因子と呼びます。そしてそれぞれの選択肢(A4/B5、普通/きれい、白黒/カラー)を水準と呼びます。スキャナードライバーには、3因子2水準の組み合わせパターンがあります。

3因子2水準用にL4直交表という表があります。それに書かれた組み合わせに当てはめると、スキャナードライバーのテストパターンは下の右の表のようになります。

Table1

8パターンのテスト項目が4パターンに減りました。この4パターンをテストしておけばバグのほとんどを洗い出せるのです。このように効率的な組み合わせを示した表が直交表です。因子と水準の数を変えたいくつもの直交表が用意されています。
参考:https://www.monodukuri.com/gihou/article_list/47/直交表

直交表は2因子の組み合わせを網羅している

なぜ直交表を使うとテストパターンが減るのに十分なテストができると言えるのでしょうか。直交表の原理を説明します。

直交表は「不具合が起こる要因のほとんどは2つまでの要因の組み合わせによるものだ」という考えに基づいています。3つ以上の偶然が重なって起こる事件というのは、世の中には滅多にないのです。(ただし後述の最悪条件の組み合わせは除きます)

先ほどのスキャナーの例だと、A4-きれい、A4-普通、A4-白黒、A4-カラー、といったようにA4に対して2つの因子の全ての組み合わせがあります。白黒に対しても、白黒-B5、白黒-A4、白黒-普通、白黒-きれい、というように2つの因子の全ての組み合わせがあります。つまり2つの因子の組み合わせを網羅しています。2つの因子の複合条件によって起こるテストをしておけばほとんどのバグを検出できるのです。

ただし、システムの負荷が最大となる組み合わせ(最悪条件の組み合わせ)は別にテストしておく必要があります。上の直交表には、使用するメモリーの量が最大になるであろう、A4-きれい-カラーの組み合わせは含まれていません。テストパターンを追加するか、カラーと白黒を入れ替えるかして、負荷が最大となるテストパターン(最悪条件の組み合わせ)を取りこぼすことがないようにしておきましょう。

次のページ:
数多ある組み合わせみ直交表で最低限のテストで済む?

 

この記事を書いた人:あべっかん

IT企業の組み込みシステムの部門で主にテスト工程を担当するエンジニア。エンジニア向けの記事やコラムの執筆も行っています。また、四人の子どもの父であり、子育て・教育ブログも書いています。http://abekkan.com/

関連する記事

facebook

案件情報や最新記事をお届けします。
ぜひチェックしてみてください。