PICTを使ってみませんか?

はじめに
こんにちは!株式会社BTMの関口と申します。業務を行っていくにあたって、テストについて調べていたのですが、PICTという便利なツールの存在を知りました。ここではPICTについて紹介させていただきます。
PICTとは
PICTとは、組み合わせのテストケースを自動生成するMicrosoft製のCLIツールです。入力項目等が複数ある場合、手動では膨大になるテストケースを、ペアワイズ法に基づき効率的に生成できます。名前は Pairwise Independent Combinatorial Testing の頭文字です。
ペアワイズ法とは
ペアワイズ法は「ほとんどのバグは1つまたは2つの要素の組み合わせで発生する」という仮説に基づき、要素間の各ペアを網羅するテストケースを生成する手法です。全組み合わせを試さずに、効果を維持しつつケース数を減らせます。
インストール
以下はUbuntu(WSL2)とMacOSでの手順です。
環境 | バージョン |
---|---|
Ubuntu(WSL2) | 22.04.5 LTS |
MacOS | Sonoma 14.5 |
PICT | 3.7.4 |
Ubuntu(WSL2)
sudo apt-get install clang libc++-dev
git clone https://github.com/Microsoft/pict.git
cd pict/
make
sudo install -m 0755 pict /usr/local/bin/pict
MacOS
git clone https://github.com/Microsoft/pict.git
cd pict/
make
sudo install -m 0755 pict /usr/local/bin/pict
インストール後、pict
と入力して以下が表示されればOKです:
Pairwise Independent Combinatorial Testing
Usage: pict model [options]
Options:
/o:N|max - Order of combinations (default: 2)
...
シンプルな使い方
Webアプリの実行環境を以下のように定義し、96通りをペアワイズで生成します:
ClientOS: Ubuntu, CentOS, MacOS, Windows
Browser: Chrome, FireFox, Edge
WebServer: NGINX, Apache
ServerOS: Ubuntu, CentOS, RHEL, Windows
これを input.txt
に保存し、以下を実行します:
pict input.txt
出力例(16件):
ClientOS | Browser | WebServer | ServerOS |
---|---|---|---|
Windows | Chrome | Apache | CentOS |
この16件で全要素ペアを網羅しています。
PICTで出来ること
機能名 | 概要 |
---|---|
条件付き制約 | if文で条件成立時の組み合わせ制限を追加 |
無条件制約 | 常に有効な制約を設定 |
サブモデル | 項目をグループ化し組み合わせを調整 |
エイリアス | 複数の値を同値として扱う |
無効値テスト | 失敗を引き起こす組み合わせを除外 |
重み付け | 各値の出現頻度を調整 |
原型ファイル | 既存ケースを基に追加生成 |
エイリアス
同値クラスを定義する例:
ClientOS: Ubuntu | Kubuntu | Xubuntu | Lubuntu, CentOS, MacOS, Windows
Browser: Chrome, FireFox, Edge
WebServer: NGINX, Apache
ServerOS: Ubuntu, CentOS
出力件数が19→12に削減されました。
まとめ
PICTは柔軟性の高い組み合わせテスト生成ツールです。今回紹介しきれなかった機能も活用することで、さらに効率的なテストケースが生成できます。
詳細はGithub PICTをご覧ください。
株式会社BTMではエンジニアの採用をしております。ご興味がある方は是非こちらをご覧ください。
-
SNS
-
投稿日
-
カテゴリー
BTM Useful