🧪

テスト技法練習帳で使ったツールとコツ(macOS, PICT, GIHOZ)📗

2024/10/04に公開

はじめに

学習の背景

ソフトウェア開発のプロセスにおいて、テストは重要なフェーズです。プロジェクトによっては、開発者自身がテストを担当することもありますが、その際に「テストはしているものの、体系的なテスト技術が身についていない」と感じることがありました。
そこで、より深くテストの本質を理解し、効率的で効果的なテスト設計を学びたいと思い、『ソフトウェアテスト技法練習帳』を手に取りました。(以下、練習帳)

https://gihyo.jp/book/2020/978-4-297-11061-1

本記事の内容

練習帳の学習で利用したツールを紹介します。
この記事では組み合わせテストを作成する場合、PICTを利用しています。練習帳ではPictMasterを取り上げていますので、PictMasterを利用できる方はPictMasterを利用することをお勧めします。

利用ツール

  1. 紙のノートとボールペン
  2. Confluence(コンフル):テストケース作成、解答のメモ等
  3. GIHOZ:デシジョンテーブル、状態遷移図作成
  4. PICT:組み合わせテスト生成
  5. Googleスプレッドシート:テストケース管理

他にもツールや学習方法はあると思いますので、あくまでも参考程度にしてください。

それでは各章で利用したツールを紹介します。

Part1. 同値分割法と境界値分析

同値分割法と境界値分析を用いてテストケースを作成する章となります。

私はこの章ではConfluence(以下、コンフル)を使いました。
https://www.atlassian.com/ja/software/confluence

コンフルを使った理由としては、「見やすい」「ドキュメント管理がしやすい」からです。コンフルのテーブル機能を利用してテストケースを作成し、解答と照らし合わせて気になる点をメモしていました。
注意点ですが、コンフルのテーブル機能は非常に単純なため、複雑なテストケースを作成・管理するのには不向きです。フィルタ機能がないのが致命的な欠点です。

ちなみに、Part4(組み合わせテスト)ではGoogleスプレッドシートを利用しています。

Part2. デシジョンテーブル

デシジョンテーブルを作成する章です。

デシジョンテーブルの作成は、GIHOZを利用することにしました。

https://gihoz.com/login?fullPath=%2Frepositories

このように綺麗にデシジョンテーブルを作成できます。

また、[テストケースを生成]ボタンをクリックすると、テストケースを生成してくれます。生成されたテストケースの内容を修正する必要はありますが、便利です。

便利な機能:ルールの重複を教えてくれる

例えば、7列目と8列目のルールを重複させます。そうすると、列番号が赤くなります。

右上の黒三角にカーソルを合わせると、エラー内容が表示されます。

Part3. 状態遷移テスト

状態遷移図や状態遷移表等を作成する章です。

利用するツールは、引き続きGIHOZです。色をつけれる機能が便利です。

1スイッチカバレッジについては、以下の記事を参考にさせて頂きました。
https://note.com/yumotsuyo/n/nd3099b40dc1f

※社会人になってから行列の計算をする機会がなかったので、高校数学の復習をしました。

ちなみに、1スイッチカバレッジを計算するときは、掛けられる行列の値と掛ける行列の値のどちらかがイベントなし「-」であれば、積はイベントなし「-」となります。

Part4. 組合せテスト

因子水準表や組合せテストを作成する章です。

練習帳ではPictMasterを使っていますが、私はExcelを利用していないためPICTを利用しました。
GIHOZでも作成できそうですが、他のツールも利用してみたかったのでPICTを使うことにしました。

PICT参考

以下を参考にし、PICTを使います。

Microsoft 公式ドキュメント
https://zenn.dev/lincwell_inc/articles/efficient-coverage-test-using-pict
https://zenn.dev/msksgm/articles/20211128-slolve-software-method-by-pict

注意点

PICTとPictMasterではサブモデルで生成される組合せに違いが生じます。
そのため、PICTを使った場合、練習帳の解答と結果が異なる点にご注意ください。
https://qiita.com/ToshiManaPlus1/items/df9490896e2e09f89178

PICTを使ってみる

まずはインストールをします。

brew install pict

任意のフォルダにテキストファイルを作成します。ここでは hoge.txt とします。

試しに、hoge.txtに以下のコードをコピペします。

性別: 不明, 男性, 女性, 適用不能
種族: ヒューマン, エルフ, ドワーフ, ゴリラ
職業: 剣士, アーチャー, 召喚士, 魔王

以下のコマンドを実行し、テストケースを作成します。

pict hoge.txt

テストケースが作成されます。デフォルトでは2因子間です。オプションで増やすことができます。

このままだと見づらいので、Googleスプレッドシートにコピペします。

これにより、フィルタで特定の条件を絞り込むことができます。

PICTで制約をつける

PICTで制約をつけるためには、因子と水準の下に、制約を記述します。

例として、職業「魔王」は種族「ゴリラ」以外はなることができないとします。

性別: 不明, 男性, 女性, 適用不能
種族: ヒューマン, エルフ, ドワーフ, ゴリラ
職業: 剣士, アーチャー, 召喚士, 魔王

if [種族] <> "ゴリラ" then [職業] <> "魔王";

ifの行が制約となります。試しに、pictコマンドを実行します。

出力されたテストケースをフィルタリングすると、魔王はゴリラのみであることを確認することができます。

Part5. 総合問題

今までの学習の応用問題となります。

Part5のPICTの解答

Part5をPICTで実行した場合の解答です。

5-2

1人目: 戦士, 僧侶, 魔法使い, 武闘家, 商人, 遊び人, 賢者
2人目: 戦士, 僧侶, 魔法使い, 武闘家, 商人, 遊び人, 賢者
3人目: 戦士, 僧侶, 魔法使い, 武闘家, 商人, 遊び人, 賢者
[1人目] <> [2人目] and [1人目] <> [3人目] and [2人目] <> [3人目];

5-3

文字種: アルファベット大文字 | アルファベット小文字 | 数字
文字数: 1, 9, 18, 19, 25, 30

参考:Microsoft 公式ドキュメント

以上、各章で利用したツールの紹介でした。

さいごに

アウトプットを軸にした学習が非常に有意義で、楽しく学べました。

練習帳を執筆してくださった著者の皆さま、ありがとうございました。おかげさまで、テスト技術に対する理解を深めることができました。

Discussion