Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Android Meets
    Testing(low)

Android Bazaar and Conference 2011 winter
                2011.1.9
           テスト部(宮田友美)
自己紹介
宮田友美(みやたゆみ)
TwitterID:@miyatay




                株式会社オープンストリーム
                     業務でAndroidアプリを作ってます
           ...
日本アンドロイドの会

テスト部部長
テスト部とは?
2010年9月発足でメンバー154名
Androidのテストについて情報共有
 公式サイト翻訳
 Androidアプリのテストについてノウハウの
  蓄積および公開
 月1回のペースでMTG開催(次回2/5開催!)
目標は...
ぶっちぎりのテスト力
 を世界へ



http://www.flickr.com/photos/jaffathecake/2675559042
本日のお題


http://www.flickr.com/photos/tamaiyuya/2633149321/
もちろん、   テスト
なぜ、テスト?



出典: http://www.flickr.com/photos/fboyd/2897598148/
Android開発
は大変!
なぜ大変かを分類すると

1.マーケットの評価
2.複数端末対応
3.SDKバージョンアップ対応
これらの解決方法を、
テスト部議論+宮田の私見
 を交えつつお話しします
1.マーケットの評価
ユーザレビューでアプリを
評価する仕組み
強制終了→評価が下がる
ユーザからの
フィードバック
マーケットの評価を
 生かすには・・・
強制終了させない
テストを書いて、ありがちな丌具合を残さない
ユーザからの
フィードバックにこたえる
テストを書いて、大胆にアプリを進化させる
2.複数端末対応
世界には150種類超の
Android端末
フラグメンテーション
(機種の多様性)問題
•    トラックボール/ハードボタンの有無
•    センサーの有無
•    解像度の違い
    など。。
機種の多様性に対応する仕組み
は「一応」ある
解像度/キーボード有無/地域の違いなどで
切り替え
<参考>
http://thinkit.co.jp/book/2010/05/06/
1535
しかし結局、
実機でのテストは丌可欠
150種類以上の端末で
テスト・・・?
解決策




http://www.flickr.com/photos/xshamx/4156762827/in/photostream/
テストの自動化
3.SDKの
バージョンアップ対応
2009年は6回、2010年は
5回のバージョンアップ
       2008           2009           2010
 1             1              1   2.1 r1
 2         ...
頻繁なバージョンアップに
追随するのは大変
解決策




http://www.flickr.com/photos/xshamx/4156762827/in/photostream/
テストの自動化
では「テストの自動化」を
するにはどうすればいい
の?
Android
   +
 JUnit
でも、
     JUnitでAndroidのテストは
     やりづらい


http://www.flickr.com/photos/proimos/4199675334/
AndroidアプリケーションFWに
         依存しないコード
          のテストの場合




       http://www.flickr.com/photos/_lev_/136318262/sizes/z/in/...
普通にJUnitのテストコードを書けば
よい・・・と思うのだが、
公開されている
android.jar の実装がコレ・・・

    throw new
     RuntimeException("Stub!");


※android.jarはJavaアプリでいうところのJDKと同じ。
Eclipse上で実行すると、
すべてのメソッドで
RuntimeExceptionが発生
エミュレータ/実機に実行コード&テ
ストコードをデプロイしないと実行で
きない
遅い・・・


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




http://www.flickr.com/photos/xshamx/4156762827/in/photostream/
• テストプロジェクトを作成して、
  JDKにパスを通す
• android.jarを自分でビルド・・・?
Androidの
アプリケーションFWに
依存するコード
の場合



http://www.flickr.com/photos/tomas_sobek/4199796850/
通常のJUnitテストが
    実施できない
http://www.flickr.com/photos/proimos/4199675334/
• SDK付属のテスト用APIを利用

• 提供されているテストクラス
 – ActivityInstrumentationTestCase2
 – ProviderTestCase2
 – ServiceTestCase
テスト部でActivityのテストを書いて
みた
テストコードの紹介(デモ)
https://atec.googlecode.com/svn/testter/trunk/testter
https://atec.googlecode.com/svn/testter/trunk/testterT...
テスト部が考えるActivityのテスト
 1.    Viewの表示されている値が正しく設定されているか
 2.    必要なコンポーネントがあるか
 3.    状態のテスト(disabledが設定されているかとか)
 4.    明示的に...
まとめ
                                                       Android + JUnit
                                               ...
Upcoming SlideShare
Loading in …5
×

ABC2011w_テスト部

3,876 views

Published on

ABC 2011 winterのテスト部のプレゼン資料です。

  • Be the first to comment

ABC2011w_テスト部

  1. 1. Android Meets Testing(low) Android Bazaar and Conference 2011 winter 2011.1.9 テスト部(宮田友美)
  2. 2. 自己紹介 宮田友美(みやたゆみ) TwitterID:@miyatay 株式会社オープンストリーム 業務でAndroidアプリを作ってます http://www.opst.co.jp/ へんなガジェット持ってますw ↑
  3. 3. 日本アンドロイドの会 テスト部部長
  4. 4. テスト部とは? 2010年9月発足でメンバー154名 Androidのテストについて情報共有 公式サイト翻訳 Androidアプリのテストについてノウハウの 蓄積および公開 月1回のペースでMTG開催(次回2/5開催!) 目標は・・・・
  5. 5. ぶっちぎりのテスト力 を世界へ http://www.flickr.com/photos/jaffathecake/2675559042
  6. 6. 本日のお題 http://www.flickr.com/photos/tamaiyuya/2633149321/
  7. 7. もちろん、 テスト
  8. 8. なぜ、テスト? 出典: http://www.flickr.com/photos/fboyd/2897598148/
  9. 9. Android開発 は大変!
  10. 10. なぜ大変かを分類すると 1.マーケットの評価 2.複数端末対応 3.SDKバージョンアップ対応
  11. 11. これらの解決方法を、 テスト部議論+宮田の私見 を交えつつお話しします
  12. 12. 1.マーケットの評価
  13. 13. ユーザレビューでアプリを 評価する仕組み
  14. 14. 強制終了→評価が下がる
  15. 15. ユーザからの フィードバック
  16. 16. マーケットの評価を 生かすには・・・
  17. 17. 強制終了させない テストを書いて、ありがちな丌具合を残さない
  18. 18. ユーザからの フィードバックにこたえる テストを書いて、大胆にアプリを進化させる
  19. 19. 2.複数端末対応
  20. 20. 世界には150種類超の Android端末
  21. 21. フラグメンテーション (機種の多様性)問題 • トラックボール/ハードボタンの有無 • センサーの有無 • 解像度の違い など。。
  22. 22. 機種の多様性に対応する仕組み は「一応」ある 解像度/キーボード有無/地域の違いなどで 切り替え <参考> http://thinkit.co.jp/book/2010/05/06/ 1535
  23. 23. しかし結局、 実機でのテストは丌可欠
  24. 24. 150種類以上の端末で テスト・・・?
  25. 25. 解決策 http://www.flickr.com/photos/xshamx/4156762827/in/photostream/
  26. 26. テストの自動化
  27. 27. 3.SDKの バージョンアップ対応
  28. 28. 2009年は6回、2010年は 5回のバージョンアップ 2008 2009 2010 1 1 1 2.1 r1 2 2 1.1 r1 2 3 3 3 4 4 1.5 r1 4 5 5 1.5 r2 5 2.1 r2 2.2 r1 6 6 6 7 7 1.6 r1 7 2.2 r2 8 8 8 9 1.0 r1 9 9 10 10 2.0 r1 10 11 1.0 r2 11 11 12 12 2.0.1r1 12 2.3 r1
  29. 29. 頻繁なバージョンアップに 追随するのは大変
  30. 30. 解決策 http://www.flickr.com/photos/xshamx/4156762827/in/photostream/
  31. 31. テストの自動化
  32. 32. では「テストの自動化」を するにはどうすればいい の?
  33. 33. Android + JUnit
  34. 34. でも、 JUnitでAndroidのテストは やりづらい http://www.flickr.com/photos/proimos/4199675334/
  35. 35. AndroidアプリケーションFWに 依存しないコード のテストの場合 http://www.flickr.com/photos/_lev_/136318262/sizes/z/in/photostream/
  36. 36. 普通にJUnitのテストコードを書けば よい・・・と思うのだが、
  37. 37. 公開されている android.jar の実装がコレ・・・ throw new RuntimeException("Stub!"); ※android.jarはJavaアプリでいうところのJDKと同じ。
  38. 38. Eclipse上で実行すると、 すべてのメソッドで RuntimeExceptionが発生
  39. 39. エミュレータ/実機に実行コード&テ ストコードをデプロイしないと実行で きない
  40. 40. 遅い・・・ 出典: http://www.flickr.com/photos/dcysurfer/2897532891
  41. 41. 解決策 http://www.flickr.com/photos/xshamx/4156762827/in/photostream/
  42. 42. • テストプロジェクトを作成して、 JDKにパスを通す • android.jarを自分でビルド・・・?
  43. 43. Androidの アプリケーションFWに 依存するコード の場合 http://www.flickr.com/photos/tomas_sobek/4199796850/
  44. 44. 通常のJUnitテストが 実施できない http://www.flickr.com/photos/proimos/4199675334/
  45. 45. • SDK付属のテスト用APIを利用 • 提供されているテストクラス – ActivityInstrumentationTestCase2 – ProviderTestCase2 – ServiceTestCase
  46. 46. テスト部でActivityのテストを書いて みた
  47. 47. テストコードの紹介(デモ) https://atec.googlecode.com/svn/testter/trunk/testter https://atec.googlecode.com/svn/testter/trunk/testterTest
  48. 48. テスト部が考えるActivityのテスト 1. Viewの表示されている値が正しく設定されているか 2. 必要なコンポーネントがあるか 3. 状態のテスト(disabledが設定されているかとか) 4. 明示的に設定したプロパティ値が設定されているかどうか 5. サイズ/色/位置 6. ライフサイクルにしたがって状態が変化しているか 7. イベント発生後の処理が正しく行われているか 8. Activityが破棄されても(画面の縦横が変わった際の)処理が 正しく行れているか 9. 端末自体のメモリが丌足した場合の処理 10. 例外処理 11. マルチスレッド 12. Intent(呼び先、Bundleのキーと値の確認)
  49. 49. まとめ Android + JUnit でみんなハッピー つづきはテスト部で http://www.flickr.com/photos/pinksherbet/2977652113/

×