どうもmiyachi(@_38ch)です。
あるSNSを開発していてテストをする場合に、よくある例として、どのデバイスでやるか、どのブラウザでやるか、どのログイン認証方法でやるかみたいな話が出てきます。
テストケースを決める因子としては、
- デバイス:Mac, Windows, iPhone, iPad, Android
- ブラウザ:Safari, Chrome, Firefox, IE
- ログイン認証方法:Facebookログイン、Twitterログイン、Googleログイン、Instagramログイン
これだけで、全てのケースを網羅しようとすると、
デバイス数(5つ) x ブラウザ数(4つ) x ログイン認証方法(4つ) = 80通り
80通りもあるわけです。
まぁ頑張って手分けしたらできるけど、できればやりたくないレベル。
ペアワイズ法を使ってテストケースを圧倒的に少なくする
ペアワイズ法とは、簡単にいうと、**「アプリのバグって基本的に、1つ、もしくは2つの因子によって引き起こされるよね。だから3つ以上因子があったとしても、すべての組み合わせ確認する必要ないよね」**的な思想に基づくテストケース作成法です。
ただ、自力でペアワイズ法をすでにあるテストケースに適応するのは、ちょっと難しいので、Microsoftが公開しているオープンソースの「PICT」とういうツールを使いましょう。
以下のステップで導入できます。
$ git clone https://github.com/Microsoft/pict.git
$ cd pict/
$ make
$ sudo install -m 0755 pict /usr/local/bin/pict
これでpictコマンドが使えるようになったので、次はテストケースをpictが読めるように書いてあげましょう。書き方は超シンプルでこんな感じ。
デバイス : Mac,Windows,iPhone,iPad,Android
ブラウザ : Safari,Chrome,Firefox,IE
ログイン認証方法 : Facebookログイン,Twitterログイン,Googleログイン,Instagramログイン
これを.txtの拡張子で保存してあげる。
PICTにテストケースを削減してもらう
ではTerminalから先ほど、単純計算で80通りあったテストケースがどれくらい少なくなったのか見てみましょう。
実行
$ pict test_case.txt
結果
デバイス ブラウザ ログイン認証方法
Windows Firefox Facebookログイン
iPad Safari Twitterログイン
Android Chrome Googleログイン
Windows IE Instagramログイン
iPad Firefox Googleログイン
iPhone IE Googleログイン
Windows Safari Googleログイン
iPhone Safari Instagramログイン
iPad IE Facebookログイン
iPhone Firefox Twitterログイン
Mac Safari Facebookログイン
Android IE Twitterログイン
Mac IE Googleログイン
Mac Chrome Twitterログイン
iPhone Chrome Facebookログイン
Android Firefox Instagramログイン
Windows Chrome Twitterログイン
iPad Chrome Instagramログイン
Android Safari Facebookログイン
Mac Firefox Instagramログイン
たったの20通り (1/4) に減っている!!
※ MacでIEとか組み合わせ的におかしいものは、条件書いて落とせるので詳細ググってみてください。
単純にケースが知りたい時は、/s
をお尻につけて実行してあげましょう。
$ pict test_case.txt /s
Combinations: 56
Generated tests:20
Generation time:0:00:00
それ本当に信頼できるのって方は、Microsoftが出してる論文読んでみてください。
Pairwise Testing in the Real World: Practical Extensions to Test-Case Scenarios