テストケース作成の工数削減に寄与、GUIテスト自動化ツール「Squish」
ここからは具体的なテスト(品質保証)ツールの1つ、Qt Groupの「Squish(スクイッシュ)」と「Coco」について解説していこう。SquishはGUIテスト自動化ツールで、Cocoはコードカバレッジ分析ツールだ。両者は独立しているため、どちらか片方のみの導入も可能で、別のツールと組み合わせることもできる。
まずはメインのSquishから深掘りしていこう。効率的かつ迅速なGUIテストの自動化を実現するツールだ。テスト対象はデスクトップ、モバイル、組み込み、Webアプリケーションと幅広く対応している。
現状ではQt フレームワークだけではなく、Visual Studio(Windows)、Java、 macOS、iOS(Xcode)、Android Studio、Web(HTML5)、Tk、VNCなど、GUIツールのほとんどを網羅している。それぞれ「Squish for Windows」というように、「Squish for 〜」とエディションが分かれている。
実際にテストを実施する場合にはテストケースを作る必要がある。その点、Squishではアプリ操作のレコーディング機能があり、テストスクリプトを自動生成することができる。具体的には、まずレコーディングボタンを押し、次に実際のアプリケーションを操作することで、その時の操作がスクリプトとして出力される。
ここで出力されるスクリプトの言語はPython、JavaScript、Perl、Ruby、Tclから選ぶことができる。記述方法はプログラム的に順番を記述するものと、後述するビヘイビア駆動型テストの2種類ある。
GUIテストで重要になるのがオブジェクトの認識だ。SquishではObject MapによるObject検索を行うため、位置情報に依存せず、UI Objectが移動しても検索可能だ。このObject Mapの実体はオブジェクトのPropertyとValueのリストとなる。オブジェクトツール内から検索し、特定するという手法をとっている。オブジェクトを特定すると検証ポイントを作成するが、これは先述したようにGUI操作とエディタによる記述のどちらも可能だ。
検証手段は次のように多岐にわたる。オブジェクトのプロパティ検証、画像検証(スクリーンショット取得)、Table検証(RowとColumnのデータを一括で検証)、Visual検証(画像とプロパティのハイブリッド)が可能だ。
こうした機能を持つSquishはEclipseベースの「Squish IDE」と呼ばれる開発環境と各種モジュールから構成されている。実際にユーザーが使うのはSquish IDEで、ここでテストスイートを作成する。起動すると下図のような画面が開き、テストケースやスクリプト、テスト結果が表示されている。
各種モジュールとはsquishrunner、squishserver、squish hookなどがあり、それぞれのプロセスに機能分散されており、TCP/IP通信している。
テスト環境はホストとターゲットが同一の環境に共存するだけではなく、ホストとターゲットが異なる環境に存在するケースも可能だ。後者は主に組み込み機器などになる。またテスト対象となるアプリケーションは1つ(単体)だけではなく、複数のアプリケーションが連携して稼働するような場合でもSquish IDEからテストすることも可能だ。
Squishを導入すると、先述したようなレコーディング機能でテストケース作成工数を削減できることが大きなメリットとなるだろう。テストケースはスクリプトで記述するので機能拡張が容易であり、再利用性も高くなる。高度なオブジェクト認識機能もGUIテストには有利に働くだろう。複数のプラットフォームで動作するアプリケーションや組み込み機器のテストも可能だ。