連載
» 2012年05月23日 00時00分 公開

Androidアプリ開発テスト入門(6):JenkinsでCI(継続的インテグレーション)すればAndroidアプリ開発はもう怖くない (1/2)

日本Androidの会テスト部が、いままで培ってきたAndroidアプリ開発におけるテストのノウハウを、実際のテストコード例とともに紹介していきます

[末広尚義,日本Androidの会テスト部]

 本連載「Androidアプリ開発テスト入門」では、Androidアプリを開発している方のためにテストの基本的なノウハウを解説しています。第6回では、CIツールである「Jenkins」を用いてAndroidをテストする方法を解説します。

いまさら聞けない「継続的インテグレーション(CI)」とは

 「継続的インテグレーション」(以下、CI)とは、アジャイルのベストプラクティスの1つで、「すべてが自動化された再現可能なビルドテストを日に何度も行うこと」です。

 CIのメリットには、次のものがあります。

  • 開発中のバグがすぐに発見される
  • バグがすぐ発見されるので修正もすぐにできる
  • テストを自動的に行うので、開発者は全体のテストの実行に時間を費やさないで済む
  • 問題があれば、すぐに発見されるので、開発者は安心してプログラミングできる

AndroidにおけるCIの重要性

 WindowsアプリやWebアプリに比べてAndroidアプリの開発でCIが特に重要です。以下のようなAndroidの特徴により、CIの重要性がさらに高まっています。

  1. さまざまな端末が4半期ごとに追加される
  2. Android端末では、メーカーに18カ月ごとにOSを最新バージョンにアップグレードするよう義務付けられている
  3. Google Play(旧、Android Market)の評価は最新ものが上に表示される

 1と2によってテストの回数は従来のプラットフォームに比べ格段に上がるだけではなく、3によってプロダクトの寿命を縮める結果になります。

 想定されるワーストケースは次のようなものです。

端末の新発売・バージョンアップ
     ↓
動作しない端末の増加
     ↓
表示画面に☆1の評価が並ぶ
     ↓
アプリの評価の低下、ブランドイメージの低下

 CIは、これらの問題を解決してくれます。

CIサーバにJenkinsを使うメリット

 CIを実践するには、まずテストコードが必要です。このテストコードは、ほかの記事によって、すでに実現できていることにします。本連載「Androidアプリ開発テスト入門」のバックナンバーなどを参照してくだださい。

 次にビルド・テストの実行はコマンドで行えますが、この「コマンドを実行する」という作業は誰かが行わないといけません。この作業を人ではなく機械に定期的に行わせる自動化を行って初めて、「継続的な」ビルド・テストが実現できます。例えば、cronやタスクスケジューラがあれば、ひとまずCIは実践できます。

 では、なぜJenkinsのようなツールを使う必要があるのでしょうか? Jenkinsを利用することで、次のメリットがあります。

  1. ビルド結果をメールなどで通知してくれる
  2. Webブラウザで設定ができる
  3. ビルドの履歴を記録して、Webブラウザで閲覧できる
  4. SubversionやGitといったバージョン管理システムとの連帯

 上記の機能をcronなどで実現するのは、大変です。またJenkinsは、Maven 2、Ant、シェルスクリプト、Windowsバッチでビルドやテストを行うプロジェクトを標準でサポートしており、多くのプロジェクトでCIが可能です。

 また、プラグインなども豊富にそろっています。Androidのエミュレータもプラグインを使うことで簡単にクリーンな状態のエミュレータを自動で構築、利用できます。

 JenkinsとCIについては、以下の記事も参照してください。

「Hudson」改め「Jenkins」で始めるCI入門
ユカイ、ツーカイ、カイハツ環境!(21) これから継続的インテグレーションを始める方を対象に10分程度でJenkinsを実際に動かして体験できるように使い方や特徴を解説
Java Solution」フォーラム 2011/4/7

Androidアプリ開発のためのJenkins環境構築

 AndroidアプリのためのJenkinsサーバを立ててみましょう。ここでは、CentOSへのインストール方法を解説します。

Javaのインストール

 JDKの1.6を利用してください。1.7を利用した場合動作しないことがあります。

adbが必要とするライブラリのインストール

yum install ncurses-devel

Jenkinsのインストール

wget -O /etc/yum.repos.d/Jenkins.repo http://pkg.Jenkins-ci.org/redhat/Jenkins.repo
rpm --import http://pkg.Jenkins-ci.org/redhat/Jenkins-ci.org.key
yum install Jenkins

 そのほかのOSやディストリビューションは本家サイトや日本語Wikiをご覧ください。

 次に、JenkinsにAndroidエミュレータプラグインをインストールします。

 プラグインのリストからAndroidエミュレータプラグインを選択すると、インストールは終了です。

Jenkinsでプロジェクトの設定

 次に、プロジェクトの設定を行います。ソースコードは、今回は「testter」を利用します。

新規ジョブ作成

 プロジェクトを作成します。トップ画面の左側のメニューから[新規ジョブ作成]を選択します。

図1 Jenkinsの起動画面 図1 Jenkinsの起動画面

 プロジェクト名を入力し[フリースタイル・プロジェクトのビルド]を選択します。

図2 プロジェクトの作 図2 プロジェクトの作成

バージョン管理システムの設定

 次に、SubversionからtestterとtestterTestのソースコードをチェックアウトするようプロジェクトを設定します。設定は以下のようになります。

図3 バージョン管理システム連帯設定 図3 バージョン管理システム連帯設定

 以下は元のURLです。

  • testter
    https://atec.googlecode.com/svn/testter/trunk/testter
  • testterTest
    https://atec.googlecode.com/svn/testter/trunk/testterTest
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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