ペアワイズ法テストケース生成ツール「PictMaster」の直交表を使う

| 2 min read
Author: shuichi-takatsu shuichi-takatsuの画像

前回はペアワイズ法テストケース生成ツール「PictMaster」の”原型シート”機能(因子編)について紹介しました。
今回はペアワイズ法ではなく直交表を使って組み合わせテストケースを生成してみます。

直交表ってなに?

#

直交表とは,複数の因子・水準の組み合わせにおいて、任意の2因子について「水準の組み合わせが同じ回数だけ現れる」という性質をもつ”組み合わせ表”を指します。

複数因子・水準を組み合わせてテストする時、因子間に「交互作用」が存在すると、テスト結果が影響を受ける場合があります。(交互作用とは2つの因子が組み合わさることで発生する相乗効果のことです)
直交表の性質「水準の組み合わせが同じ回数だけ現れる」を使って、交互作用を相殺したり、交互作用の有無を判断することができます。
(詳しいことは「実験計画法」で検索すると情報を得ることができます)

直交表は全ての因子・水準をバランスよくカバーしてますが、そこまでバランスを気にしない場合、直交表の「水準の組み合わせが同じ回数だけ現れる」という条件を緩和させて、「水準の組み合わせが1回以上現れればよい」としてテストケースを作成する方法がペアワイズ法です。

3因子2水準の組み合わせテストケース

#

直交表を使って、3因子2水準の組み合わせテストケースを作成してみます。

PictMasterで直交表を使用するためには、環境設定の「生成方式」を「直交表」に設定します。
(生成方式の下の「直交表」の枠の中が選択可能になりますが、ここでは「サイズ優先」を選択しておきます)

直交表で作成したテストケースは以下のようになりました。

比較対象として、ペアワイズ法で作成したテストケースは以下のようになりました。

この程度の因子・水準数であれば直交表とペアワイズ法の結果に大きな差は出ません。

5因子2水準の組み合わせテストケース

#

2水準の因子を5個にしてみます。

直交表で作成したテストケースは以下のようになりました。

直交表なので、各列の水準の数は4個ずつの”同数”になっています。

比較対象として、ペアワイズ法で作成したテストケースは以下のようになりました。

直交表で生成したテストケース数は8個に、ペアワイズ法で生成したテストケース数は7個になりました。
組み合わせの条件が緩和されているので、ペアワイズ法のテストケース数の方が直交表のものよりも1個少なくなっています。

どちらを使うべきか?

#

直交表もペアワイズ法も組み合わせテストケースを効率よく生成する手法ですが、直交表の方が制約が厳しいものになっている分、テストケース数は多めに生成されます。
因子間の交互作用が無視できるケースではペアワイズ法でテストケースを生成する方がテストケース数の削減に寄与すると思いますが、交互作用が無視できない場合は直交表の利用を検討する必要があると思います。

まとめ

#

組み合わせテストケースの生成に「直交表」を使うことによって、全ての因子・水準をバランスよくカバーするテストケースを生成できることがわかりました。
PICTには他にも色々なオプションが用意されていて、PictMasterから利用可能です。
次回も別のオプションを紹介していきたいと思います。

ソフトウェアテストに関する技法やテクニックをまとめています。

テストに活用していただければ幸いです。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. ChatGPTのベースになった自然言語処理モデル「Transformer」を調べていたら「Hugging Face」に行き着いた (2023-03-20)
  2. ChatGPTに自然言語処理モデル「GPT2-Japanese」の使用方法を聞きながら実装したら想像以上に優秀だった件 (2023-03-22)
  3. 基本から理解するJWTとJWT認証の仕組み (2022-12-08)
  4. AWS認定資格を12個すべて取得したので勉強したことなどをまとめます (2022-12-12)
  5. 自然言語処理初心者が「GPT2-japanese」で遊んでみた (2022-07-08)
  6. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  7. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  8. 直感が理性に大反抗!「モンティ・ホール問題」 (2022-07-04)
  9. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  10. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)