本連載では、AndroidおよびiOSアプリ開発における、システムテストを自動化するツールを紹介していきます。今回から数回にわたりオープンソースの「Calabash」、特に「Calabash-Android」を中心に解説。今回は特にツールの基本的な設定・操作方法などを説明します。
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の一番の特徴は、Cucumberで採用されている、「Gherkin」と呼称される「Given」「When」「Then」のシナリオ形式で、Androidに特化した機能を検証できるテストを記述できることです(ちなみにGherkinとは、英語で「ピクルスに入っている小さいきゅうり」や「ニシインドコキュウリ」の意味です。こちらもウリ科ですね)。
このシナリオ形式は、開発者やテスターだけではなく、ビジネスアナリストやUXデザイナーらにも読みやすい記述が可能となります。そのため、プロダクト開発に関わる全ロールのメンバー間で、開発・テストすべきモノの共通認識を作りやすくなるというメリットがあります。
以下に、Calabash-Androidの構成要素と、サンプルプログラムに基づいたテストの具体例と簡単な説明を紹介します。
なお、本稿の説明で使用するサンプルプログラムを下記に公開しております。本稿と併せてご確認ください。
Calabash-Androidのテストは、大きく次の3つの要素によって構成されます。
ちなみに1.の「フィーチャー」の本来の意味は、「それ単体でもリリース可能なプロダクトの機能」のことです(『BDD in Action』第4章)。「それ単体でもリリース可能」であるため、結果としてエンドツーエンドのテストを記述するのに適切な粒度となります。
また、前述の「Given」「When」「Then」は、ステップとして使用できる要素です。その意味は次の通りです。
上記を図にまとめると、次のようになります。
テストの具体例を、サンプルプログラムの「{プロジェクトのルート}/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が提供されています。
「Xamarin Test Cloud」「Sauce Labs」といった、クラウドベースの統合テスト環境との連携が可能です。
Copyright © ITmedia, Inc. All Rights Reserved.