Calabash-AndroidによるBDDの実践とJenkinsによる「Living documentation」:スマホ向け無料システムテスト自動化ツール(6)(4/4 ページ)
本連載では、AndroidおよびiOSアプリ開発における、システムテストを自動化するツールを紹介していきます。今回は、Calabash-AndroidによるBDD実践のポイント、表形式の活用による仕様の発見、「Living documentation」で「見せる化」を実現する方法などについて解説します。
Calabash-Androidで「Living documentation」を実現する3つのJenkinsプラグイン
このように、Calabash-Androidは、Cucumberのテスト結果リポート作成機能を利用できます。また、JenkinsのCucumber関連プラグインも多く提供されているため、プラグインを組み合わせることで、「Living documentation」を実現可能です。
ここでは、以下のプラグインを活用して、「Living documentation」をJenkinsで実現する方法を説明します。
- ジョブ実行結果ページで分かりやすく表示する「Cucumber Test Result Plugin」
- 円グラフなどで表示する「Cucumber Reports Plugin」
- 実行時間やメモリ使用量なども含めて多角的に表示する「Cucumber Performance Reports Plugin」
ジョブ実行結果ページで分かりやすく表示する「Cucumber Test Result Plugin」
「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 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 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」ディレクトリ以下にある全フィーチャーファイルのシナリオがテスト対象となります。
しかし開発を進めていくと、次のように全ての「フィーチャー」「シナリオ」をテストしたくない場合も出てきます。
- 作成/修正中のシナリオだけをテストしたい場合
- 特定のフィーチャーや、そのサブセットのみをテストしたい場合
- スモークテストを実施するために、テスト対象を絞りたい場合
- 「Slow test問題」を回避するために、テスト対象を絞りたい場合
このような場合に役に立つのが、ここで紹介する「タグ機能」です。なお、この機能は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のスクリーンショット機能についても紹介しますので、お楽しみに。
- iOS/AndroidのUIテストを自動化するAppiumのテストスクリプトの書き方とインスペクターの使い方
- SeleniumのUIテスト自動化をiOS/AndroidにもたらすAppiumの基礎知識とインストール方法、基本的な使い方
- Calabash-Androidのテスト高速化、GPS、スクショ、データ駆動型テスト
- Calabash-AndroidによるBDDの実践とJenkinsによる「Living documentation」
- Calabash-Androidでテストシナリオを作成する方法
- iOS/AndroidにCucumberのBDDをもたらすテストフレームワークCalabashの基礎知識とインストール
- Androidテストで便利なuiautomatorviewer、UiScrollableの使い方、テキスト入力API制限事項の回避方法
- Android SDK標準の何でもテストツールuiautomatorの基本的な使い方
- システムテスト自動化の基礎知識とMonkeyTalkの使い方
参考資料
- Calabasn-Androidのrdoc(0.5.2)
- BDD in Action
- Specification by Example
- Growing Object-Oriented Software Guided by Tests
- The Cucumber Book
- Cucumber Recipes
著者紹介
伊藤宏幸
楽天株式会社 開発プロセスオプティマイゼーション部 品質保証課 テスト駆動開発グループ所属 アジャイルコーチ
アジャイルコーチおよびシステムアーキテクトとして、実際に開発現場に入り、CI/CD(Jenkins)、TDD/BDDをベースとした技術基盤の構築と、それらをベースとした開発プロセスの改善支援を行っている。モットーは、開発効率の向上による「Be happy!」の実現。
2014年3月より、テスト自動化研究会(STAR)に参加。
2014年7月、アメリカで開催された世界最大のアジャイルのカンファレンス「Agile 2014」に登壇。
- テーマ『Technology-Driven Development: Using Automation and Techniques to Grow an Agile Culture』、公式サイトページ、プレゼン資料、論文
著書『プログラミングの教科書 かんたん UML入門』(共著/技術評論社)
ブログ「THE HIRO Says」
Twitter:@hageyahhoo
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
テスト自動化の歴史と今後、良い/悪い事例〜システムテスト自動化カンファレンス2013レポート
テスト自動化を開発の“武器”にするための3つのポイントや、“自動化”の良い事例、悪い事例など、テストの現場を「進化させる」知見が多数紹介されたカンファンレンスの模様をレポートする。ビジネス目標を見据えたテスト設計が肝!「DevOps時代のテスト自動化カンファレンス 冬の陣」開催
DevOpsの実践で肝となるソフトウェアテストの自動化。しかし@ITの読者調査でも50%以上が「テスト環境に課題あり」と回答した。これにどう対応すれは良いのだろうか? カンファレンス登壇者の言葉にヒントを探る。Kiwi+CocoaPodsで始めるiOSアプリの振る舞いテスト入門
現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説する連載。今回は、iOSアプリの機能の振る舞いをテストするテスティングフレームワークの特長とインストールの仕方、主な使い方を解説します。Android SDKでビジネスロジックのテストを自動化するには
- 第2回Androidテスト祭りレポート:Android開発の上層テストで失敗しないためのポイントとは
セキュリティ設計や受け入れテストガイドライン、CIツールJenkins+コードレビューGeritt、テスト効率化ノウハウ、リモートテストサービスなど