はじめに
こんにちは、品質管理部の森本です。
今回はテスト技法について説明させていただきます。
大量のテストパターンが考えられる中で、品質を担保しつつ現実的な工数に収めるために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のバランスを考えて、どの案で進めるかを検討するには難しい判断が要求されますが、テスト設計を考える醍醐味でもあります。
「お客様により高い価値をより早く提供する。」
この価値観を大切にして、これからもより良い製品をお届けいたします。