ABC 2011 Summer

42
アンドロイドは テストの夢をみるか? Yumi Miyata Do Android Dreams of Tests? 日本Androidの会テスト部 Android Bazaar and Conference 2011 summer

description

ABC 2011 Summer

Transcript of ABC 2011 Summer

Page 1: 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

Page 2: ABC 2011 Summer

自己紹介

宮田友美(みやたゆみ)

TwitterID:@miyatay

日本Androidの会テスト部部長

株式会社オープンストリーム所属

– 業務でAndroidアプリを作ってます

– http://www.opst.co.jp/

Page 3: ABC 2011 Summer

テスト部とは?

Page 4: ABC 2011 Summer

2010年9月 発足

243名 部員 • 昨年から倍になりました!

http://www.flickr.com/photos/ilike/3707503212/

Page 5: ABC 2011 Summer

目標

Page 6: ABC 2011 Summer

ぶっちぎりのテスト力を

世界へ

http://www.flickr.com/photos/jaffathecake/2675559042

Page 7: ABC 2011 Summer

主な活動

Page 8: ABC 2011 Summer

月1回、部会開催

次回は、8/6 開催

http://www.flickr.com/photos/vokakvklim/4522919056

Page 9: ABC 2011 Summer

分科会(小チーム)

http://www.flickr.com/photos/jiheffe/3462940215

Page 10: ABC 2011 Summer

@bols_blue

@mike_neck

公式サイト翻訳

テストツール作成

(SQLite)

受入れテスト ガイドライン作成

テストツール検証 (MonkeyRunnner,Robolectric,Robotium)

@myb1126

@ussy00

@dicea @colis_dev

Page 11: ABC 2011 Summer

そして、

Page 12: ABC 2011 Summer

@ussy00 @mike_neck

@sassy_watson @nowsprinting @7hepta

Testter

Page 13: ABC 2011 Summer

Testter ?

Page 14: ABC 2011 Summer

• テストをしたくても、

対象アプリがないと話にならない

• Androidのテストを検証するために必要な機能をすべて実装したアプリが欲しい

http://www.flickr.com/photos/jof/263652571

Page 15: ABC 2011 Summer

SQLiteのテストしたい

GPSを使った機能のテストしたい

Page 16: ABC 2011 Summer

では、作ってしまえ

Page 17: ABC 2011 Summer

@ussy00 @mike_neck

@sassy_watson @nowsprinting @7hepta

Testter

Page 18: ABC 2011 Summer

@ussy00 @mike_neck

@sassy_watson @nowsprinting @7hepta

Testterとそのテストを

書いて得たノウハウ

Page 19: ABC 2011 Summer

http://www.flickr.com/photos/proimos/4199675334/

問題

テストプロジェクトのリソースが取得できない

Page 20: ABC 2011 Summer

出典: http://www.flickr.com/photos/dcysurfer/2897532891

原因 #getTestContext()が@hide

テストプロジェクトのリソースファイルを取ることができない

Page 21: ABC 2011 Summer

解決策

http://www.flickr.com/photos/farleyj/2768941171

Page 22: ABC 2011 Summer

Method method = getClass().getMethod("getTestContext"); Context context = (Context) method.invoke(this); SecretResource resource = SecretResource.load( context.getResources(), R.raw.config );

リフレクション

Page 23: ABC 2011 Summer

http://www.flickr.com/photos/proimos/4199675334/

問題

Activityのロジックがテストしづらい

Page 24: ABC 2011 Summer

出典: http://www.flickr.com/photos/dcysurfer/2897532891

原因 Viewと分離できていないとテストが面倒

Page 25: ABC 2011 Summer

解決策

http://www.flickr.com/photos/farleyj/2768941171

Page 26: ABC 2011 Summer

Activityからロジックを分離

ロジックをUIと切り離してテストしやすい構成に

Page 27: ABC 2011 Summer

http://www.flickr.com/photos/proimos/4199675334/

問題

Viewに登録されているEventListenerのgetterがないためテストが書けない

⇒じゃあリフレクションを使ってテストするの?

Page 28: ABC 2011 Summer

出典: http://www.flickr.com/photos/dcysurfer/2897532891

原因 SDKの制約としてアクセスできないメソッドがある

Page 29: ABC 2011 Summer

解決策

http://www.flickr.com/photos/farleyj/2768941171

Page 30: ABC 2011 Summer

そもそもJUnitでテストをしない

今回の場合は結合テストでしかるべきイベントが発生することをテストする

Page 31: ABC 2011 Summer

http://www.flickr.com/photos/proimos/4199675334/

問題

テストプロジェクトの構成をどうするか?

Page 32: ABC 2011 Summer

出典: http://www.flickr.com/photos/dcysurfer/2897532891

原因 開発時に記述するテストと結合テストやシステムテストで記述するテストを分離したい

しかし、テストプロジェクトが分散すると管理が大変だし・・・

Page 33: ABC 2011 Summer

解決策

http://www.flickr.com/photos/farleyj/2768941171

Page 34: ABC 2011 Summer

testter src

lib

res

tests ut-test

it-test

テスト対象プロジェクト以下に

テストプロジェクトをつくる

Page 35: ABC 2011 Summer

そして、

Page 36: ABC 2011 Summer

このような活動で得た ノウハウを公開する イベントを開催

http://www.flickr.com/photos/neil_roger/3895501627

Page 37: ABC 2011 Summer

宣伝

Page 38: ABC 2011 Summer

Android

テスト祭り

http://www.flickr.com/photos/madeiraarchipelago/17549695/

2011年8月6日開催

Page 39: ABC 2011 Summer

詳細

http://www.flickr.com/photos/eelssej_/4948400648/

https://sites.google.com/site/atecfes/program

Page 40: ABC 2011 Summer

是非、

ご参加

ください!

http://www.flickr.com/photos/pinksherbet/2977652113/

Page 41: ABC 2011 Summer

さらに、宣伝

Page 42: ABC 2011 Summer

オープンストリームで一緒にAndroidアプリ開発してくれる方大募集

• Android案件の開発・提案等

• アーキテクト(もしくはアーキ候補)

興味がある方は以下までご連絡ください!

@miyatay

[email protected]