テストパターンを効率化!直交表でテスト工数を最低限に!
ソフトウェアやハードウェアのテストパターンをどのように作っていますか?パラメーターの組み合わせを網羅しようとするとテストパターンは膨大になってしまいます。すべてのパターンをテストする時間は無いが重要なパターンは押さえておきたい、というときに役に立つのが直交表です。
合わせて読みたい記事
すべての組み合わせをテストするのは非効率
例としてスキャナーのドライバーのソフトウェアをテストする場合を考えてみましょう。スキャナーの動作を決めるパラメーターは【用紙サイズ・解像度・色】の3つとします。そして用紙サイズには【A4・B5】、解像度には【普通・きれい】、色には【白黒・カラー】とそれぞれ2つの選択肢があるとします。
全部の組み合わせパターンは2×2×2=8種類になります。8パターンのテストをするくらいは簡単です。しかし仮にパラメーターが2倍の6つに増えたら、組み合わせは2×2×2×2×2×2=64パターンにも増えます。パラメーターが増えると組み合わせの数は指数的に増えていきます。それを全部テストしようとしたらテストパターンは無限大になってしまうのです。
そもそもすべての組み合わせをテストする必要はあるでしょうか?手間がかかるわりにはバグをあまり検出できないという結果になってしまいそうです。ではどうすれば効率的にテストをおこなうことができるのでしょうか。
効率的な組み合わせを示したのが直交表
直交表とは、パラメーターの効率的な組み合わせが書かれた表です。
先ほどのスキャナードライバーの例で説明しましょう。
スキャナーの3つのパラメーター【用紙サイズ・解像度・色】を、直交表の用語では因子と呼びます。そして、それぞれの選択肢【A4/B5・普通/きれい・白黒/カラー】を水準と呼びます。スキャナードライバーには、3因子2水準の組み合わせパターンがあります。
3因子2水準用に、L4直交表という表があります。それに書かれた組み合わせに当てはめるとスキャナードライバーのテストパターンは下の右の表のようになります。
8パターンのテスト項目が4パターンに減りました。この4パターンをテストしておけばバグのほとんどを洗い出せるのです。このように効率的な組み合わせを示した表が直交表です。因子と水準の数を変えたいくつもの直交表が用意されています。
直交表は2因子の組み合わせを網羅している
なぜ直交表を使うとテストパターンが減るのに十分なテストができると言えるのでしょうか。
直交表の原理を説明します。
直交表は「不具合が起こる要因のほとんどは2つまでの要因の組み合わせによるものだ」という考えに基づいています。3つ以上の偶然が重なって起こる事件というのは、世の中には滅多にないのです。(ただし後述の最悪条件の組み合わせは除きます)
先ほどのスキャナーの例だと【A4-きれい・A4-普通・A4-白黒・A4-カラー】といったように、A4に対して2つの因子の全ての組み合わせがあります。白黒に対しても【白黒-B5・白黒-A4・白黒-普通・白黒-きれい】というように、2つの因子の全ての組み合わせがあります。つまり2つの因子の組み合わせを網羅しています。2つの因子の複合条件によって起こるテストをしておけばほとんどのバグを検出できるのです。
ただし、システムの負荷が最大となる組み合わせ(最悪条件の組み合わせ)は別にテストしておく必要があります。
上の直交表には、使用するメモリーの量が最大になるであろう【A4-きれい-カラー】の組み合わせは含まれていません。テストパターンを追加するかカラーと白黒を入れ替えるかをして、負荷が最大となるテストパターン(最悪条件の組み合わせ)を取りこぼすことがないようにしておきましょう。
因子と水準の数が植える場合
先ほどのスキャナードライバーの例では組み合わせの数が少ないため、直交表の効果があまり感じられなかったかと思います。
そこで今度は水準の数を増やしてみましょう。「自動ラーメン製造機」を作ってテストをする例を考えてみます。
自動ラーメン製造機では【スープの種類・麺の硬さ・油の量・麺の量】を選択できます。スープの種類は【醤油・味噌・とんこつ】の3つの因子から選択できます。麺の硬さ、油の量、麺の量も同様に3つです。全ての組み合わせは、3×3×3×3=81通りです。これらのラーメンを全部試食するのは大食いチャンピオンでも難しいでしょう。
これを3水準4因子の直交表に当てはめてみると、以下の表のようになります。
全部の組み合わせだと81通りもあったのに、直交表を使用すると9通りで済んでしまうのです。
ここでも2因子の組み合わせは網羅されていますから「大盛‐軟らかめ」のときに麺が伸びて器からあふれてしまう不具合とか、「とんこつ‐油少なめ」に設定しても油が多くなってしまう不具合などがあれば検出することができるのです。
ITフリーランスでテストパターンの工夫を活かす
テストのパラメーターが多くて困ったときは、直交表を使ってテストケースを削減することを考えてみてください。そして工夫することでテストを楽しんでしまいましょう。
ギークスジョブはITフリーランス専門エージェントとして20年以上にわたり、ITフリーランスのご支援を行っています。
フリーランスを初めて検討される方はもちろん、現在フリーランスとしての今後に不安を感じている方、今よりもっと充実したフリーランス生活を楽しみたい方は、ぜひお気軽に相談ください。ITフリーランス専任のキャリアアドバイザーがマンツーマンでサポートいたします。
▽ 無料登録(エントリー)はこちら
https://geechs-job.com/entry
まだフリーランスになることに迷いがある方へは、独立のご相談から承ります。これまでのご経歴やキャリアの目標をお伺いしながら、お一人おひとりに寄り添ったキャリアプランのご提案をいたします。
▽ 独立相談会への無料エントリーはこちら
東京:https://geechs-job.com/event/details/1
大阪:https://geechs-job.com/event/details/2
福岡:https://geechs-job.com/event/details/3
名古屋:https://geechs-job.com/event/details/189
その他のおすすめ記事
5分でわかるSSL通信 SHA-1、SHA-2の違いとは?|ITフリーランスをサポートするギークスジョブ
ITフリーランスの方のための『お役立ち情報』をご紹介しています。この情報のテーマは5分でわかるSSL通信 SHA-1、SHA-2の違いとは?です。geechs job(ギークスジョブ)では、「フリーに生きる」ためのノウハウをご紹介し、ご希望のキャリアやライフプランを実現できるように、サポート致します!
ITフリーランスの案件探しならgeechs job
IT業界・企業情報の専門知識を持ったコーディネーターが、あなたに合う案件をご紹介。
ITエンジニアとしてのキャリアに弾みを付けませんか?
- ・独立して新しいキャリアを築きたい
- ・スキルを磨いて、更なる高みを目指したい
- ・今よりも高い報酬を
ITフリーランスエージェントのgeechs jobが、あなたの未来に向けて伴走します。