質問: 直交表とpictを比較する理由 論文を読んでいたところ、 直交表とペアワイズ法(pict)でそれぞれテストケースを作成し、また網羅率についても比較している論文がありました。 なぜ比較する必要があるのでしょうか? どちらを選択すればいいのかわからないからなのでしょうか? 実際のソフトウェアテストではどのような感じでテストケースを作成しているのか教えられる範囲で教えていただきたいです。
回答: 屋根猫様、ご質問ありがとうございます。 ご存知の通り、ソフトウェアのテストには様々なタイプのカバレッジ(網羅率)分析があります。一般的に使われる代表的なものでは、 • ステートメントカバレッジ(c0メジャー:命令網羅率) • 判断文カバレッジ(ブランチカバレッジ、c1メジャー:分岐網羅率) • 単純条件カバレッジ(c2メジャー:条件網羅率) などがあります。その他にも • 関数カバレッジ • コールカバレッジ • ブロックカバレッジ • modified condition/decision coverage (mc/dc)カバレッジ などが使われることがあるようです。 そして一般的には、テストを行ってカバレッジ(網羅率)が高くなったソフトウェアは、同時に信頼性も高い(つまりバグが少ない)とされています(必ずしもそうではないのですが)。 そこでカバレッジ(網羅率)を高くするために様々なテストケースを作るわけですが、分岐や条件が複雑に絡み合ったソフトウェアだと、テストケースの数も膨大になります。例えばたった10個の因子を扱うソフトウェアの場合、すべての条件の組合せは1024通りになります(それぞれが2水準の場合)。1024通りのテストケースを実施すれば、c1メジャーもc2メジャーも100%になるかもしれませんが、それでは時間も労力も足りません。もしテスト生産性を(検出したバグ数/テストケースの数)または(検出したバグ数/テスト時間)とすれば、テスト生産性はかなり下がってしまいます。 そのため、限られた(少ない)数のテストケースで、最大限にテスト・カバレッジ(網羅率)を上げる方法が様々研究されています。直交表やペアワイズ法はその良い例です。 ペアワイズ法は2つの因子を1つの因子と考えてテストケースを作るので、テストケースの総数が少なくて済みます。例えば先の例では10個の因子の組合せではなく、5個の因子の組合せとして扱うような感じです。その場合、2因子の組合せのカバレッジ(網羅率)は100%になるかもしれませんが、一方それ以上の数の因子の組合せでは、カバレッジ(網羅率)はかなり低くなります。 直交表はラテンスクエアを基に作られているので、表の大きさやタイプには制限があります。そのためテストケースの総数はペアワイズ法に比べて多くなるかもしれませんが、3因子以上の組合せでも比較的高いカバレッジ(網羅率)が得られます。 どんなテストケース生成手法も完全ではありません。良い面もあれば悪い面もあります。それらを理解した上で、まずはソフトウェアの信頼性目標やテスト期間、テスト費用を決めてから、最適なテストケース生成手法を選べば良いのではないでしょうか。 最近はテスト・オートメーション手法を使って、テストケースを逐次追加していきながら、ビルドのたびに回帰テスト(リグレッション)を自動的に行う、ビルド・オートメーション/テスト・オートメーションが良く行われているようです(私のところでも使っています)。 最新の情報については、以下のようなシンポジウムで得られると思います。 ソフトウェアテストシンポジウム http://jasst.jp/ 以上、少しでも参考になれば幸いです。