
第3回
Androidアプリを“超”魅力的にする3種類のUIテスト
日本Androidの会テスト部
渡辺悟史
2012/1/20
日本Androidの会テスト部が、いままで培ってきたAndroidアプリ開発におけるテストのノウハウを、実際のテストコード例とともに紹介していきます
「UIのテスト」って何?
- - PR -
本連載「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アプリ開発の現場では、下記の理由から頻繁にリグレッションテストを実行することが多いのです。
- アプリのバージョンアップが多い
- 対応機種が多い
- 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 |
| INDEX | ||
| Androidアプリ開発テスト入門(3) Androidアプリを“超”魅力的にする3種類のUIテスト |
||
| Page1 「UIのテスト」って何? Android Testing Frameworkを使った3種類のUIテスト |
||
| Page2 【1】UI操作による状態変化を確認するテスト ユーザー操作をエミュレートする「TouchUtils」を使うと |
||
| Page3 【2】ライフサイクルのテスト 【3】画面遷移のテスト テストはデグレードやバージョンアップのチェックに役立つ |
||
| ご意見、ご感想は Smart&Social 会議室へどうぞ |
| Smart&Social フォーラム トップページへ |
TechTargetジャパン
- JenkinsでCIすればAndroidアプリ開発はもう怖くない (2012/5/23)
Androidアプリ開発における継続的インテグレーションの重要性やJenkinsの利点を解説し、環境構築の仕方や使い方の手順を紹介します - Open Graphアプリを作りApp Centerに登録するには (2012/5/18)
ユーザーの活動を共有できるFacebookの新機能を使ったアプリの開発方法と新しいアプリストアへの登録手順を解説 - Bootstrap、Hogan.js、FinagleなどTwitter系OSS (2012/5/15)
Twitterのアーキテクチャやオープンソースへの取り組みなどの講演模様をお届け。OpenJDKやStorm、Gizzard、Twitter4Jも注目 - ソーシャルゲーム/スマホ開発イベント記事が人気 (2012/5/11)
4月はソーシャルゲームの開発者向けイベントや、Webとネイティブの対決が熱かった! UnityやPerfumeも見逃せない!?
|
|
キャリアアップ
スポンサーからのお知らせ
イベントカレンダー
- - PR -

