LoginSignup
8
3

More than 1 year has passed since last update.

ALL Pair生成、手作業 vs PictMaster vs GIHOZ

Last updated at Posted at 2021-11-28

概要

ALL Pair法によるテストデータの生成を、手作業とPictMasterGIHOZで実施、比較してみる。

お題

ラーメンのメニュー

因子 パラメータ1 パラメータ2 パラメータ3 パラメータ4 パラメータ5
スープ 醤油 味噌 豚骨醤油 魚貝系
麺固さ 固目 柔らかめ 普通
背脂 多め 少なめ
チャーシュー 肉厚 普通
ネギ 多め 少なめ

生成してみる

手作業

水準数の多い因子からペアリングするのが旨くいきます。
同時に、水準数の少ない因子もペアリングします。
allPair009.png
醤油と味噌に対しても麺固さを3通りペアリングしている様子です。
同時に、背脂とチャーシューとネギについてもペアリングをしています。
このようにALL Pair法では、どこかで2つの因子が組み合わされていればOKとしています。
スープと麺固さとをペアリングしている最中に、背脂とチャーシューとネギについては、ALL Pairでペアリングが済みました。
次は、残りのスープと麺固さについてペアリングをしていきます。
2021/11/30 修正
一旦、残りのスープと麺固さのペアリングを全て済ませます。
済ませてから、背脂 チャーシュー ネギのペアリング済みのテーブルとALL Pairになったか確認しながら
ドッキングします。
allPair013.png
~塩と豚骨醤油についても、同様にペアリングをしています。この時、背脂とチャーシューとネギについては、既にペアリング済みのものをそのまま流用しています。これで、スープあるいは麺固さに対して、背脂あるいはチャーシューあるいはネギとも一度はペアリングできます。~
ということは、ALL Pair法による生成は、水準数の多い因子が支配的だということです。
ここまで生成したものを、スープと麺固さでソートして、ダマが無いか確認します。
allPair014.png
ネギに対してALL Pairのペアリングできていないので、背脂とチャーシューとネギのテーブルずらしをしておきます。
allPair015.png
空いているところに、背脂とチャーシューとネギのテーブルをはめ込みます。
allPair016.png
スープと背脂とチャーシューとネギについては、ALL Pairできたので、このテーブルを麺固さでソートして、麺固さについてもALL Pairでペアリングできているかを確認します。
allPair017.png
できていそうですね。
15件のテストデータになりました。
ALL Pair使わない場合、各因子の水準数のかけ算になりますので、
5✕3✕2✕2✕2 で、120件ということになります。120件のテストのところを15件で済ませるという技法になります。

PictMasterを使った場合

手作業で生成できるのは、簡単な練習問題程度のテストですが、実際のテストでは、もっと多くの因子や水準数を扱うことが多いです。ALL Pairする様子を観察したかったので、手作業の場合を事例としてあげましたが、手作業で行なうのはお薦めしません。これから紹介するPictMasterやGIHOZで用意されているPairwise法を利用することを推奨します。
pictmaster001.png
PictMasterは、Excelマクロで動作するツールです。パラメータと値を入力して、実行ボタン押すだけです。

GIHOZを使った場合

gihoz001.png
こちらはブラウザから利用できるツールで、やはり表形式でパラメータと値を入力して、(画面下の方の)テストケースを生成ボタン押しだけです。
手作業でチマチマやっていたのは、なんだったんだ という感じ。

生成されたテストデータの比較

生成されたテスト件数は、どの方法でも同じ15件になりました。
並べ替えて比較してみましょう。

手作業とPictMaster

2021/11/30修正
手とpict_002.png
一致したのは、1つだけ・・・

PictMasterとGIHOZ

pictとgihoz.png
この場合も、3つだけですね。生成の仕組みが何か違うのでしょう。GIHOZはデフォルトシードにしましたが、PictMasterでは、CIT-BACHを生成エンジンに使いました。

手作業とGIHOZ

2021/11/30修正
手とgihoz_002.png
PictMasterの場合と一致したテストデータが微妙に違いますね。
生成エンジンが違うので、できるものは違う。なんか当たり前の結論です。

変化への耐性を比較

ここからは、手作業はしません。
麺種類として、極太麺と普通麺と極細麺の仕様追加を行ないます。120件だったテストは、このままでは360件になってしまいますね、15件でも45件になるのでしょうか。やってみましょう。

PictMasterの場合

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

GIHOZの場合

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

制約条件を追加してみる

極太麺は塩味スープでは選択不可、極細麺は、味噌味では選択不可とします。
例えば、麺とスープの絡み具合への拘りとか。

PictMasterの場合

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

GIHOZの場合

gihoz003.png
制約表の使用スイッチを入れて、因子毎に制約表を記述します。
生成結果が16件になりました。1件増えた!
どの様な生成結果になったのか、並べ替えて比較してみました。
制約の比較001.png
GIHOZでは、魚介系のテストが1件追加になっているのが判ります。
こちらも、「生成エンジンの違い」としか判りませんが、仮に追加になった1件でバグが見つかったなら、GIHOZにして良かったと言えるし、何もバグが見つからなかったら、PictMasterの方が生産性が高いということになります。

総括

ALL Pair法を手作業・2つのツールとで比較してみました。
比較して判るのは、
1. 手作業でテストデータを生成するのは、よほどで無い限りお薦めできない。
2. 仕様変更やテスト中の様々なテスト条件変化に対して、2つのツールともに、十分対応できそう。
3. 生成エンジンの違いにより、テストデータに違いが生じる場合がある。

文中でGIHOZとしましたが、ALL Pair = GIHOZ ではありません。GIHOZには他にもテスト設計作業を支援してくれる機能もあり、リポジトリの共有を使って、テスト仕様のレビュー等にも使えるのではないかと思います。
一方、PictMasterでは、2因子間は100%のペアリングなのは当然として、3因子になると、どのくらい低下するのか確認する機能があったりと、まだ他にも使いこなせていない機能が多いです。
pictmaster004.png

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

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3