論文を読んでいたところ、
直交表とペアワイズ法(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/
以上、少しでも参考になれば幸いです。
|