このように、Calabash-Androidは、Cucumberのテスト結果リポート作成機能を利用できます。また、JenkinsのCucumber関連プラグインも多く提供されているため、プラグインを組み合わせることで、「Living documentation」を実現可能です。
ここでは、以下のプラグインを活用して、「Living documentation」をJenkinsで実現する方法を説明します。
「Cucumber Test Result Plugin」は、Cucumberのテスト結果を、ジョブ実行結果ページで分かりやすく表示するプラグインです。以下、使い方を順に紹介します。
1)まず、「Cucumber Test Result Plugin」をJenkinsにインストールします。
2)次の例のように、JenkinsでCalabash-Androidのテストを実行し、JUnit形式のテストリポート用xmlファイルを作成します。
$ calabash-android run {YOUR_APK_FILE} -f junit -o calabash-result-reports
3)Jenkinsのジョブの後処理に「Cucumber Test Result Plugin」を追加し、上記で作成したxmlファイルを指定します。
4)テスト終了後、Jenkinsに「Cucumber Test Result」というリンクが表示されるようになります。これをクリックすることで、下記のようにJUnit形式のテスト結果リポートを確認できます。
「Cucumber Reports」は、Cucumberのテスト結果を円グラフなどで表示するプラグインです。以下、使い方を順に紹介します。
1)まず、「Cucumber Reports」をJenkinsにインストールします。
2)次の例のように、JenkinsでCalabash-Androidのテストを実行し、テストリポート用JSONファイルを作成します。
$ calabash-android run {YOUR_APK_FILE} -f json -o calabash-result-report.json
3)Jenkinsのジョブの後処理に「Cucumber Reports」を追加し、上記で作成したJSONファイルを指定します。
4)テスト終了後、Jenkinsに「Cucumber Reports」というリンクが表示されるようになります。
5)これをクリックすることで、下記のように円グラフのテスト結果リポートやシナリオ表を確認できます。
「Cucumber Performance Reports Plugin」は、Cucumberのテスト結果を、実行時間やメモリ使用量なども含めて多角的に表示するプラグインです。以下、使い方を順に紹介します。
1)まず、「Cucumber Performance Reports Plugin」をJenkinsにインストールします。
2)次の例のように、JenkinsでCalabash-Androidのテストを実行し、テストリポート用JSONファイルを作成します。
$ calabash-android run {YOUR_APK_FILE} -f json -o calabash-result-report.json
3)Jenkinsのジョブの後処理に「Cucumber Performance Reports Plugin」を追加し、上記で作成したJSONファイルを指定します。
4)テスト終了後、Jenkinsに「Cucumber Project Performance Report」というリンクが表示されるようになります。
5)これをクリックすることで、下記のようにシナリオ表、シナリオ/ステップ単位での実行時間、メモリ使用量などを確認できます。
Calabash-Androidでは通常、「{プロジェクトのルート}/features」ディレクトリ以下にある全フィーチャーファイルのシナリオがテスト対象となります。
しかし開発を進めていくと、次のように全ての「フィーチャー」「シナリオ」をテストしたくない場合も出てきます。
このような場合に役に立つのが、ここで紹介する「タグ機能」です。なお、この機能はCalabash-Androidのラップ元であるCucumberで提供されています。
タグは、シナリオの前に「@xxx」の書式で定義できます。下記の例のように、複数指定することも可能です。
@basic Scenario: Add customer information and preview it @basic @advanced ←複数指定可能 Scenario: Add customer information and preview it by using WebView
「calabash-android run {YOUR_APK_FILE}」コマンド実行時に「-t @xxx」のようにオプションを指定することで、指定したタグのシナリオのみをテストできます。
次の例は、「@advanced」タグの付いているシナリオのみを実行します。
$ calabash-android run {YOUR_APK_FILE} -t @advanced
Cucumberと同様、次の書式で複数のタグを「and」「or」「not」の組み合わせて指定できます。
オプション | 意味 |
---|---|
-t @foo -t @bar | @foo and @barのシナリオを実行 |
-t @foo,@bar | @foo or @barのシナリオを実行(カンマの後にスペースを入れないこと!) |
-t ~@foo | @foo以外のシナリオを実行 |
本稿では最後に、テスト量が多過ぎて時間がかかる場合にタグを活用する方法を紹介しましたが、テストを高速化する方法は、他にもあります。次回は、テストのライフサイクル変更によるテスト実行サイクル高速化の実現について解説します。また最後に、「データ駆動型テスト」やCalabash-Androidのスクリーンショット機能についても紹介しますので、お楽しみに。
楽天株式会社 開発プロセスオプティマイゼーション部 品質保証課 テスト駆動開発グループ所属 アジャイルコーチ
アジャイルコーチおよびシステムアーキテクトとして、実際に開発現場に入り、CI/CD(Jenkins)、TDD/BDDをベースとした技術基盤の構築と、それらをベースとした開発プロセスの改善支援を行っている。モットーは、開発効率の向上による「Be happy!」の実現。
2014年3月より、テスト自動化研究会(STAR)に参加。
2014年7月、アメリカで開催された世界最大のアジャイルのカンファレンス「Agile 2014」に登壇。
著書『プログラミングの教科書 かんたん UML入門』(共著/技術評論社)
ブログ「THE HIRO Says」
Twitter:@hageyahhoo
Copyright © ITmedia, Inc. All Rights Reserved.