つれづれなる技術屋日記

しがない技術屋。専門は情報工学で、「つれづれ技術屋」って呼んで。

組み合わせテストの縮小化

ここ1週間、組み合わせテストでのテスト件数を(強制的に)小さくする事を考えていた。以下のように考えたけど、どうなんだろう? 

ほんとは図とかを付けた方がいいが、少し先にする。また、アイデアの一部は、とあるコミュニティでのまったく別件に関するやり取りも参考にした。感謝。

因子(M個)と水準(M個毎に個数は違う)をノミネートして、All-pair法などでテストケースを生成すると、行方向にN件、横方向はM個の表になる。

「テストケースを小さくする」ということは、MやNを小さくするということ。ただし、基本的に因子M個は減らせない。

となるとNを減らす事になる。なるべく均一に減らす。→N行を並べて、最終的に収めたい行数nへすればよい。

となると、1からNでのn個の乱数を発生させて、その行を該当行とすればよい。

1からNの乱数を発生させて、同一番号が発生したら?? 1つは、そんなに多くないのでそのまま該当行としてよい。大抵は、同一番号の発生によりテストを複数回行う必要は無い。つまり、同一番号の発生をそのまま利用する方法なら、n個ではなくて、n-1個等のテストケースとなる。

同一番号の発生をそのまま利用したくなければ、乱数を余計に発生させる方法がある。他にエクセルなどを利用する場合は、乱数関数とRANK関数を利用すればいい。(RANK関数も、OpenOfficeのCalcで使える。) この場合は、個数nを一定に出来るメリットはある。

この際、テストケースでの表で因子と水準は均一になっておくべきなので、先頭の因子を優先順位1、次の因子を優先順位2などとしてソートした上で、乱数での該当行を有効にするのが必須。またALLPAIRSを使った場合、Don't Care(テストケースでの”~”記号)の部分は、”~”記号を省いた並び替えとなるし、本強制的な縮小後はDon't Careの意味は薄れることになる。

もし、強制的に水準を少なくしたいときで水準に重み付けがある場合は、重みを軽くする方法がある。All-pairなどでは重みを”(5)”などと表記する事があるようだか、それを”(3)”などと記述して生成すればいい。また、重み付け表記でなくて水準をそのまま列挙している場合で同一水準が複数ある場合は、同一かの判断を元に水準値の間引きが可能だ。

更には、因子そのものを削除してしまう方法がある。

水準や因子の削除は、操作系を中心としたテストで利用している場合は抵抗あるだろうけど、自動テストで利用したり操作で何度も同じようにテストしていたら利用できる。自動テストで、ずっと同じ水準値のままでUnitテストする必要は無い。(操作系を中心としたテストでも、この類はやるべきというのが持論だが。)

当然だけど、修正影響を調べるための重要な回帰テストでは、前のテスト件数の行数や因子や水準で調べるのが普通。また水準での重み付けを軽くする部分は自動的な処理が可能だが、水準そのものや因子そのものの削除自動化は難しい。

組み合わせテストでのテスト件数を、テストフェーズやソフトウェアの品質に応じてダイナミックに変更してテストすべきと思っているんだけど、どうなんだろう。その場合は、本方法などでの縮小化は有用だ。また、直交表によるテストケースとAll-pair法によるテストケースに本方式を適用した場合どうなるかも調べたいけど、ちょっと先だろうな。

©2005-2022 ほんだ事務所(honda-jimusyo) All rights reserved.