見出し画像

組み合わせテストについて

はじめに

テストの品質について学ぶため、テスト手法を勉強し直しました。
組み合わせテストについてまとめた内容を自分の勉強として記載します。

組み合わせテストについて

組み合わせテストは、複数の要因や変数が組み合わさる際の振る舞いや効果をテストする手法です。

ソフトウェアやシステムが異なる要因や構成要素とどのように相互作用するかを理解し、可能な限り多くの組み合わせをテストできます。
組み合わせテストの主な利点は、網羅性を確保しつつ、テストケースの数を削減できることです。

組み合わせテストの3つの方法

  • 直交表法(Orthogonal Array): 要因や水準の組み合わせを効率的に選択する手法。因子の組み合わせを網羅するため、組み合わせが均等に分散されるような設計がされています。強さという設定値があり、設定値によって2要因の水準組み合わせが何回以上存在するかによってテストケース量が増減する。

  • オールペア法(All-Pairs Testing): 要因のペアを網羅的にテストする手法。1要因もしくは、2要因の組み合わせでのバグが80%-90%だという経験則に基づいたもの。テストケースの数を削減しつつ、重要な組み合わせを確認します。直行表の強さ2と同じです。

  • ランダムサンプリング: ランダムに要因や水準を選択してテストする手法。特定の組み合わせに焦点を当てる場合や、一般的な挙動を確認する場合に使用されます。

なぜ組み合わせテストをするとテストケースが削減できるのか

3要因2水準の実験は、総当たりで実施する場合実験を8回する必要ですが、(2の3乗)
直行表を使うとたった4回のテストで十分になります。

なぜかというと、
要因1に注目して1,2の平均と3,4の平均が同じであるため(要因2,3には0と1が2つずつ配置されており、実験3,4で注目しても要因2,3には0と1が2つずつ配置されている)つまり、要因1以外の条件は全て等しくなっています。
見たい要因以外は全ての同じ条件になるように組み立てられています。

直行表を使うか、ディシジョンテーブルを使うか

ディシジョンテーブルは条件とアクションのロジックを表現するのに対し、直交表は複数の要因の相互作用を考慮した実験の設計に使用されます。

どちらを使うべきかは、
有則の組み合わせなのか、無則の組み合わせで判断するのが良いです。

有則の組み合わせ
ルールがあり、結果に影響する => ディシジョンテーブル

無則の組み合わせ
結果が変化しない =>直行表

終わりに

組み合わせ表の手法がいまいちわかってなかったので、改めて勉強してみました。
状況に応じて最適なテスト、テストケースを行なっていきたいですね。

参考にさせていただいた内容
直交表って何?【分散分析と組み合わせて素早く結果を得よう!】
https://sigma-eye.com/2019/06/08/what-chokkouhyou/


この記事が気に入ったらサポートをしてみませんか?