テストを効率化するためにPictMasterを使ってみる

# 目的

項目と値の組み合わせテストがとても多く、全て実施するのは現実的ではないので、品質を保ちつつ組み合わせを減らしたいのです:thinking:

まぁ手動じゃなく自動でテスト実施していけば最終的には全部できるんじゃない？っと言われればそれまでですが・・・その前に減らしたい。


# テストケースを減らすには

直交表、HAYST法、ペアワイズ法・・・おぉん、どれがマッチするか全部確認するのに時間がかかりそう。

因子は入力フィールドとかで、水準は入力フィールドだったらそこに入る値って感じかな。
ツールもあるみたいだし、とりあえずペアワイズ法で考えよう:rolling_eyes:

「確率的な要因を備えた組み合わせ手法」ってことなので、どっかのパターンのみ発生するようなバグはもれてしまう可能性がありますね。
どっちにしろ全部テストできないなら妥協点をしっかり作らないといけないと思いますし、リスクとして捉えておくということで。


# 部屋とPictMasterと私

某サイトの説明を読んでみると
> PICTで生成されたテストケースを使用することにより，テストの質を落とさずに，組み合わせテスト実施に必要なテストケース数を従来の数分の1から数百分の1に削減することが可能です。

ふー、すんごい良さそう:hugging:
早速やってみる。

PICT使うには因子と水準のファイルを作ってー、制約があればそれも記述してー、ってこれ絶対やらない人でてきそうだし元となるテキストファイルのメンテナンスもどうなるんだろう。

~~私一人でやるのが嫌なので、~~誰でも気軽にテストケースを減らしたいのです。
以下のツールがとても良さそうでした。（このサイト自体が良い勉強になりそう）
Excelで操作となるので敷居は低いでしょう！

[組み合わせテストケース生成ツール「PictMaster」](https://ameblo.jp/pictmaster)


# PictMasterの環境構築

1. 作者様のサイトからPictMasterをダウンロードし解凍。

2. 解凍したフォルダ内にある『PictMasterユーザーズマニュアル.pdf』の"PictMasterのインストール"を参考に構築。


# PictMasterを単純に使ってみる

1. 適当に条件を作成
![aWS050296.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/9ed9d8fa-4915-8c2d-f612-6d3d08c02540.jpeg)

2. 環境設定を好きなように行う
![aWS050293.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/c65b918a-5439-dc23-dbb3-244abc40203d.jpeg)

3. 実行
![aWS050294.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/f2b77a71-e871-afb1-47cf-163f584bf5f6.jpeg)

4. できました:hugging:
![aWS050295.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/47e69224-730f-8982-1fd1-abcbcfa7f136.jpeg)

ただ、WindowsでSafariはいらないし、MacでIEとかもいらない。
制約を入れれば解決できそう。


# PictMasterを制約を入れて使ってみる

1. 環境設定で"制約表を使用する"にチェック（ついでに最適化も入れてみる）
![aWS050298.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/3102838b-8948-dfe3-4b9b-b161bcaafc86.jpeg)

2. 下に制約表が現れる
![aWS050297.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/db0805cc-263a-f5e0-b229-915bd4037cd5.jpeg)

3. 制約を入れていく
『PictMasterユーザーズマニュアル.pdf』を元に必要そうな情報をピックアップする。
● if条件はセルの色を変える
● 先頭に#を付けると記入した値以外という意味
● *や?のワイルドカードが使える
　
そしてできたのがこれ
![aWS050299.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/1d387bda-74e6-21a4-100c-f30d5c183774.jpeg)

4. 実行
狙った通り出せてますね。
![aWS050300.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/2ba409e9-4eeb-8338-889c-8a75529e0877.jpeg)
　
同一ディレクトリに出力される『a.txt』を見ると、PICTに渡している情報が見れてるのかな？

```text:a.txt
OS:	Windows 7,Windows 10,Windows Server 2012 R2,Windows Server 2016,OS X 10.11 El Capitan,macOS 10.12,macOS 10.13
ブラウザ:	IE,Edge,Chrome,Firefox,Safari
操作1:	入力,クリック

if ([OS] LIKE "Windows*" ) 
    then ([ブラウザ] <> "Safari" ) ;
if ([OS] LIKE "*OS*" ) 
    then ([ブラウザ] = "Chrome" or [ブラウザ] = "Safari" ) ;
```


# PictMasterのカバレッジを増やしてみる

こんな風に項目を増やしても・・・
![aWS050302.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/ea8c1ca6-65fe-c1a2-e274-2c94778e9945.jpeg)

今回のパラメータではテスト数に影響がでないようです。
![aWS050303.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/15996601-b9af-7355-714c-9d31c64e4f4c.jpeg)

環境設定の"組み合わせるパラメータ数"を増やしてみます。
![aWS050304.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/472da6a0-5070-9869-6123-0bd576536556.jpeg)

これで実行すると3wayカバレッジで作成されています。
![aWS050305.JPG](https://qiita-image-store.s3.amazonaws.com/0/187061/43018756-c25f-f80c-a4db-30cd3ce08568.jpeg)


# まとめ

- PictMaster使いやすい！Excel管理となるので操作の敷居が低い！
- 制約表は書き方に迷う人が出るかも⇒いたら一緒に制約を作ってあげる
- 重要なテストはカバレッジを上げた方が良いかも
- たまには環境設定でシードを変更して出力した方が内容が新鮮かも

んー社内で普及できるかもしれない:thinking: