ペアワイズ法テストケース生成ツール「PictMaster」のカバレッジ指定を使う

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

前回はペアワイズ法テストケース生成ツール「PictMaster」の”無効値”機能について紹介しました。
今回はPictMasterの”カバレッジ指定”機能について紹介したいと思います。

2因子より多い組み合わせ数を指定する

#

テスト対象の因子の数が多く、因子間の影響が2因子間に限定できない場合には、因子の組み合わせ数を2よりも大きくしたいケースがあります。
2因子網羅のテストケースを効率よく生成するペアワイズ法ですが、2よりも大きい組み合わせ数を指定してテストケースを生成するとテストケース数があっという間に増大してしまいます。

以下の例で考えてみましょう。

因子が a, b, c, d, e の5個で、それぞれが2水準の値を持っている場合を想定します。
2因子間網羅のテストケースは以下のようになりました。
テストケース数は合計7個でした。

「環境設定」にて、組み合わせるパラメータ数を「3」に変更します。

3因子間網羅のテスケースは以下のようになりました。
テストケース数は合計13個でした。

2因子網羅に対して3因子網羅の場合はテストケース数がほぼ倍になっています。

因子・水準が多くなる場合は更にテストケース数が増えてしまいます。上記の因子のそれぞれの水準が3個の場合、4因子網羅のテストケースを生成するとテストケース数は100個にもなります。

カバレッジを指定してテストケース数を減らす

#

組み合わせ数を増やしつつ、テストケース数の増大を抑える方法をご紹介します。

因子が a, b, c, d, e の5個で、それぞれが2水準の値を持っている場合を想定します。

全体のテストケースの中で3因子間網羅のテストケースを80%とし、残りは2因子網羅でよい場合のテストケースを生成してみましょう。
「環境設定」にて次のように設定します。

  • 組み合わせるパラメータ数:2
  • ペアワイズ法:「カバレッジを指定して生成」を選択
    • 3-wayカバレッジ: 80%
    • 繰り返し回数: 8

生成されたテストケース数は合計8個になりました。

3因子網羅100%のテストケースを生成した場合では全テストケース数は13個でした。
今回3因子網羅のカバレッジを80%にしたことでテストケースが5個削減されています。

このように2因子網羅を確保した上で、3因子網羅を80%確保しつつ、テストケース数を大幅に削減することができました。

指定可能なカバレッジ数

#

「組み合わせるパラメータ数」はいくつまで指定できるのかを確認しました。
PictMasterでは1~4まで指定可能でした。
「環境設定」にて「組み合わせるパラメータ数」に値を設定すると「ペアワイズ法」の「x-wayカバレッジ」の項目の「x」の数値が自動的に変更されました。

例えば「組み合わせるパラメータ数」を「4」に設定した場合、x-wayカバレッジの「x」は組み合わせるパラメータ数にプラス1した「5」に自動的に変更されました。

まとめ

#

「カバレッジ指定」機能を使うことによって、組み合わせ数を増やしつつ、テストケース数の増大を抑えることができました。
PICTには他にも色々なオプションが用意されていて、PictMasterから利用可能です。
次回も別のオプションを紹介していきたいと思います。

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

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

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み (2022-12-08)
  2. AWS認定資格を12個すべて取得したので勉強したことなどをまとめます (2022-12-12)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  4. Backstageで開発者ポータルサイトを構築する - 導入編 (2022-04-29)
  5. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  6. Viteベースの高速テスティングフレームワークVitestを使ってみる (2022-12-28)
  7. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  8. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する (2023-01-16)
  10. Jest再入門 - 関数・モジュールモック編 (2022-07-03)