エムオーテックス株式会社が運営するテックブログです。

All-Pairs法の2因子間網羅を活用したテスト設計について

はじめに

こんにちは、品質管理部の森本です。
今回はテスト技法について説明させていただきます。
大量のテストパターンが考えられる中で、品質を担保しつつ現実的な工数に収めるためにAll-Pairs法の2因子間網羅を活用したお話をします。

All-Pairs法や2因子間網羅の詳細は下記の記事をご参照ください。(外部サイトになります) https://qiita.com/suin/items/0d38108ecae341c1700e

経緯

エムオーテックスのLANSCOPEの機能の1つに、ファイル操作ログの取得があります。
これはWindowsOSやmacOSなどのデバイス上でユーザーが実施したファイル操作(ファイル作成、コピー、削除など)をログとして取得するものです。
ファイル操作ログは他の種類のログに比べて、取得できるパターンが非常に多いことが特徴です。

ファイル操作ログに限らずですが、これまで新バージョンでのテストパターンを検討する際には、 まず過去のバージョンのテストパターンを引き継ぎつつ、新バージョンで必要になるテストパターンを追加する。という方法をよく使用しています。
この方法に加えて、改めてファイル操作ログについて考えうるテストパターンを一から洗い出すことにしました。

テストパターンの洗い出し

図①:因子・水準の洗い出し(一部抜粋)

まず5W1Hの考え方を応用し、ファイル操作ログのテストパターンを考えるのに必要な因子として、以下を洗い出しました。

  • 「OS(どのOSで)」
  • 「環境(どんな環境で)」
  • 「From/To(どこから・どこへ)」
  • 「ユーザ(誰が)」
  • 「対象(なにを)」
  • 「操作(どうした)」

次にこれらの各因子に対して、水準(因子がとりうる値)を洗い出しました。
例)「OS(どのOSで)」列については、LANSCOPE エンドポイントマネージャー オンプレミス版でサポート対象としているmacOSを記載しました。
  ※サポート対象のOSについては、2023/2/2 現在の情報になります。
  ※画像の下にも水準の記載は続いています。

各因子の有効な水準の数は以下の通りです。

因子 水準の数
「OS(どのOSで)」 8
「環境(どんな環境で)」 6
「From/To(どこから・どこへ)」 36
「ユーザ(誰が)」 21
「対象(なにを)」 16
「操作(どうした)」 112

また「From/To(どこから・どこへ)」列については、実際には「From(どこから)」列と「To(どこへ)」列に分ける必要があります。

プラン 概要 概算ケース数
①総当たり 全網羅で対応した場合のパターン 2,341,011,456
②純粋な2因子間網羅 OS~From/Toまでの二因子間網羅、ユーザから操作までの2因子間網羅パターン 41,933
③2因子間網羅+各因子・水準の優先順を考慮 ②の優先度高、中のみを対象とした二因子間網羅パターン ※ただしOSの優先度低は含む 9,360

上記の表について説明します。

①総当たりの場合
洗い出した各因子間の水準の組み合わせを全網羅する場合のパターンでは、8×6×36×36×21×16×112で、なんと「2,341,011,456」件もの組み合わせが存在することが分かりました。
とてもじゃないですが、現実的にテスト実施ができるボリュームではありません。
品質はしっかりと担保しつつ、工数・コストを削減する工夫が必要です。

②純粋な2因子間網羅の場合
そこで組み合わせ数を絞るための手法として、All-Pairs法の2因子間網羅を適用することを考えました。
純粋に2因子間網羅を適用すると「41,933」件と、かなり組み合わせ数を削減することができました。
ただ、今回のケースでは元々の各因子の水準の数が多いため、純粋に2因子間網羅を適用してもまだ組み合わせ数としては多いです。

③2因子間網羅+各因子・水準の優先順位の考慮した場合
次に、各因子・水準の中でもより重点的にテストすべき箇所があると考え、優先度を付けることにしました。
優先度については、以下の考えを元に付けることにしました。

  • ユーザーがよく利用される機能
  • 過去の不具合事例から、不具合が発生する可能性が高いと思われるもの

これらをインプットとして、一部の因子と水準(優先度:高)については総当たりとしつつ、それ以外の因子と水準を2因子間網羅とする。といった案や、一部の因子と水準(優先度:高、中)のみを2因子間網羅とする。といった案を考えました。

最終的には、③で検討した中の「一部の因子と水準(優先度:高、中)のみを2因子間網羅とする」という案を採用し、テストパターンを「9,360」件まで削減することにしました。

「9,360」件という件数も決して少なくはないですが、これ以上削減すると確認すべき部分を削ることになり、品質を向上させたいという大元の目的からも外れるため、この案を採用しました。

おわりに

過去にソフトウェアテスト技法に関する書籍を読んで、All-Pairs法については知識として知っていましたが 実際に業務で活用できる機会がなかったので、今回初めての経験でした。
知識として知っていることも大切ですが、実際に手を動かすことで更に理解が深まったと思います。
テストエンジニアとして貴重な経験になりました。

QCDのバランスを考えて、どの案で進めるかを検討するには難しい判断が要求されますが、テスト設計を考える醍醐味でもあります。
「お客様により高い価値をより早く提供する。」
この価値観を大切にして、これからもより良い製品をお届けいたします。