23
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?