Androidアプリを“超”魅力的にする3種類のUIテストAndroidアプリ開発テスト入門(3)(1/3 ページ)

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

» 2012年01月20日 00時00分 公開
[渡辺悟史日本Androidの会テスト部]

「UIのテスト」って何?

 本連載「Androidアプリ開発テスト入門」では、Androidアプリを開発している方のために、テストの基本的なノウハウを解説しています。第3回となる今回は、ユーザーインターフェイス(以下、UI)のテストについて解説します。

 スマートフォンアプリケーションの特徴として、タッチ操作による魅力的なUIが挙げられます。Androidのアプリケーションの開発においても、UIの作り込みを求められることが多く、UIの品質の担保は大きな課題です。

 本連載で扱うUIは、画面のレイアウト画面遷移イベントなど振る舞いと定義します。AndroidアプリにおけるUIは、Android SDKで用意されているActivityを使って作り込んでいきます。そして、AndroidアプリのUIテストとActivityのテストは、ほとんど同じ意味を表します。


 さらに、前回の「Androidでビジネスロジックのテストを自動化するには」で解説したAndroid Testing Frameworkには、JUnitでActivityのテストを書けるフレームワークが用意されています。本稿では、このフレームワークを利用してUIテストを書いていきます。

UIテストの自動化の問題点

 Activityのテストは、下記の状態の管理スレッドを意識したコードを書く必要があるため、非常に面倒です。

  • ActivityはAndroidアプリのベースとなるオブジェクトとなるため、たくさんのオブジェクトを保持し、また各々のオブジェクトの状態を管理する必要がある
  • Android Testing Frameworkでは、テストコードをUIスレッドとは別スレッドで実行されるため、UIスレッドを意識してコードを書く必要がある

 上記のような点を回避しつつ、UIのテストを書くためには、かなりのテクニックとノウハウが必要です。

それでもUIテストを書くのか?

 では、それでもテクニックとノウハウを駆使してUIのテストを書く理由は何でしょうか。筆者の場合、「複雑なUIコードのデグレードを回避するため」というのが、その理由です。

 筆者が開発に関わるAndroidアプリはUIが凝ったものが多く、UI周りのコードは複雑になりがちです。そのため、テストコードを書いておき、定期的にテストコードを実行することによって、UI操作による振る舞いが変わっても、すぐに確認できるようにしています。

 さらに、Androidアプリ開発の現場では、下記の理由から頻繁にリグレッションテストを実行することが多いのです。

  1. アプリのバージョンアップが多い
  2. 対応機種が多い
  3. Android SDKのバージョンアップが多い

 そのため、前回解説したビジネスロジックだけではなく、特に複雑なUIを中心としてUIテストも自動化しておけば、不具合の早期発見ができるので安心して開発できます。

 またJenkins」などのCIツールで、コミット後などに定期的にテストするようにしておけば、毎回自分でテストしなくても、テストが失敗すると自動的に通知されるようになるので、開発者の手間が省けます。CIツールとの連携については、本連載の第6回で解説します。

Android Testing Frameworkを使った3種類のUIテスト

 Android Testing Frameworkでは、どのようなテストを記述可能でしょうか?それを以下に挙げてみることにします。

【1】UI操作による状態の変更

 Androidでは、リストボタンのような豊富なUIパーツがあります。ボタンをタップしたら、画面が変化したり、データが変化したりします。UI操作によるオブジェクトの状態の変化が正しいかどうかをチェックしたいときに、このテストを作成します。

【2】ライフサイクルのテスト

  Activityには、「ライフサイクル」というものがあります。

 例えば、画面遷移で別のActivityを起動した場合、現在のActivityは停止されます。停止したActivityに制御が戻って来た場合でも、その間にメモリの問題でActivityを解放してしまう場合があります。

 このように、Activityが停止/復帰した場合に、きちんとデータを保存しているかどうか、もしくはデータがなくなっていても問題なく動作するかどうかをチェックする必要があります。

【3】画面遷移のテスト

 Androidでは、画面遷移を「Intent」という仕組みを使い、別のActivityを起動することによって実現します。このIntentを正しく発行しているかどうかをチェックすることで、画面遷移の正当性を確認できます。

 上記を行うためのAndroid Testing Frameworkの使い方を、次ページから解説していきます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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