テスト技法練習帳で使ったツールとコツ(macOS, PICT, GIHOZ)📗
はじめに
学習の背景
ソフトウェア開発のプロセスにおいて、テストは重要なフェーズです。プロジェクトによっては、開発者自身がテストを担当することもありますが、その際に「テストはしているものの、体系的なテスト技術が身についていない」と感じることがありました。
そこで、より深くテストの本質を理解し、効率的で効果的なテスト設計を学びたいと思い、『ソフトウェアテスト技法練習帳』を手に取りました。(以下、練習帳)
本記事の内容
練習帳の学習で利用したツールを紹介します。
この記事では組み合わせテストを作成する場合、PICTを利用しています。練習帳ではPictMasterを取り上げていますので、PictMasterを利用できる方はPictMasterを利用することをお勧めします。
利用ツール
- 紙のノートとボールペン
- Confluence(コンフル):テストケース作成、解答のメモ等
- GIHOZ:デシジョンテーブル、状態遷移図作成
- PICT:組み合わせテスト生成
- Googleスプレッドシート:テストケース管理
他にもツールや学習方法はあると思いますので、あくまでも参考程度にしてください。
それでは各章で利用したツールを紹介します。
Part1. 同値分割法と境界値分析
同値分割法と境界値分析を用いてテストケースを作成する章となります。
私はこの章ではConfluence(以下、コンフル)を使いました。
コンフルを使った理由としては、「見やすい」「ドキュメント管理がしやすい」からです。コンフルのテーブル機能を利用してテストケースを作成し、解答と照らし合わせて気になる点をメモしていました。
注意点ですが、コンフルのテーブル機能は非常に単純なため、複雑なテストケースを作成・管理するのには不向きです。フィルタ機能がないのが致命的な欠点です。
ちなみに、Part4(組み合わせテスト)ではGoogleスプレッドシートを利用しています。
Part2. デシジョンテーブル
デシジョンテーブルを作成する章です。
デシジョンテーブルの作成は、GIHOZを利用することにしました。
このように綺麗にデシジョンテーブルを作成できます。
また、[テストケースを生成]ボタンをクリックすると、テストケースを生成してくれます。生成されたテストケースの内容を修正する必要はありますが、便利です。
便利な機能:ルールの重複を教えてくれる
例えば、7列目と8列目のルールを重複させます。そうすると、列番号が赤くなります。
右上の黒三角にカーソルを合わせると、エラー内容が表示されます。
Part3. 状態遷移テスト
状態遷移図や状態遷移表等を作成する章です。
利用するツールは、引き続きGIHOZです。色をつけれる機能が便利です。
1スイッチカバレッジについては、以下の記事を参考にさせて頂きました。
※社会人になってから行列の計算をする機会がなかったので、高校数学の復習をしました。
ちなみに、1スイッチカバレッジを計算するときは、掛けられる行列の値と掛ける行列の値のどちらかがイベントなし「-」であれば、積はイベントなし「-」となります。
Part4. 組合せテスト
因子水準表や組合せテストを作成する章です。
練習帳ではPictMasterを使っていますが、私はExcelを利用していないためPICTを利用しました。
GIHOZでも作成できそうですが、他のツールも利用してみたかったのでPICTを使うことにしました。
PICT参考
以下を参考にし、PICTを使います。
注意点
PICTとPictMasterではサブモデルで生成される組合せに違いが生じます。
そのため、PICTを使った場合、練習帳の解答と結果が異なる点にご注意ください。
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
以上、各章で利用したツールの紹介でした。
さいごに
アウトプットを軸にした学習が非常に有意義で、楽しく学べました。
練習帳を執筆してくださった著者の皆さま、ありがとうございました。おかげさまで、テスト技術に対する理解を深めることができました。
Discussion