ABC 2011 Summer
description
Transcript of ABC 2011 Summer
ア ン ド ロ イ ド は テ ス ト の 夢 を み る か ?
Y u m i M i y a t a
Do Android Dreams of Tests?
日本Androidの会テスト部
Android Bazaar and Conference 2011 summer
自己紹介
宮田友美(みやたゆみ)
TwitterID:@miyatay
日本Androidの会テスト部部長
株式会社オープンストリーム所属
– 業務でAndroidアプリを作ってます
– http://www.opst.co.jp/
テスト部とは?
2010年9月 発足
243名 部員 • 昨年から倍になりました!
http://www.flickr.com/photos/ilike/3707503212/
目標
ぶっちぎりのテスト力を
世界へ
http://www.flickr.com/photos/jaffathecake/2675559042
主な活動
月1回、部会開催
次回は、8/6 開催
http://www.flickr.com/photos/vokakvklim/4522919056
分科会(小チーム)
http://www.flickr.com/photos/jiheffe/3462940215
@bols_blue
@mike_neck
公式サイト翻訳
テストツール作成
(SQLite)
受入れテスト ガイドライン作成
テストツール検証 (MonkeyRunnner,Robolectric,Robotium)
@myb1126
@ussy00
@dicea @colis_dev
そして、
@ussy00 @mike_neck
@sassy_watson @nowsprinting @7hepta
Testter
Testter ?
• テストをしたくても、
対象アプリがないと話にならない
• Androidのテストを検証するために必要な機能をすべて実装したアプリが欲しい
http://www.flickr.com/photos/jof/263652571
SQLiteのテストしたい
GPSを使った機能のテストしたい
では、作ってしまえ
@ussy00 @mike_neck
@sassy_watson @nowsprinting @7hepta
Testter
@ussy00 @mike_neck
@sassy_watson @nowsprinting @7hepta
Testterとそのテストを
書いて得たノウハウ
http://www.flickr.com/photos/proimos/4199675334/
問題
テストプロジェクトのリソースが取得できない
出典: http://www.flickr.com/photos/dcysurfer/2897532891
原因 #getTestContext()が@hide
テストプロジェクトのリソースファイルを取ることができない
解決策
http://www.flickr.com/photos/farleyj/2768941171
Method method = getClass().getMethod("getTestContext"); Context context = (Context) method.invoke(this); SecretResource resource = SecretResource.load( context.getResources(), R.raw.config );
リフレクション
http://www.flickr.com/photos/proimos/4199675334/
問題
Activityのロジックがテストしづらい
出典: http://www.flickr.com/photos/dcysurfer/2897532891
原因 Viewと分離できていないとテストが面倒
解決策
http://www.flickr.com/photos/farleyj/2768941171
Activityからロジックを分離
ロジックをUIと切り離してテストしやすい構成に
http://www.flickr.com/photos/proimos/4199675334/
問題
Viewに登録されているEventListenerのgetterがないためテストが書けない
⇒じゃあリフレクションを使ってテストするの?
出典: http://www.flickr.com/photos/dcysurfer/2897532891
原因 SDKの制約としてアクセスできないメソッドがある
解決策
http://www.flickr.com/photos/farleyj/2768941171
そもそもJUnitでテストをしない
今回の場合は結合テストでしかるべきイベントが発生することをテストする
http://www.flickr.com/photos/proimos/4199675334/
問題
テストプロジェクトの構成をどうするか?
出典: http://www.flickr.com/photos/dcysurfer/2897532891
原因 開発時に記述するテストと結合テストやシステムテストで記述するテストを分離したい
しかし、テストプロジェクトが分散すると管理が大変だし・・・
解決策
http://www.flickr.com/photos/farleyj/2768941171
testter src
lib
res
tests ut-test
it-test
テスト対象プロジェクト以下に
テストプロジェクトをつくる
そして、
このような活動で得た ノウハウを公開する イベントを開催
http://www.flickr.com/photos/neil_roger/3895501627
宣伝
Android
テスト祭り
http://www.flickr.com/photos/madeiraarchipelago/17549695/
2011年8月6日開催
詳細
http://www.flickr.com/photos/eelssej_/4948400648/
https://sites.google.com/site/atecfes/program
是非、
ご参加
ください!
http://www.flickr.com/photos/pinksherbet/2977652113/
さらに、宣伝
オープンストリームで一緒にAndroidアプリ開発してくれる方大募集
• Android案件の開発・提案等
• アーキテクト(もしくはアーキ候補)
興味がある方は以下までご連絡ください!
@miyatay