Tatehito's Programming Blog

現役プログラマがITっぽいネタを書いてアウトプット欲を満たすブログ

ペアワイズ法(オールペア法・ペア構成テスト)とは【テスト技法】

はじめに

調べてみると昔からある有名なテスト技法のようで、知らなかったのが恥ずかしいのですが「ペアワイズ法」を知ったので紹介。

※ペアワイズ法は「オールペア法」と呼ばれることもあるようです。『はじめて学ぶソフトウェアのテスト技法』では、「ペア構成テスト」という名称で紹介されていました。

はじめて学ぶソフトウェアのテスト技法

はじめて学ぶソフトウェアのテスト技法

ペアワイズ法とは?

3つ以上の因子の組み合わせによる不具合は(ほぼ)起こらないから、すべての組み合わせのテストを行う必要はないよね(すべての「ペア」の組み合わせをテストすればよい)という考え方に基づくテストパターンの作成テクニックです。

ここでいう「因子」とは「インプット」のことです。

たとえばインプットが10種類あり、それぞれ2つの値を取りうる場合だと、全組み合わせ数は2の10乗で1024パターンにもなります。

1000パターン程度であれば気合でなんとか消化できるかもしれませんが、インプットの数が増えると倍々ゲームで増えてしまいます。

インプットが20種類に増えたら、約10万パターンにもなります。どれだけ気合を入れてもやってられる数ではないですよね......。

そこですべての「ペア」のみをテスト対象とする「ペアワイズ法」を使うと、なんと10万からたった11パターンだけテストすれば良いことになります!

以下の記事で詳しく解説されています。

qiita.com

woshidan.hatenablog.com

『はじめて学ぶソフトウェアのテスト技法』もおすすめです。ペアワイズ法だけでなくテスト技法について網羅的に学べます。

はじめて学ぶソフトウェアのテスト技法

はじめて学ぶソフトウェアのテスト技法

ペアワイズ法の使用上の注意点

「3つ以上の因子の組み合わせによる不具合は(ほぼ)起こらない」なので、「絶対に起こらない」とは言い切れません。

以下に『はじめて学ぶソフトウェアのテスト技法』の文章を引用します。

発生する頻度は少なくても、絶対的に正しく機能しなければならないような組み合わせも、いくつか存在します。たとえば、「原子炉の緊急停止」がそうです。ペア構成技法によるテストケースで、このように非常に重要な組み合わせが漏れていたら、テストケースにそれを追加してください。

動作を完全に保証したい機能については、任意でテストケースを追加しましょう、ということですね。

またペアワイズ法はテストケースが膨大な数である場合に大きな効果を発揮するものであり、逆に言えば数が少なければ使う必要がないものです。

実施できるレベルの数であれば、ペアワイズ法でテストケースを間引きせず実施するべきです。

テストケースの数、機能の重要性等を総合的に判断した上で、うまく活用していきましょう。