概要
ALL Pair法によるテストデータの生成を、手作業とPictMasterとGIHOZで実施、比較してみる。
お題
ラーメンのメニュー
因子 | パラメータ1 | パラメータ2 | パラメータ3 | パラメータ4 | パラメータ5 |
---|---|---|---|---|---|
スープ | 醤油 | 味噌 | 塩 | 豚骨醤油 | 魚貝系 |
麺固さ | 固目 | 柔らかめ | 普通 | ||
背脂 | 多め | 少なめ | |||
チャーシュー | 肉厚 | 普通 | |||
ネギ | 多め | 少なめ |
生成してみる
手作業
水準数の多い因子からペアリングするのが旨くいきます。
同時に、水準数の少ない因子もペアリングします。
醤油と味噌に対しても麺固さを3通りペアリングしている様子です。
同時に、背脂とチャーシューとネギについてもペアリングをしています。
このようにALL Pair法では、どこかで2つの因子が組み合わされていればOKとしています。
スープと麺固さとをペアリングしている最中に、背脂とチャーシューとネギについては、ALL Pairでペアリングが済みました。
次は、残りのスープと麺固さについてペアリングをしていきます。
2021/11/30 修正
一旦、残りのスープと麺固さのペアリングを全て済ませます。
済ませてから、背脂 チャーシュー ネギのペアリング済みのテーブルとALL Pairになったか確認しながら
ドッキングします。
ということは、ALL Pair法による生成は、水準数の多い因子が支配的だということです。
ここまで生成したものを、スープと麺固さでソートして、ダマが無いか確認します。

ネギに対してALL Pairのペアリングできていないので、背脂とチャーシューとネギのテーブルずらしをしておきます。

空いているところに、背脂とチャーシューとネギのテーブルをはめ込みます。

スープと背脂とチャーシューとネギについては、ALL Pairできたので、このテーブルを麺固さでソートして、麺固さについてもALL Pairでペアリングできているかを確認します。

できていそうですね。
15件のテストデータになりました。
ALL Pair使わない場合、各因子の水準数のかけ算になりますので、
5✕3✕2✕2✕2 で、120件ということになります。120件のテストのところを15件で済ませるという技法になります。
### PictMasterを使った場合
手作業で生成できるのは、簡単な練習問題程度のテストですが、実際のテストでは、もっと多くの因子や水準数を扱うことが多いです。ALL Pairする様子を観察したかったので、手作業の場合を事例としてあげましたが、手作業で行なうのはお薦めしません。これから紹介するPictMasterやGIHOZで用意されているPairwise法を利用することを推奨します。

PictMasterは、Excelマクロで動作するツールです。パラメータと値を入力して、実行ボタン押すだけです。
### GIHOZを使った場合

こちらはブラウザから利用できるツールで、やはり表形式でパラメータと値を入力して、(画面下の方の)テストケースを生成ボタン押しだけです。
手作業でチマチマやっていたのは、なんだったんだ という感じ。
# 生成されたテストデータの比較
生成されたテスト件数は、どの方法でも同じ15件になりました。
並べ替えて比較してみましょう。
### 手作業とPictMaster
2021/11/30修正

一致したのは、1つだけ・・・
### PictMasterとGIHOZ

この場合も、3つだけですね。生成の仕組みが何か違うのでしょう。GIHOZはデフォルトシードにしましたが、PictMasterでは、CIT-BACHを生成エンジンに使いました。
### 手作業とGIHOZ
2021/11/30修正

PictMasterの場合と一致したテストデータが微妙に違いますね。
生成エンジンが違うので、できるものは違う。なんか当たり前の結論です。
# 変化への耐性を比較
ここからは、手作業はしません。
麺種類として、極太麺と普通麺と極細麺の仕様追加を行ないます。120件だったテストは、このままでは360件になってしまいますね、15件でも45件になるのでしょうか。やってみましょう。
### PictMasterの場合

Excel表を修正して、ボタン押すだけです。
16件のテストデータでした。1件しか増えていません。
### GIHOZの場合

こちらもブラウザ画面の表を修正してボタン押しだけです。やはり16件となりました。
PictMasterもGIHOZも、新たに追加された因子に対して、ALL Pair法によるテストデータ生成を実施し、16件で生成されたことがわかりました。ここがALL Pair法の強みです。45件または360件のテストデータに比べて、網の目が粗くなったのは事実ですが、ALL Pairという技法を使って旨く網羅したテストデータを生成した結果が16件ということになります。360件のテストが仮に1週間費やしたとして、16件ならば半日でできるかもしれません。これは、Weeklyリリースで開発を行なっている場合に、例えばバグが見つかっても、来週のリリースに間に合うか・間に合わないかの分かれ目になります。(極端な例かもしれませんが。)
# 制約条件を追加してみる
極太麺は塩味スープでは選択不可、極細麺は、味噌味では選択不可とします。
例えば、麺とスープの絡み具合への拘りとか。
### PictMasterの場合

環境設定ボタンから制約表を有効化して、スープと麺種類の制約表を記述します。
生成結果は15件でした。
### GIHOZの場合

制約表の使用スイッチを入れて、因子毎に制約表を記述します。
生成結果が16件になりました。1件増えた!
どの様な生成結果になったのか、並べ替えて比較してみました。

GIHOZでは、魚介系のテストが1件追加になっているのが判ります。
こちらも、「生成エンジンの違い」としか判りませんが、仮に追加になった1件でバグが見つかったなら、GIHOZにして良かったと言えるし、何もバグが見つからなかったら、PictMasterの方が生産性が高いということになります。
# 総括
ALL Pair法を手作業・2つのツールとで比較してみました。
比較して判るのは、
1. 手作業でテストデータを生成するのは、よほどで無い限りお薦めできない。
2. 仕様変更やテスト中の様々なテスト条件変化に対して、2つのツールともに、十分対応できそう。
3. 生成エンジンの違いにより、テストデータに違いが生じる場合がある。
文中でGIHOZとしましたが、ALL Pair = GIHOZ ではありません。GIHOZには他にもテスト設計作業を支援してくれる機能もあり、リポジトリの共有を使って、テスト仕様のレビュー等にも使えるのではないかと思います。
一方、PictMasterでは、2因子間は100%のペアリングなのは当然として、3因子になると、どのくらい低下するのか確認する機能があったりと、まだ他にも使いこなせていない機能が多いです。

ツール・道具は、使いようです。
GIHOZやPictMasterと旨くつきあって、テストをより効果的な活動にしたいものです。