LoginSignup
22
16

More than 5 years have passed since last update.

ペアワイズ法を使ってテストケースを自動で削減する

Last updated at Posted at 2018-04-26

どうも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

22
16
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
22
16