テスト技法ワークショップ
vol.2 ペアワイズテストを使いこなす
2021.11.27 オンライン勉強会
2021 WARAI(関西ソフトウェアテスト勉強会) 2
◼ 発表者が公開NGとした資料や発言を、SNSなどで拡散しないようお願いいたします。
◼ イベント内ではビジネスの勧誘にあたる行為は禁止しています。
参加者全員が楽しむイベントである主旨を理解した発言・行動をお願いします。
(誹謗中傷、マウントの取り合いなど)
◼ 勉強会中に自由に書き込める掲示板を用意しました。
Discord #テスト技法ワークショップ
招待リンク https://discord.gg/eczFHAB6
諸注意
2021 WARAI(関西ソフトウェアテスト勉強会) 3
Agenda
【本編】
ペアワイズテストの定義
組み合わせテストの種類
ペアワイズテスト生成ツール
演習
ディスカッション
アイスブレイク
(ice breaker)
• 自己紹介
• 参加の動機
• 意気込み
• 今興味を持っていること
4
2021 WARAI(関西ソフトウェアテスト勉強会) 5
ペアワイズテストの定義 ⑴
組み合わせテスト (combinatorial testing): 事前に定義されたレベルのカバレッジを達成するために、
適切に組み合わせたテストのサブセットを識別する手段。
• ペアワイズテスト (pairwise testing) : ブラックボックステスト設計技法の一つ。
入力パラメータの各ペアを、設定可能な個々の組み合わせの全てで実行するためのテストケースを設計する。
• n ワイズテスト (n-wise testing): ブラックボックステスト設計技法の一つ。
n 個の入力パラメータの任意のセットを、設定可能な個々の組み合わせの全てで実行するためのテストを設計する。
• 直交表テスト (orthogonal array testing) : 直交表を使った変数のオールペア組み合わせテストの体系的な方法。
変数を全て組み合わせたときの数を、オールペア組み合わせでテストできるまでに減らす。
クラシフィケーションツリー法 (classification tree method): ブラックボックステスト設計技法の一つ。
クラシフィケーションツリーを使って入力ドメインや出力ドメインの代表値の組み合わせを設計し、テストケースを記
述する。
関連する用語の説明 (JSTQB ソフトウェアテスト標準用語集 より)
2021 WARAI(関西ソフトウェアテスト勉強会) 6
ペアワイズテストの定義 ⑵
• 可能な値を複数持つ複数の入力パラメーターを組み合わせてソフトウェアをテストしなければならず、
組み合わせ数が、許容される時間内にテスト可能な数よりも多く存在するときに使用する。
• 特定のパラメーター(変数または因子)とそのパラメーターの特定の値の組は、パラメーター - 値のペアと呼ばれる。
• ペアワイズテストでは、組み合わせの技法を使用して、
[各パラメーター - 値ペア] が 他の 各パラメーターの [パラメーター - 値ペア] それぞれに対して1回はテストをする。
(任意の 2つの異なるパラメーターのパラメーター - 値ペアの「オールペア」をテストする)
• クラシフィケーションツリーはペアワイズテストと組み合わせて使用することが多い。
クラシフィケーションツリーは、パラメーターとそれらの値の組み合わせを視覚化できることで、
以下の情報を識別するのに役立つ。
* ペアワイズテスト技法で使用する入力
* 関心のある特定の組み合わせ(頻繁に使用する組み合わせ、欠陥の共通の発生源など)
* 両立しない特定の組み合わせ⇒組み合わされた因子が相互に影響しないことを想定していない
影響を与える可能性が十分にあり、許容できる範囲で相互に影響するべきである。
* 変数間の論理的関係(例:変数 x が 1 の場合、変数 y が 2 になることはない)
これらの関係を表すクラシフィケーションツリーを「フィーチャーモデル」と呼ぶ
ペアワイズテストの説明 (JSTQB ATA シラバス(抜粋))
2021 WARAI(関西ソフトウェアテスト勉強会) 7
ペアワイズテストの定義 ⑶
パラメーター値に関してあまりに多くの組み合わせを持つことの以下のような問題について
① 複数の入力欄のある画面のように、とり得る値が複数存在するパラメーターが複数存在する。
② システムによっては、いくつかの次元で設定可能なものがあり、その結果構成空間が大きくなる
⇒ ペアワイズテストにより、扱いやすくて実現可能な組み合わせのサブセットを識別することができる
値の数が非常に多いパラメーターでは、まず同値分割法や他の抽出の仕組みを各パラメーターに適用して、
各パラメーターの値の数を減らしてからペアワイズテストを適用して、
結果として得られる組み合わせのセットを減らすことができる。
パラメーターとその値をクラシフィケーションツリーに取り込むことがこの活動を支援する。
ペアワイズテストの適用 (JSTQB ATA シラバス(抜粋))
2021 WARAI(関西ソフトウェアテスト勉強会) 8
ペアワイズテストの定義 ⑶
これらの技法の主な制限は、少数のテストの結果がすべてのテストの結果を代表し、それらのテストが期待される使用
方法を表すと仮定することである。例えば、想定されていない相互作用が特定の変数間に存在する場合、その特定の組
み合わせをテストしない限り、その欠陥はこのテスト技法で検出されない可能性がある。
組み合わせテスト(ペアワイズテスト含む)は、
テストを論理的に削減するということが理解されづらく、技術を知らない関係者への説明が難しい。
そこで、経験に基づく研究の結果に言及することによってバランスをとる必要がある。
医療機器の領域の研究では、故障の 66%は単一の変数によって引き起こされており、97%は 1 つの変数または 2 つの
変数の相互作用のいずれかによって引き起こされていることが示されている。3 以上の変数による相互作用が存在する
場合、ペアワイズテストでシステム故障を検知できないことがあるというリスクが残る。
ペアワイズテストの制限/注意事項 (JSTQB ATA シラバス(抜粋))
パラメーターとそれぞれの値を識別するのが困難な場合がある。
このため、可能であればクラシフィケーションツリーの支援を受けて実施するべきである。
あるレベルのカバレッジを満たす最小の組み合わせのセットを見つけることは、手作業では困難である。
可能な限り小さい組み合わせのセットを見つけるために、ツールを使用する。
2021 WARAI(関西ソフトウェアテスト勉強会) 9
ペアワイズテストの定義 ⑶
ペアワイズカバレッジ 100%とするためには、任意の 2 つのパラメーターについて、
各値のすべてのペアを 1 つ以上の組み合わせに含める必要がある。
ペアワイズテストのカバレッジ (JSTQB ATA シラバス(抜粋))
ペアワイズテストで検出できる欠陥の種類 (JSTQB ATA シラバス(抜粋))
このテスト技法で見つかる最も一般的な欠陥のタイプは、
2 つのパラメーターの値の組み合わせに関連する欠陥である。
※組み合わせテストの導入説明として使われていた事例
• NASAにおけるデータベースの欠陥329個を分析したところ、
全体の93%がシングルモードまたはダブルモードの設定の組合せで欠陥が発生
• Webブラウザではトリプルモードで95%の欠陥を検出 (ダブルモードでは76%)
2021 WARAI(関西ソフトウェアテスト勉強会) 10
組み合わせテストの種類
◆ 有則 :組み合わせた結果、出力に影響を及ぼすもの
◆ 無則 :組み合わせた結果、出力に影響を及ぼさない(及ぼしてはいけない)
◆ 禁則 :組み合わせることができない制限、制約
組み合わせテスト(ペアワイズテスト、直交表テスト)における “組み合わせ”に種類があることを理解する。
それぞれのアプローチとして、
• 有則の組み合わせは範囲が狭いため、デシジョンテーブルやクラシフィケーションツリーを用いて、
論理関係やパラメータの同値を整理しながら進める。
• 無則の組み合わせは範囲が広くパラメータも多くなるため、組み合わせテストが適している
⇒ 範囲を広げ、より早く(絞ったテストケース数で)問題を見つけるため
組み合わせテスト=無則の組み合わせ、だけではない点に注意。
有則は全網羅が理想だが、組み合わせテストを用いることもある。
2021 WARAI(関西ソフトウェアテスト勉強会) 11
ペアワイズテスト生成ツール
ペアワイズテストの生成ツールは数多く存在する(参照 www.pairwise.org)。
https://www.veriserve.co.jp/gihoz/
• クラウド型のテスト技法ツール
• オンプレで実行できる
PictMaster / PICT
https://www.qbook.jp/info-qumias/
2021 WARAI(関西ソフトウェアテスト勉強会) 12
GIHOZのペアワイズテストの機能
生成方法
• デフォルト :これまでと同様の設定で組み合わせを生成
• ランダム生成:ランダム生成時のシード値を指定して、組み合わせを生成する
デフォルトとは異なる組み合わせ生成結果を得たい場合に使用する
• 最小の組み合わせを探索:
指定の試行回数の組み合わせ生成をランダムなシード値で繰り返し、
件数が最も少なかった組み合わせを生成結果として表示する
組み合わせの件数を少しでも減らしたいという場合に使用する
オプション
組み合わせるパラメータ数(n因子間網羅)を1~5で設定できる
制約
• 特定の因子水準の場合に指定する因子水準を記載する
複数の場合はカンマで区切って書く
• 否定文の場合は「#水準」で記載する
2021 WARAI(関西ソフトウェアテスト勉強会) 13
演習:Windowsの計算機をテストする
Windows標準アクセサリの電卓ツールをペアワイズテストしよう
※検索バーで「電卓」を入力すると起動する
1. 電卓アプリのパラメータを抽出し、整理する
2. 電卓アプリのパラメータの制約を設定する
3. 電卓アプリのパラメータを2因子間で組み合わせる
4. 無則の組み合わせを考えてみる
「Windowsの設定が電卓に影響を与えていないことを確認する」
上記の組み合わせテストを設計せよ
電卓アプリ
2021 WARAI(関西ソフトウェアテスト勉強会) 14
演習:Windowsの計算機をテストする ~解答例①
クラシフィケーションツリーを使用した電卓アプリのパラメータの抽出と整理
図:GIHOZによるクラシフィケーションツリー 表:生成結果
2021 WARAI(関西ソフトウェアテスト勉強会) 15
演習:Windowsの計算機をテストする ~解答例②
電卓アプリのパラメータの制約を設定する
2021 WARAI(関西ソフトウェアテスト勉強会) 16
演習:Windowsの計算機をテストする ~解答例③
パラメータを2因子間で組み合わせる
2021 WARAI(関西ソフトウェアテスト勉強会) 17
ディスカッション
 ペアワイズテストが活用されていない問題
ペアワイズテストはテスト技術の研修で必ずと言ってよいほど取り上げられるのに、
現場ではあまり使用されていない。
 メリットに対する疑問
「テスト項目を大幅に削減できる」をメリットに挙げるが、
無則の組み合わせをテスト対象に含めているため、むしろ発散している感覚に陥る。
 不具合は出るの?
無則の組み合わせは「不具合を出すためのテスト」というより
「不具合が出ないことを確認するため」のテストであるため、不具合の検出は少ない。
⇒ 不具合を検出しないと、このテスト意味ある?論が持ち上がり、結局やらなくなる
 実行者の目線から
テストケース作成は容易だが、テスト実行、特に手動での実行ではルーチンワークになるため
ミスが増えたり、モチベーションが低下しがち(心が折れそうになる)
⇒ 自動化が望ましい

WARAI テスト技法ワークショップ vol.2

  • 1.
  • 2.
    2021 WARAI(関西ソフトウェアテスト勉強会) 2 ◼発表者が公開NGとした資料や発言を、SNSなどで拡散しないようお願いいたします。 ◼ イベント内ではビジネスの勧誘にあたる行為は禁止しています。 参加者全員が楽しむイベントである主旨を理解した発言・行動をお願いします。 (誹謗中傷、マウントの取り合いなど) ◼ 勉強会中に自由に書き込める掲示板を用意しました。 Discord #テスト技法ワークショップ 招待リンク https://discord.gg/eczFHAB6 諸注意
  • 3.
  • 4.
    アイスブレイク (ice breaker) • 自己紹介 •参加の動機 • 意気込み • 今興味を持っていること 4
  • 5.
    2021 WARAI(関西ソフトウェアテスト勉強会) 5 ペアワイズテストの定義⑴ 組み合わせテスト (combinatorial testing): 事前に定義されたレベルのカバレッジを達成するために、 適切に組み合わせたテストのサブセットを識別する手段。 • ペアワイズテスト (pairwise testing) : ブラックボックステスト設計技法の一つ。 入力パラメータの各ペアを、設定可能な個々の組み合わせの全てで実行するためのテストケースを設計する。 • n ワイズテスト (n-wise testing): ブラックボックステスト設計技法の一つ。 n 個の入力パラメータの任意のセットを、設定可能な個々の組み合わせの全てで実行するためのテストを設計する。 • 直交表テスト (orthogonal array testing) : 直交表を使った変数のオールペア組み合わせテストの体系的な方法。 変数を全て組み合わせたときの数を、オールペア組み合わせでテストできるまでに減らす。 クラシフィケーションツリー法 (classification tree method): ブラックボックステスト設計技法の一つ。 クラシフィケーションツリーを使って入力ドメインや出力ドメインの代表値の組み合わせを設計し、テストケースを記 述する。 関連する用語の説明 (JSTQB ソフトウェアテスト標準用語集 より)
  • 6.
    2021 WARAI(関西ソフトウェアテスト勉強会) 6 ペアワイズテストの定義⑵ • 可能な値を複数持つ複数の入力パラメーターを組み合わせてソフトウェアをテストしなければならず、 組み合わせ数が、許容される時間内にテスト可能な数よりも多く存在するときに使用する。 • 特定のパラメーター(変数または因子)とそのパラメーターの特定の値の組は、パラメーター - 値のペアと呼ばれる。 • ペアワイズテストでは、組み合わせの技法を使用して、 [各パラメーター - 値ペア] が 他の 各パラメーターの [パラメーター - 値ペア] それぞれに対して1回はテストをする。 (任意の 2つの異なるパラメーターのパラメーター - 値ペアの「オールペア」をテストする) • クラシフィケーションツリーはペアワイズテストと組み合わせて使用することが多い。 クラシフィケーションツリーは、パラメーターとそれらの値の組み合わせを視覚化できることで、 以下の情報を識別するのに役立つ。 * ペアワイズテスト技法で使用する入力 * 関心のある特定の組み合わせ(頻繁に使用する組み合わせ、欠陥の共通の発生源など) * 両立しない特定の組み合わせ⇒組み合わされた因子が相互に影響しないことを想定していない 影響を与える可能性が十分にあり、許容できる範囲で相互に影響するべきである。 * 変数間の論理的関係(例:変数 x が 1 の場合、変数 y が 2 になることはない) これらの関係を表すクラシフィケーションツリーを「フィーチャーモデル」と呼ぶ ペアワイズテストの説明 (JSTQB ATA シラバス(抜粋))
  • 7.
    2021 WARAI(関西ソフトウェアテスト勉強会) 7 ペアワイズテストの定義⑶ パラメーター値に関してあまりに多くの組み合わせを持つことの以下のような問題について ① 複数の入力欄のある画面のように、とり得る値が複数存在するパラメーターが複数存在する。 ② システムによっては、いくつかの次元で設定可能なものがあり、その結果構成空間が大きくなる ⇒ ペアワイズテストにより、扱いやすくて実現可能な組み合わせのサブセットを識別することができる 値の数が非常に多いパラメーターでは、まず同値分割法や他の抽出の仕組みを各パラメーターに適用して、 各パラメーターの値の数を減らしてからペアワイズテストを適用して、 結果として得られる組み合わせのセットを減らすことができる。 パラメーターとその値をクラシフィケーションツリーに取り込むことがこの活動を支援する。 ペアワイズテストの適用 (JSTQB ATA シラバス(抜粋))
  • 8.
    2021 WARAI(関西ソフトウェアテスト勉強会) 8 ペアワイズテストの定義⑶ これらの技法の主な制限は、少数のテストの結果がすべてのテストの結果を代表し、それらのテストが期待される使用 方法を表すと仮定することである。例えば、想定されていない相互作用が特定の変数間に存在する場合、その特定の組 み合わせをテストしない限り、その欠陥はこのテスト技法で検出されない可能性がある。 組み合わせテスト(ペアワイズテスト含む)は、 テストを論理的に削減するということが理解されづらく、技術を知らない関係者への説明が難しい。 そこで、経験に基づく研究の結果に言及することによってバランスをとる必要がある。 医療機器の領域の研究では、故障の 66%は単一の変数によって引き起こされており、97%は 1 つの変数または 2 つの 変数の相互作用のいずれかによって引き起こされていることが示されている。3 以上の変数による相互作用が存在する 場合、ペアワイズテストでシステム故障を検知できないことがあるというリスクが残る。 ペアワイズテストの制限/注意事項 (JSTQB ATA シラバス(抜粋)) パラメーターとそれぞれの値を識別するのが困難な場合がある。 このため、可能であればクラシフィケーションツリーの支援を受けて実施するべきである。 あるレベルのカバレッジを満たす最小の組み合わせのセットを見つけることは、手作業では困難である。 可能な限り小さい組み合わせのセットを見つけるために、ツールを使用する。
  • 9.
    2021 WARAI(関西ソフトウェアテスト勉強会) 9 ペアワイズテストの定義⑶ ペアワイズカバレッジ 100%とするためには、任意の 2 つのパラメーターについて、 各値のすべてのペアを 1 つ以上の組み合わせに含める必要がある。 ペアワイズテストのカバレッジ (JSTQB ATA シラバス(抜粋)) ペアワイズテストで検出できる欠陥の種類 (JSTQB ATA シラバス(抜粋)) このテスト技法で見つかる最も一般的な欠陥のタイプは、 2 つのパラメーターの値の組み合わせに関連する欠陥である。 ※組み合わせテストの導入説明として使われていた事例 • NASAにおけるデータベースの欠陥329個を分析したところ、 全体の93%がシングルモードまたはダブルモードの設定の組合せで欠陥が発生 • Webブラウザではトリプルモードで95%の欠陥を検出 (ダブルモードでは76%)
  • 10.
    2021 WARAI(関西ソフトウェアテスト勉強会) 10 組み合わせテストの種類 ◆有則 :組み合わせた結果、出力に影響を及ぼすもの ◆ 無則 :組み合わせた結果、出力に影響を及ぼさない(及ぼしてはいけない) ◆ 禁則 :組み合わせることができない制限、制約 組み合わせテスト(ペアワイズテスト、直交表テスト)における “組み合わせ”に種類があることを理解する。 それぞれのアプローチとして、 • 有則の組み合わせは範囲が狭いため、デシジョンテーブルやクラシフィケーションツリーを用いて、 論理関係やパラメータの同値を整理しながら進める。 • 無則の組み合わせは範囲が広くパラメータも多くなるため、組み合わせテストが適している ⇒ 範囲を広げ、より早く(絞ったテストケース数で)問題を見つけるため 組み合わせテスト=無則の組み合わせ、だけではない点に注意。 有則は全網羅が理想だが、組み合わせテストを用いることもある。
  • 11.
    2021 WARAI(関西ソフトウェアテスト勉強会) 11 ペアワイズテスト生成ツール ペアワイズテストの生成ツールは数多く存在する(参照www.pairwise.org)。 https://www.veriserve.co.jp/gihoz/ • クラウド型のテスト技法ツール • オンプレで実行できる PictMaster / PICT https://www.qbook.jp/info-qumias/
  • 12.
    2021 WARAI(関西ソフトウェアテスト勉強会) 12 GIHOZのペアワイズテストの機能 生成方法 •デフォルト :これまでと同様の設定で組み合わせを生成 • ランダム生成:ランダム生成時のシード値を指定して、組み合わせを生成する デフォルトとは異なる組み合わせ生成結果を得たい場合に使用する • 最小の組み合わせを探索: 指定の試行回数の組み合わせ生成をランダムなシード値で繰り返し、 件数が最も少なかった組み合わせを生成結果として表示する 組み合わせの件数を少しでも減らしたいという場合に使用する オプション 組み合わせるパラメータ数(n因子間網羅)を1~5で設定できる 制約 • 特定の因子水準の場合に指定する因子水準を記載する 複数の場合はカンマで区切って書く • 否定文の場合は「#水準」で記載する
  • 13.
    2021 WARAI(関西ソフトウェアテスト勉強会) 13 演習:Windowsの計算機をテストする Windows標準アクセサリの電卓ツールをペアワイズテストしよう ※検索バーで「電卓」を入力すると起動する 1.電卓アプリのパラメータを抽出し、整理する 2. 電卓アプリのパラメータの制約を設定する 3. 電卓アプリのパラメータを2因子間で組み合わせる 4. 無則の組み合わせを考えてみる 「Windowsの設定が電卓に影響を与えていないことを確認する」 上記の組み合わせテストを設計せよ 電卓アプリ
  • 14.
    2021 WARAI(関西ソフトウェアテスト勉強会) 14 演習:Windowsの計算機をテストする~解答例① クラシフィケーションツリーを使用した電卓アプリのパラメータの抽出と整理 図:GIHOZによるクラシフィケーションツリー 表:生成結果
  • 15.
    2021 WARAI(関西ソフトウェアテスト勉強会) 15 演習:Windowsの計算機をテストする~解答例② 電卓アプリのパラメータの制約を設定する
  • 16.
  • 17.
    2021 WARAI(関西ソフトウェアテスト勉強会) 17 ディスカッション ペアワイズテストが活用されていない問題 ペアワイズテストはテスト技術の研修で必ずと言ってよいほど取り上げられるのに、 現場ではあまり使用されていない。  メリットに対する疑問 「テスト項目を大幅に削減できる」をメリットに挙げるが、 無則の組み合わせをテスト対象に含めているため、むしろ発散している感覚に陥る。  不具合は出るの? 無則の組み合わせは「不具合を出すためのテスト」というより 「不具合が出ないことを確認するため」のテストであるため、不具合の検出は少ない。 ⇒ 不具合を検出しないと、このテスト意味ある?論が持ち上がり、結局やらなくなる  実行者の目線から テストケース作成は容易だが、テスト実行、特に手動での実行ではルーチンワークになるため ミスが増えたり、モチベーションが低下しがち(心が折れそうになる) ⇒ 自動化が望ましい