GUIテストツール「Jubula」

Eclipse 3.7 Indigoの新機能紹介も4回目になるが、今回はGUIテストツールJubulaを紹介したい。JubulaはSwing、SWT、HTMLに対応したGUIアプリケーション向けの機能テストツールで、独Bredexの商用製品であるGUIテストツールGUIdancerのコアコンポーネントがEclipse Foundationに寄贈されオープンソース化されたものだ。

図1 : JubulaのWebサイト

なお、Eclipse.orgで提供されているIndigoのパッケージのうち、Jubulaに標準で同梱されているのはEclipse for Testersのみとなっている。もちろんそれ以外のパッケージを使用している場合でも更新マネージャを使用してIndigoの更新サイトからインストールすることができる。また、JubulaのWebサイトにはスタンドアロンアプリケーションとして実行するためのインストーラも用意されている。本稿の執筆にあたってはインストーラを用いてインストールしたJubulaを使用した。

なお、Jubulaを利用するにはテスト対象のアプリケーションとのやり取りを仲介するためのAUTエージェントと呼ばれるエージェントプログラムが必要となる。AUTエージェントはJubulaのスタンドアロンインストーラを用いてインストールできる。

JubulaによるGUIテスト

それでは実際にJubulaを起動してテストケースを作成してみよう。テストケースの作成は「Functional Test Specification」で行う。Test Case Browserビューからテストケースエディタにアクションをドラッグ&ドロップすることでテストケースを作成していく。Test Case Browserビューにはコンポーネントへの値の入力やチェック、ボタンのクリックなど、様々なアクションが用意されている。

入力値や確認値は変数にしておくことで、Data Setsビューで変数に設定するテストデータを作成することができる。テストの実行時は作成したデータのパターン数分繰り返し実行される。

図2 : テストケースの作成

テストケースのアクションが対象とするコンポーネントと実際のアプリケーションのコンポーネントとのマッピングは、AUTエージェントでテスト対象のアプリケーションを起動した状態でJubulaのマッピングモードを使用する。テスト対象のアプリケーションの画面コンポーネントにマウスカーソルをあわせて[CTRL]+[SHIFT]+[Q]でコンポーネントの情報をキャプチャし、テストケース側で指定したコンポーネント名とのマッピングを行う。

図3 : コンポーネントのマッピング

テストは複数のテストケースをまとめたテストスイート単位で実行する。テストが完了するまではマウスなどに触らないこと。テストに失敗した場合はそのときのスクリーンショットが自動的に取得されるため、あとから原因を調べる際に役立つだろう。

図4 : テストの実行結果

Jubulaにはチートシート(Helpメニューの[Cheat Sheats (Tutorial...)])にチュートリアルが用意されているので、まずはそれを試してみるといいだろう。また、ヘルプも充実しているので一通り目を通しておくことをお勧めする。

また、Jubulaのインストールディレクトリに含まれているtestexec.exeを使用することでコマンドラインからJubulaのテストスイートを実行することができる。JenkinsでJubulaのテストを実行するための方法がこちらのブログで紹介されているが、設定手順はやや煩雑だ。

まとめ

JubulaでのGUIテストはエージェントのセットアップの手間や、テストケースの作成にかかる作業が煩雑なため使いこなすにはそれなりの学習コストを必要とする。ただし、エディタや各種ビューなどは丁寧に作りこまれており、ツールとしての使い勝手は悪くない。もともと商用製品だったためかチートシートやヘルプといったドキュメントが比較的充実している点も好印象だ。アプリケーションの操作をキャプチャしてテストケースの雛形として利用できるような機能があるとより使いやすくなるだろう。

GUIアプリケーションの自動テストはこれまでも様々なアプローチのツールが登場してきたが、様々な問題からユニットテストほど普及しているとは言い難いのが現状だ。Eclipse標準のテストツールとしてJubulaが利用可能になることでこれまでの状況に変化が訪れるのかがどうかを見守りたい。