見出し画像

第284回: 「ALTAのテキストをつくろう」39 (ペアワイズテスト/中編)

◀前の記事へ 次の記事へ▶︎


≡ はじめに

前回は、「3. テスト技法」の「3.2 ブラックボックステスト技法」の「3.2.6 ペアワイズテスト」の前編として、「ペアワイズテストの定義」について書きました。

前回の復習は以下で模擬試験問題の確認を通して行います。
今回はJSTQBのALTAシラバスの「3.2.6 ペアワイズテスト」の中編として、「ペアワイズテストの適用、制限/注意事項」について書きます。



≡ 前回の復習

以下は前回出題したJSTQB ALTAの模擬試験問題を𝕏にポストした結果です。


𝕏によるアンケート結果

投票の結果、選択肢2の「9」が58.3%と最も多く、正解も2です。

3, 9, 54, 81がそれぞれ何を意味する数字か説明します。

3は、網羅基準がEach Choiceのときの組合せの最少数です。Each Choiceはクラシフィケーションツリーの後編ででてきました。

辰巳さんが整理してくださった表を再掲します。

辰巳さんの「組み合わせテストの設計」11ページ

GIHOZで作ってみます。

まずは、ペアワイズテストの画面で、問題文から因子と水準を読み取って、入力します。問題文に「色(赤、青、黄)、形(丸、四角、三角)、素材(木製、アクリル、金属)、大きさ(小、中、大)の4つの因子があったとき」とありますので、GIHOZに入力するとこうなります。

GIHOZに「パラメータと値」を入力したところ

これらの因子と水準の組み合わせは、意味のないものに見えるかもしれません。
しかし、ベルトコンベアに乗って流れてくる部品数をビデオカメラで撮影して動画解析し、部品ごとの数を集計するソフトウェアのテストで実際に使用したものを若干アレンジしたものです。

本当のテストでは流れてくる部品の重なり具合がキーでした。

あとは、Each Choiceですので、「組み合わせるパラメータ数」をデフォルトの2から1に直します。

Each Choiceの表がほしいとき

全角の1を入力すると赤くなって「なんかまずいぞ」と気が付くのはよいですね。(1~5ならラジオボックスでもいいかもしれませんが。)

全角の1を入力した場合

あとは、「テストケースを生成」ボタンを押すだけです。

生成ボタン
Each Choiceの表

こちらが、前回の問題の選択肢1にあった「3」という数です。この3回のテストにより、全ての水準のテストができます。

コンポーネントテストで単機能のテストが済んでいたとしても組み合わせテストの前にEach Choiceでテストしておくのは、悪くありません。禁則がないケースに限りますが。

9は「組み合わせるパラメータ数」に2を入力したときの結果です。

「組み合わせるパラメータ数」に2を入力して生成

あれあれ?9件ではなく11件生成されています。これはペアワイズのアルゴリズムの関係です。

最小の表にしたければGIHOZの生成方法の「試行回数」を増やして作ります。

試行回数を1から20に変更

こちらせ生成したところ9件になりました。

試行回数を20回にして再生成

因子・水準の数が多く、制約も多い場合、表を生成する時間も馬鹿になりませんので、試行回数をMAXの99にするのはどうかなあ?と思います。ケースバイケースですね。

これで選択肢2(正解)の9の説明は終わりです。

次は選択肢3の「54」です。こちらは次回のカバレッジのときの分母にあたる数です。4個の因子から2個の因子を選ぶ方法は、₄C₂=(4×3)/(2×1)=6通りです。そして、選んだ3水準の組合せは3×3=9です。ですから、以下のペアワイズテストの定義から6×9=54個の組合せ(カバレッジアイテムの数)となります。

2因子間の組合せを網羅する技法

ペアワイズテストの定義

順列・組合せは、高校1年生の数学で習うそうです。

順列・組合せの公式

でも公式を覚えるより、日本語で計算するほうがいいと思います。

₄C₂ならA, B, C, Dの4つを思い浮かべて1つ目の選び方は4通り、2つ目の選び方は(残りの3つから選ぶので)3通り。
ここから順列₄P₂=4通り×3通り=12通り。
上記の公式に代入しても(4!)/((4-2)!)=(4×3×2×1)/(2×1)=24/2=12通り

順列は順序があるので、順序(ABとBAの違い)を無視するなら半分にすればよいから6個の組合せとなります。
……公式が簡単ならそれでも良いですが順を追って考えると、「入力順も考慮したいとき」とか、ぱっと応用が効いてわかるので日本語で考えることをおすすめします。

選択肢4の81は全組合せです。3×3×3×3=81です。

GIHOZなら、「組み合わせるパラメータ数」を因子の数(今回は4)にしてやればOKです。

因子の数が6を超えたときには、全部の因子の水準数を掛けてやればいいです。3水準の因子が6個なら3⁶=729です。

「全組合せはいくつになるんだ」と偉い人からたまによく聞かれます。(笑)

単なる興味で聞いているだけなので放っておけばよいです。
しかし、そうもいかない場合は、Excelに因子と水準がまとまった表があると思うので、水準の数を数えて、それを掛け合わせるのが便利です。

複数のセルの値を足し合わせる関数のSUMというのはご存じと思います。同じ感じで複数のセルの値を掛け合わせる関数としてPRODUCTがあります。セルの幅を広げると10桁くらいはいい感じで表示されます。それ以上は指数表現かな。いずれにしても、正確な数字が必要なわけではないので指数表現で十分です。

全組合せ

復習は以上とし、今回のnoteのテーマに移ります。



≡ ペアワイズテストの適用、制限/注意事項


■ ペアワイズテストの適用

① たくさんの因子があったときに使います
② 使う前に水準については、同値分割をして水準数を減らしておきます
③ コンポーネントと受け入れテストでは通常は使いません

この3つを覚えておけばALTAではOKです。

それぞれについて解説します。

まず①ですが、上記の復習で確認したとおり、3水準の因子が6つで、全組合せ数は、3⁶=729です。(1つ目の因子の水準の選び方が3通り、2つ目も、3つ目も、、、ということで3×3×3×3×3×3=729です)

因子がGUIのアイテム数としましょう。たくさんありますよね。
各アイテムが機能を表すとします。そう考えると、因子数は機能数となりますが、一つの商品にいくつ機能はあるでしょうか?

「そんなの商品によって違うよ」という声が聞こえてきそうです。

確かに、商品によって異なります。でも、私が数えたところによると多くても200個くらいでした。

どうして、商品の機能の数を数えたかというと、事前に用意しておく直交表の最大サイズを決めたかったからです。

自動車でも部品の総数はねじレベルを1つとして3万個といわれています。
ここから想像すると、人が有限の時間で作り上げた商品の部品は、せいぜい10万個が最大なんじゃないかと思います。

それで、話を戻すと、200個の機能があったとして、それを全組合せしたら、天文学的な数になるわけです。だからペアワイズで広く浅く組み合わせようとしたものが①です。

じゃあ、因子数がいくつになったら全組合せを断念するのか?という話になりますが、私は5つまでは全組合せをすることをお勧めしています。キャッチイメージを参照してください。


次に、「② 使う前に水準については、同値分割をして水準数を減らしておきます」です。
大きい因子が2つあったら、その2つの因子の組合せだけで大きな数となるからです。
例えば、100水準の因子が2つあれば、ペアワイズと言っても10000個のテストが必要です。
だから、100水準をそのまま組合せないで、まずは同値分割して10水準にしてから組み合わせます。そうすれば、10×10=100個となるからです。


最後に「③ コンポーネントと受け入れテストでは通常は使いません」ですが、これは、そもそもコンポーネントは組み合わせる因子であって、因子を作っているときに他の因子と組合せテストは通常はしないだろうということです。受け入れテストもお客様が実施することを考えるとちょっと違うよなということです。


■ ペアワイズテストの制限/注意事項

① 説明が難しいときには、経験則的に上手くいっている話をするとよい
② 因子・水準の識別にはクラシフィケーションツリーを使うべきである

この2つを覚えておけばALTAではOKです。

①はNISTのKuhn博士の研究がよく用いられます。ASTERセミナー標準テキストにも載っている以下の表です。

バグはいくつの要因の組合せで発生するか

表の見方ですが、例えば組込み機器の列であれば、「医療機器の領域では、故障の66%は単一の変数によって引き起こされており、97%は1つの変数または2つの変数の相互作用のいずれかによって引き起こされている」と読みます。要は、「多くの因子の組合せで発生するバグは少ない」という調査結果をもって、ペアワイズテストの有効性を説明します。

この説明をしても納得しない人もいらっしゃいます。そういう人には「1つでもいいので4つ以上の因子の組み合わせ時に発生する不具合を見せてください」と言うといいです。
10年以上HAYST法というペアワイズテストの一種のテストをコンサルしていて1度も見せてもらえたことはありません。(デシジョンテーブルテストで見つけるべき有則の不具合はありましたが)

この経験則は、ペアワイズテストでは、3個以上の因子の組合せによるバグは検知できないことがあるというリスクが残るけど、その数は少ないから良しとすると上手くいくということです。

※ もともと多くの因子のロジックの組合せで一つの機能を実現する場合は、デシジョンテーブルテストをしようということになります。ペアワイズテストは因子間に論理関係が無い(各因子が独立して働く)ときのテストです。

②はペアワイズテストの前に出てきたクラシフィケーションツリーを使って因子・水準を見つけると良いということです。

多くの因子・水準がある場合、すぐに巨大なクラシフィケーションツリーになるため、実務ではお勧めしません。
クラシフィケーションツリーではなく、マインドマップやラルフチャートを使うことをお勧めします。



≡ JSTQB ALTA試験対策

いつものことですが、まずは、「学習の目的」を確認します。

TA-3.2.6 (K4)ペアワイズテストを適用して、特定の仕様アイテムを分析しテストケースを設計する。

ALTAシラバス29ページ

「K4」なので「理解」して「適用」できるだけではなく「分析」まで求められる重要な項目ということです。試験問題には、ペアワイズテストをつくることができるかどうか、あるいは、抜けている組合せを見つけるような問題が出ると思います。

《問題》
 ペアワイズテストを適用するときの正しい方法はどれですか。

1. 因子を減らしてから組み合わせる
2. 水準を同値分割して減らしてから組み合わせる
3. コンポーネントテストで使うと効果的な手法
4. 水準間に複雑なロジックがある場合に使う

答えは次回に書きます。



≡  おわりに

今回は、「ペアワイズテストの適用、制限/注意事項」がテーマでした。

次回は、「3.2.6 ペアワイズテスト」の中編として、「ペアワイズテストのカバレッジ、検出できる欠陥の種類」について書きます。


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