連載
» 2011年11月17日 00時00分 UPDATE

Androidアプリ開発テスト入門(1):Androidアプリ開発でテストを始めるための基礎知識 (1/3)

[宮田友美,日本Androidの会テスト部]

Androidアプリのテストに関する課題

 Android端末の普及は世界規模で増加の一途をたどっています。2011年秋冬モデルが発表され、発売予定のものを含むと日本で発売中のAndoridの携帯端末は100機種に迫ろうとしています。読者の皆さんの周囲を見渡しても、電車や街角でAndroidを採用したスマートフォンなど携帯端末を使用する人をよく見かけるのではないでしょうか。

 そして、スマートフォンに留まらずタブレットミュージックプレイヤー電子ブックリーダーPOSレジテレビなど、さまざまなデバイスがAndroidを搭載し始めています。Androidの採用が増えるにつれ、Androidアプリの種類が増えるので、アプリの開発案件も増えることになります。実際、本稿を読んでいる開発者の方の中にも、すでにAndroidアプリの開発に取り組んでいる方も多いのではないでしょうか。

 筆者も普段の業務の中でAndroidアプリを開発していますが、特に最近案件が増えている実感があります。おそらく、Java言語が開発言語として使えるため、非常に開発に取り組みやすいことも案件が増加している理由なのではないでしょうか。その半面、実際の開発を行っていると、主に「テスト」について課題を感じることが多くなりました。

【課題1】テストのノウハウが不足

 例えば、Androidは標準でテスト用APIがありますが、活用できる開発者の数は決して多くありません。そのうえ、Webや書籍を見てもテスト用APIを使ってテストを書くためのノウハウの情報が少ないため、案件のたびに試行錯誤しながら進めているのが現状です。

【課題2】Android自体のアップデートのスピードが速過ぎる

 そして、もう1つ問題があります。それは、Android自体のアップデートのスピードが速過ぎて付いていくのが大変な点です。Android自体に新機能や機能変更があるたびに、アプリを追随させ、そのうえでテストを記載するためのノウハウも追随させなければなりません。

 2011年10月11日にAndroid 4.0(コードネーム「Ice Cream Sandwich」)の発表がありました。2011年2月のAndroid 3.0(Honeycomb)の発表から、わずか8カ月でのメジャーアップデートです。Android 4.0では、タブレット向けの3.x系とスマートフォン向けの2.x系が統合し、大幅な機能変更や追加がありました。

日本Androidの会テスト部が教えます

 このように、さまざまなデバイス、OSのバージョンが発表されていくなかで、Androidアプリのテストをどのように実施していけばよいか、またバージョンアップや対応機種の増加にどのように追従していけばよいか、戸惑う開発者も増えているのではないでしょうか?

 このような状況を何とかしたいと考え、2010年9月、日本Androidの会テスト部を設立しました。

r13ehr_bor_rou_sha_w400.jpg

 幸いにもAndroidには、さまざまなテスティングフレームワークテストツールドキュメントなどがあります。テスト部は、これらの利用方法や、英文のドキュメント翻訳など、Androidのテストにかかわる情報を共有することを主な目的として活動しています。

 またテスト部では、月1回の頻度で集まり情報を共有しています。興味があればぜひ、ご参加ください。テスト部のサイトに前回までの活動内容とGoogle Groupsへのリンクがあります。読者皆さまの参加をお待ちしております。

 Androidのテストについては、以下の記事も参照しておいてください。

ma_icon_s_1.gif

Android開発で泣かないための「テスト」の重要性
第1回Androidテスト祭りレポート
その自由度の高さや多様性ゆえに、さまざまな課題を抱える、Androidアプリ開発の“テスト”に焦点を当てたイベントの模様を紹介します
Smart & Social」フォーラム 2011/9/5

本連載の予定

 本連載では、テスト部で培った下記のような項目のノウハウを実際のテストコード例とともに紹介していきます。

  • ビジネスロジックのテスト
  • UIのテスト
  • データベース(SQLite)のテスト
  • モックを使ったテスト
  • テストの自動化とCI
  • 非機能要件と受け入れテスト

 今回は、上記項目に関するテストを記載するための前提となる開発環境の構築についてお話しします。

単体テスト自動化のための環境設定

 Androidアプリのテストは自動化することを前提としています。Webアプリでもテストの自動化は一般的ですが、さまざまなデバイスやOSのバージョンでテストする必要性が高いAndroidアプリでは、テストを自動化することで、より自動化の恩恵を受けやすくなります。

 Android開発では、テスト対象のプロジェクトとは別に、「テストプロジェクト」を作成して、テストプロジェクトに「テストソース」を記述していきます。このテストプロジェクトで、ユニットテスト単体テスト)から受け入れテストまでのテストソースを記述可能です。

 本連載では、以下の環境でテストを作成していきます。Androidの開発環境は整っているものとします。

 以下の記事などを参照して、環境を構築しておいてください。本稿では、英語環境で説明していきますが、日本語環境の方は適宜読み替えてください。

ma_icon_s_2.gif

Android Market配布を目指しEclipseでHelloWorld!
Androidで動く携帯Javaアプリ作成入門(1)
ドコモやauでも端末が発売されるAndroid。その前に自分が作ったアプリを配布できるようにしておくと大きなチャンスです!
Smart & Social」フォーラム 2008/12/8

 なお、本連載ではAndroid 2.3のアプリを主なテスト対象としていきます。

Eclipseでテストプロジェクトを作成

 環境が整ったら、まずは、プロジェクトとテストプロジェクトを新規作成しましょう。

テスト対象のプロジェクトを作る

 テスト対象のプロジェクトは、「Hello, World」を参考に作成した「HelloAndroid」プロジェクトを使用します。英語で分からないという方は上記記事なども参考にしてください。

テストプロジェクトを作る

 テストを記述するにはテスト対象となるアプリが必要です。ここでは上記の「テスト対象のプロジェクトを作る」で作成した「HelloAndroid」プロジェクトをテスト対象とします。以下の手順でHelloAndroidTestプロジェクトを作成します。

 Eclipseのメニューバーから[New]→[Project]→[Android]→[Android Test Project]を選択します。

r1301.gif

 [Next]ボタンをクリックした先で、[Project name]に「HelloAndroidTest」と入力し、[Finish]ボタンをクリックします。

r1302.gif

 [Test Target](テスト対象プロジェクト)で[An existing Android project]を選択し「HelloAndroid」を選択して、[Finish]ボタンをクリックします。

r1303.gif

テストプロジェクトの構成

 テストプロジェクトの構成は、通常のAndroidアプリのプロジェクト構成と同じです。作成したテストプロジェクトは以下のような構成になっていると思います。

r1304.gif

 ADTからTestプロジェクトを利用すると、以下の設定を自動で行います。

  • テストランナーとして、InstrumentationTestRunnerを設定
<instrumentation 
  android:name="android.test.InstrumentationTestRunner"
  android:targetPackage="com.example.helloandroid" />
  • テストプロジェクトのパッケージを自動で設定({テスト対象プロジェクトのデフォルトパッケージ}.test)

 ただし、ユニットテストではテスト対象とテストクラスを同じパッケージに置いた方がテストケースが記述しやすいでしょう。

  • テスト対象プロジェクトへのプロジェクト参照設定
  • その他、プロジェクト構成の作成

 次ページでは、JUnitを基にしたテストケースクラスの作成を行います。こちらもEclipseの機能で簡単にできます。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

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

メールマガジン登録

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