
【ソフトウェアテスト】直交表/ペアワイズ法 ①
本記事では直交表について記載します。
さまざまな資料を調べて情報をまとめているうちに、直交表、ペアワイズ、HAYST法はそれぞれ直交表を元に関連しているようだと思ったので、直交表から順を追って記載していこうと思います。
しかし、それぞれが個別の手法として確立しており、その手法を使用するシーンも違うことから、記事としては独立させたほうが適切かと思ったので、まずは直交表についてまとめたのち、続いて別の記事でペアワイズ法をまとめていきます。
1. 概要
直交表テスト/ペアワイズテストは共に、組み合わせテスト技法の一つとされています。
直交表は因子間の相互作用を最小限に抑えながら、可能な限り多くのテストケースを生成するための組み合わせ手法です。
全ての組み合わせを網羅するのではなく、各因子に想定されている水準が均等に分布するように組み合わせを選択します。
ペアワイズ法は直交表で考慮した各因子に想定されている水準が均等に分布するという条件を緩和し、各水準の組み合わせが少なくとも1回以上出現するようなペアを選択します。
直交表テスト/ペアワイズテストはどちらも、システム要件の中で複数の入力条件を持つ機能のうち、基本的に互いに影響を与えない想定の機能同士の組み合わせにフォーカスしてテストケースとして抽出するための技法です。
2. 直交表
まずは直交表について記載します。
直交表とは、任意の2因子について、その水準の全ての組み合わせが同数回ずつ現れる性質を持つものとされています。
どの2列を見ても、取り得る値の組み合わせが全て出現する表が直交表です。
・L4直交表
図の表はL4直交表と呼ばれるもので、最も規模の小さい直交表です。
値が2値(上記表では0,1の2値)の場合、どの2列を取っても[0,0][0,1][1,0][1,1]の組み合わせが1回ずつ出現します。
各パラメーターを因子、各パラメーターが持つ値を水準と呼びます。
上記は因子が[A][B][C]の3つ、水準を[0][1]の2つで表した L4(2^3)の直交表になります。
L4直交表は水準が2値の場合の最小規模ですが、水準の値が3値になった場合は、L9直交表が最小規模のものになります。
・L9直交表
上記は因子が[A][B][C][D]の4つ、水準を[0][1][2]の3つで表した L9(3^4)の直交表になります。
上記のほかに、2値を元に列を増やしたL8直交表、L16直交表があります。
水準の値が2値と3値の混合の場合にはL18直交表を用います。
上記で作成した直交表はpictmasterというフリーのツールを使用して作成しました。
pictmasterはExcelベースで直交表を作成することができるツールで、以下のサイトからダウンロードできます。
https://sourceforge.net/projects/pictmaster/
pictmaster自体はExcelベースで動作するツールですが、元々はCUIで動作させるMicrosoftのPICT(Pairwise Independent Combinatorial Testing tool)というツールを、Excelを使用してGUIとして使用できるようにしたもので、セルに値を入力すると直交表を生成できる便利なツールです。
pictmasterのユーザーマニュアル内にも記載がありますが、pictmaster使用に際してはどのみちPICTも必要になるため、念のためPICTのインストール先URLも記載しておきます。
https://github.com/microsoft/pict/releases/download/release/pict.exe
pictmaster自体の使い方もユーザーマニュアルが用意されており、インストールパッケージ内に同梱されているので、特にここで解説などはしません。
3. テストケース作成

1.因子と水準の洗い出し
因子の数と水準の数に基づいて適切な直交表の形式をを選択して作成を進めるため、まずはテスト対象を分析して、因子と水準を洗い出します。
以下に、今回のテストケース用の仮のシステム要件を定義していきます。
4. システム要件の一例
■ユーザーページカスタマイズ機能の仕様
以下の設定とパターンから自由に選択可能・ヘッダーカラーパターン[単色,グラデーション]
・ページカラー設定[ダークテーマ,ライトテーマ]
・ページレイアウト設定[ベーシック,モダン,クラシック]
・文字サイズ設定[小,中,大]
・フッターデザインパターン[ノーマル,ポップ]
上記仕様から想定される因子は以下5点です。
・因子
・ヘッダーカラーパターン・ページカラー設定
・ページレイアウト設定
・文字サイズ設定
・フッターデザインパターン
そして、仕様記載からそのままの転記ですが、上記5つの因子に想定される水準は以下です。
・水準
・ヘッダーカラーパターン[単色,グラデーション]・ページカラー設定[ダークテーマ,ライトテーマ]
・ページレイアウト設定[ベーシック,モダン,クラシック]
・文字サイズ設定[小,中,大]
・フッターデザインパターン[ノーマル,ポップ]
因子と水準を表の形式で整理します。
・因子水準表
2.組み合わせの作成
因子と水準が決まったら、直交表を作成します。・因子と水準から作成した直交表
因子と水準を全網羅しようとした場合のケース数は、各因子の数である2*2*3*3*2=72パターンになるところ、直交表では12パターンになりました。
水準を2つ持つ因子の場合は、No.1~12の全体で各6回出現しています。
ヘッダーカラーパターンの水準は[グラデーション,単色]で2水準、水準[グラデーション]はNo.1~6で計6回、水準[単色]はNo.7~12で計6回出現しています。
ページカラー設定の水準は[ダークテーマ,ライトテーマ]で2水準、水準[ダークテーマ]はNo.1,2,3,7,8,9で計6回、水準[ライトテーマ]はNo.4,5,6,10,11,12で計6回出現しています。
水準を3つ持つ因子の場合は、No.1~12の全体で各4回出現しています。
ページレイアウト設定の水準は[ベーシック,モダン,クラシック]で3水準、水準[ベーシック]はNo.4,5,8,11で計4回、水準[モダン]はNo.3,6,9,12で計4回、水準[クラシック]はNo.1,2,7,10で計4回出現しています。
文字サイズ設定の水準は[小,中,大]で3水準、水準[小]はNo.1,6,8,11で計4回、水準[中]はNo.3,4,7,9で計4回、水準[大]はNo.2,5,10,12で計4回出現しています。
以上のことから、各因子内に存在する各水準を各項目に均等に出現するパターンでまとめることができました。
上記直交表のパターンでテストすることによって、全網羅パターンよりテスト工数を抑えつつ、かつ2水準間での組み合わせは全パターンで網羅できるかたちでテストが実施できます。
5. 追記
直交表とペアワイズ法を一つの記事でまとめようと思って書き始めましたが、想定以上に文字数が多く、また、同一記事内でまとめてしまうと、手法や適用ケースについての違いが分かりにくくなってしまいそうだったので、ペアワイズ法については直交表/ペアワイズ法 ②として、別の記事にまとめていきます。