ギークスジョブでは、新型コロナウイルス感染症の影響を鑑み、現在実施している【個別説明会】【各種イベント・セミナー】【顧客企業様との商談打ち合わせ】について、一部を除き、オンライン対応を推奨させていただきます。
ユーザーの皆様、顧客企業様、当社社員の安全確保と、安定したサービスを継続的に提供させていただきたく、ご不便をおかけいたしますが、ご容赦くださいますよう、お願い申し上げます。

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

2020/09/24 (木) TECH

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

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

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

例としてスキャナーのドライバーのソフトウェアをテストする場合を考えてみましょう。スキャナーの動作を決めるパラメーターは【用紙サイズ・解像度・色】の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パターンをテストしておけばバグのほとんどを洗い出せるのです。このように効率的な組み合わせを示した表が直交表です。因子と水準の数を変えたいくつもの直交表が用意されています。


参考:https://www.monodukuri.com/gihou/article_list/47/直交表

直交表は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フリーランス専門エージェント
平均年収

840万円以上

日本最大級のITフリーランス専門エージェント
年間契約数

※2019年4月から
2020年3月の実績

11,606件

いきなりフリーランスとして活動するのは不安...という方へ

業界・専門知識の豊富なコーディネーターが、関東、関西、福岡で無料セミナーを実施しています

こんなお悩みはありませんか?

  • 自分のスキルでフリーランスになれるか不安
  • 安定した収入を得られるのか不安
  • 税金や保険などの手続きがどうなるのか知りたい

まずは、ギークスジョブの無料イベントに参加してみませんか?
まだ本格的に活動する予定がない方も、情報収集の手段として活用されています。
不安や小さな不明点を解消する場として、是非ご利用くださいませ。

イベント一覧を見る
上に戻る
geechs job

このブラウザは未対応です

当サービスは以下のブラウザでご覧いただくことを推奨しております。
また、より安全で快適にご利用いただくために
最新のバージョンでご覧いただくことを推奨いたします。
推奨ブラウザ:Google Chrome、Mozilla Firefox、Microsoft Edge、safari

Google Chrome で閲覧する