※いずれも質問投稿には会員登録が必要です
個人情報(個人名やメールアドレスなど)が公開されることはありません。


QUESTION 質問No.456

直交表とPICTを比較する理由

設計・開発  | 投稿日時:

論文を読んでいたところ、
直交表とペアワイズ法(PICT)でそれぞれテストケースを作成し、また網羅率についても比較している論文がありました。
なぜ比較する必要があるのでしょうか?
どちらを選択すればいいのかわからないからなのでしょうか?
実際のソフトウェアテストではどのような感じでテストケースを作成しているのか教えられる範囲で教えていただきたいです。




ANSWER
回答No1 | 投稿日時:

屋根猫様、ご質問ありがとうございます。

ご存知の通り、ソフトウェアのテストには様々なタイプのカバレッジ(網羅率)分析があります。一般的に使われる代表的なものでは、

• ステートメントカバレッジ(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/

以上、少しでも参考になれば幸いです。