Yumi Miyata
アンドロイドは
テストの夢をみるか?



Do Android Dreams of Tests?
Android Bazaar and Conference 2011 summer
        日本Androidの会テスト部
自己紹介

宮田友美(みやたゆみ)
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
公式サイト翻訳
@mike_neck



               テストツール作成
                         (SQLite)
                                                     @ussy00



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


                   受入れテスト
                  ガイドライン作成
  @dicea                                            @colis_dev
そして、
@nowsprinting                @7hepta             @sassy_watson




           Testter
                @mike_neck             @ussy00
Testter ?
• テストをしたくても、
  対象アプリがないと話にならない
• Androidのテストを検証するために必要な
  機能をすべて実装したアプリが欲しい




http://www.flickr.com/photos/jof/263652571
SQLiteのテストしたい
GPSを使った機能のテストしたい
では、作ってしまえ
@nowsprinting                @7hepta             @sassy_watson




           Testter
                @mike_neck             @ussy00
@nowsprinting                @7hepta             @sassy_watson




   Testterとそのテストを
    書いて得たノウハウ

                @mike_neck             @ussy00
問題
 テストプロジェクトのリソースが取得で
 きない




http://www.flickr.com/photos/proimos/4199675334/
原因
  #getTestContext()が@hide
  テストプロジェクトのリソースファイルを
  取ることができない




出典: http://www.flickr.com/photos/dcysurfer/2897532891
解
決
策   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
 );
問題
 Activityのロジックがテストしづらい




http://www.flickr.com/photos/proimos/4199675334/
原因
  Viewと分離できていないとテストが面倒




出典: http://www.flickr.com/photos/dcysurfer/2897532891
解
決
策   http://www.flickr.com/photos/farleyj/2768941171
Activityからロジックを分離
ロジックをUIと切り離してテス
トしやすい構成に
問題
 Viewに登録されているEventListener
 のgetterがないためテストが書けない
 ⇒じゃあリフレクションを使ってテストす
 るの?



http://www.flickr.com/photos/proimos/4199675334/
原因
  SDKの制約としてアクセスできないメソッド
  がある




出典: http://www.flickr.com/photos/dcysurfer/2897532891
解
決
策   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
テスト祭り

                      2011年8月6日開催
http://www.flickr.com/photos/madeiraarchipelago/17549695/
詳細

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


http://www.flickr.com/photos/eelssej_/4948400648/
是非、
                                                       ご参加
                                                       ください!


http://www.flickr.com/photos/pinksherbet/2977652113/
さらに、宣伝
オープンストリームで一緒にAndroidアプ
リ開発してくれる方大募集

• Android案件の開発・提案等
• アーキテクト(もしくはアーキ候補)
興味がある方は以下までご連絡ください!


@miyatay
miyata.y@opst.co.jp

ABC