iOS/AndroidにCucumberのBDDをもたらすテストフレームワークCalabashの基礎知識とインストールスマホ向け無料システムテスト自動化ツール(4)(1/3 ページ)

本連載では、AndroidおよびiOSアプリ開発における、システムテストを自動化するツールを紹介していきます。今回から数回にわたりオープンソースの「Calabash」、特に「Calabash-Android」を中心に解説。今回は特にツールの基本的な設定・操作方法などを説明します。

» 2014年12月16日 18時00分 公開
[伊藤宏幸テスト自動化研究会(STAR),楽天株式会社]

BDDフレームワークのスマホ向けラッパー「Calabash」

「スマホ向け無料システムテスト自動化ツール」のインデックス

連載目次

 Calabashは、BDD(Behavior-Driven Development/振る舞い駆動開発)フレームワークの一つとして著名な「Cucumber」の、AndroidおよびiOS向けのラッパーです。それぞれ「Calabash-Android」「Calabash-iOS」と呼称します。

 Xamarin社によって開発・保守されているオープンソースツールで、Eclipse Public License 1.0で提供されています。なお本稿執筆時点(2014年11月)で、Calabash-Androidの最新バージョンは0.5.2です。

 ちなみにcalabashとは、英語で「ひょうたん」の意味です。Cucumberが「きゅうり」を意味するので、同じウリ科の植物に名前をそろえたようです。

 なお、BDD(Behavior-Driven Development/振る舞い駆動開発)については連載「いまさら聞けないTDD/BDD超入門」で扱っていますので、こちらも参考にしてください。

Calabashの特徴

 Calabashの一番の特徴は、Cucumberで採用されている、「Gherkin」と呼称される「Given」「When」「Then」のシナリオ形式で、Androidに特化した機能を検証できるテストを記述できることです(ちなみにGherkinとは、英語で「ピクルスに入っている小さいきゅうり」や「ニシインドコキュウリ」の意味です。こちらもウリ科ですね)。

 このシナリオ形式は、開発者やテスターだけではなく、ビジネスアナリストやUXデザイナーらにも読みやすい記述が可能となります。そのため、プロダクト開発に関わる全ロールのメンバー間で、開発・テストすべきモノの共通認識を作りやすくなるというメリットがあります。

 以下に、Calabash-Androidの構成要素と、サンプルプログラムに基づいたテストの具体例と簡単な説明を紹介します。

 なお、本稿の説明で使用するサンプルプログラムを下記に公開しております。本稿と併せてご確認ください。

Calabash-Androidの構成要素

 Calabash-Androidのテストは、大きく次の3つの要素によって構成されます。

  1. フィーチャー:Calabash-Androidの実行単位としてのテストファイルのこと
  2. (テスト)シナリオ:フィーチャーファイル内の個々のテストケースのこと
  3. ステップ:シナリオ内の1ロジックのこと

 ちなみに1.の「フィーチャー」の本来の意味は、「それ単体でもリリース可能なプロダクトの機能」のことです(『BDD in Action』第4章)。「それ単体でもリリース可能」であるため、結果としてエンドツーエンドのテストを記述するのに適切な粒度となります。

 また、前述の「Given」「When」「Then」は、ステップとして使用できる要素です。その意味は次の通りです。

  1. Given:事前条件
  2. When:操作
  3. Then:検証
  4. And:「Given」「When」「Then」を複数のステップにまたがって表現したいときに使用

 上記を図にまとめると、次のようになります。

Calabashの構成要素

テストの具体例

 テストの具体例を、サンプルプログラムの「{プロジェクトのルート}/features/AddCustomer.feature」を例に説明します

Feature: Add customer

 こちらは必須で、テスト対象のフィーチャー名(≒テストファイル名)を、最初に記述します。

In order to know the basics of Calabash-Android
As a trial user of HelloTesting
I want to add customer data and watch it

 こちらは任意で、必要に応じて、そのフィーチャーが何を実現するものなのかを簡潔に説明します。ユーザーストーリーの書式で記述するのが、一般的かつ分かりやすいです。

 なお、ユーザーストーリーの書式例については、「Connextra Format」も併せて参考にしてください。

Scenario: Add customer information and preview it
 
	Given I press "button_add"
	# そのテストシナリオの事前条件を記述します。
 
	When I enter text "ほむら" into field with id "name"
	# そのテストシナリオで行う操作を記述します。
	And  I enter text "homumado@example.com" into field with id "email"
	And  I press "genderFemale"
	# このように、"And"で記述をつなぐことも可能です。
 
	Then I should see "ほむら"
	# 操作後の検証内容を記述します。

 こちらは必須で、フィーチャーを検証するためのシナリオを記述していきます。なお、フィーチャーファイル内で日本語を扱うためには、「UTF-8」でファイルを作成する必要があります。

その他

 Calabash-AndroidはAndroid 2.2以降に、Calabash-iOSはiOS 4.0以降に対応しています。

 同一プロダクトをAndroid/iOS双方で提供する場合、AndroidアプリとiOSアプリとの間でテストシナリオの共通化を図ることができます。

 スマートフォンの操作、検証に特化したAPIが提供されています。

  • 用意されている機能
    • スクリーンショットの撮影ができる。ただし、機能に不足があるため、用途に応じて機能を拡張する必要がある(次回解説)
    • GPSや地図の操作機能がある
  • 用意されていない機能
    • Selenium IDE/Builderのようなレコード&リプレー機能はない
    • 端末の回転機能はサポートされていない

 「Xamarin Test Cloud」「Sauce Labs」といった、クラウドベースの統合テスト環境との連携が可能です。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。