ブログ

Blog

PICTを使ってみませんか?

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