Squishで実践するビヘイビア駆動型テスト
Squishにおけるテストケースのスクリプト記述方法は2種類ある。従来通りスクリプトで記述するスクリプトテストベースと、振る舞いを中心としたシナリオ(テスト項目)を記述するビヘイビアテストベースがある。後者はユニット検証を動作の視点からテストしていく。ビヘイビア駆動型テストはシナリオベースなので、Gherkin手法の「Given(初期のコンテキスト)」「When(トリガーとなるイベント)」「Then(期待される結果)」で記述していくのが特徴だ。
なおビヘイビア駆動型テストは日本語でテストシナリオを記述できるので、とっつきやすく、分かりやすい。技術者以外の関係者が記述することも可能だろう。またテスト手順とテスト内容を分離して記述できるため、重複を防止し、再利用もしやすい。
実際のBDD(ビヘイビア駆動開発)テストスクリプトの記述例を見ていこう。ここでのアプリケーションはコーヒーマシンで、カプチーノを選んでいれるというシナリオを「Given、When、Then」で記述する。続いて実際のアプリを操作することで、スクリプトを自動で生成していく。レコーディングを開始するとコントロールバーにステップが表示されるので、必要に応じて検証ポイントを埋め込んでいく。図のサンプルはシンプルだが、実際は肉付けしたものとなる。作られたスクリプトは再利用も可能で、別のシナリオで共通するステップがあればステップを共有することも可能だ。
最後にCocoについて触れておこう。Squishとは別のツールで、コードカバレッジ分析ができる。坂本氏は「コードカバレッジをやる方は少ないと思いますが、ぜひともやっていただきたい」と力をこめる。
コードカバレッジ分析とは、自動テストでチェックされたコードの割合を測定するものだ。テストされていないコードやデッドコード(実行されないコード)の発見にもつながる。テストケースの不足を検出し、品質向上につなげるのに役立つ。
Cocoの対応言語はC、C++、C#、Tcl、SystemC、QMLで幅広く対応している。カバレッジ測定機能の自動埋め込み(Coverage Scanner)、カバレッジ結果を分析管理するためのGUI(Coverage Browser)などの機能がある。
Cocoはビルドシステムへの組み込みが容易で、すぐにコードカバレッジ分析を開始できる。分析結果はGUIで直感的に確認できるのもメリットとなる。テストごとの実行時間の比較や、ソースコードを修正した場合には影響を受けるテストケースを抽出することも可能だ。
最後にまとめとして坂本氏は「QAツールの導入でテスト工数削減、容易なテストケース記述、テストケースの再利用などが実現します。振る舞いベースのテストで技術者以外の参加を促進できて、カバレッジ測定ツールと連携すればテストの抜け漏れ防止にも役立ちます。今回は紹介できませんでしたが、テスト結果のデータ管理「Test Center」もあります。興味があればぜひお声がけください」と述べた。