SlideShare a Scribd company logo
1 of 49
Download to read offline
Android Meets
    Testing(low)

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




                株式会社オープンストリーム
                     業務でAndroidアプリを作ってます
                     http://www.opst.co.jp/


へんなガジェット持ってますw ↑
日本アンドロイドの会

テスト部部長
テスト部とは?
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             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
頻繁なバージョンアップに
追随するのは大変
解決策




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/photostream/
普通に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/testterTest
テスト部が考えるActivityのテスト
 1.    Viewの表示されている値が正しく設定されているか
 2.    必要なコンポーネントがあるか
 3.    状態のテスト(disabledが設定されているかとか)
 4.    明示的に設定したプロパティ値が設定されているかどうか
 5.    サイズ/色/位置
 6.    ライフサイクルにしたがって状態が変化しているか
 7.    イベント発生後の処理が正しく行われているか
 8.    Activityが破棄されても(画面の縦横が変わった際の)処理が
       正しく行れているか
 9.    端末自体のメモリが丌足した場合の処理
 10.   例外処理
 11.   マルチスレッド
 12.   Intent(呼び先、Bundleのキーと値の確認)
まとめ
                                                       Android + JUnit
                                                       でみんなハッピー

                                                       つづきはテスト部で


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

More Related Content

What's hot

Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Shinobu Okano
 
JWGA IT講座 スマホでスイング動画(3)
JWGA IT講座 スマホでスイング動画(3)JWGA IT講座 スマホでスイング動画(3)
JWGA IT講座 スマホでスイング動画(3)Ikuo Misao
 
JUCEではじめるVST/AUプラグイン開発@NoMaps2017
JUCEではじめるVST/AUプラグイン開発@NoMaps2017JUCEではじめるVST/AUプラグイン開発@NoMaps2017
JUCEではじめるVST/AUプラグイン開発@NoMaps2017Tatsuya Shiozawa
 
JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009Tatsuya Shiozawa
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテストHiroshi Kikuchi
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行Yu Nobuoka
 
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018Tatsuya Shiozawa
 
JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てandroid sola
 

What's hot (8)

Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
 
JWGA IT講座 スマホでスイング動画(3)
JWGA IT講座 スマホでスイング動画(3)JWGA IT講座 スマホでスイング動画(3)
JWGA IT講座 スマホでスイング動画(3)
 
JUCEではじめるVST/AUプラグイン開発@NoMaps2017
JUCEではじめるVST/AUプラグイン開発@NoMaps2017JUCEではじめるVST/AUプラグイン開発@NoMaps2017
JUCEではじめるVST/AUプラグイン開発@NoMaps2017
 
JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009JUCEハンズオン@Ableton and Max Community Japan #009
JUCEハンズオン@Ableton and Max Community Japan #009
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテスト
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行
 
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
JUCEではじめるBLOCKS開発_TOKYO BLOCKS HACKATHON 2018
 
JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放て
 

Similar to ABC2011w_テスト部

ABC 2011 Summer
ABC 2011 SummerABC 2011 Summer
ABC 2011 Summermiyatay
 
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようスマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようKoji Hasegawa
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Kenichi Kambara
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことleverages_event
 
smartphone test (know how & tools)
smartphone test (know how & tools)smartphone test (know how & tools)
smartphone test (know how & tools)Yukio Andoh
 
Androidが起こしたオープン・イノベーション
Androidが起こしたオープン・イノベーションAndroidが起こしたオープン・イノベーション
Androidが起こしたオープン・イノベーションKoji Shigemura
 
Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測Shigeki Yamato
 
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324Tak Inamori
 
20120630 android ics in Yokohama
20120630 android ics in Yokohama20120630 android ics in Yokohama
20120630 android ics in YokohamaKenichi Ohwada
 
入門者用Android Studio Hands on
入門者用Android Studio Hands on入門者用Android Studio Hands on
入門者用Android Studio Hands onShintaro Yamasaki
 
Android dev summit 2019 recap
Android dev summit 2019 recapAndroid dev summit 2019 recap
Android dev summit 2019 recapfurusin
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話Shoya Tsukada
 
Androidアプリ開発を楽にするために
Androidアプリ開発を楽にするためにAndroidアプリ開発を楽にするために
Androidアプリ開発を楽にするためにShuichi Takaya
 
Redmineプラグイン活用入門
Redmineプラグイン活用入門Redmineプラグイン活用入門
Redmineプラグイン活用入門Takashi Kokawa
 
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会嶋 是一 (Yoshikazu SHIMA)
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カットRakuten Group, Inc.
 

Similar to ABC2011w_テスト部 (20)

ABC 2011 Summer
ABC 2011 SummerABC 2011 Summer
ABC 2011 Summer
 
ABC
ABC ABC
ABC
 
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようスマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
 
Inside Android N
Inside Android NInside Android N
Inside Android N
 
Androidとは何か
Androidとは何かAndroidとは何か
Androidとは何か
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
smartphone test (know how & tools)
smartphone test (know how & tools)smartphone test (know how & tools)
smartphone test (know how & tools)
 
Androidが起こしたオープン・イノベーション
Androidが起こしたオープン・イノベーションAndroidが起こしたオープン・イノベーション
Androidが起こしたオープン・イノベーション
 
Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測
 
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324
 
20120630 android ics in Yokohama
20120630 android ics in Yokohama20120630 android ics in Yokohama
20120630 android ics in Yokohama
 
入門者用Android Studio Hands on
入門者用Android Studio Hands on入門者用Android Studio Hands on
入門者用Android Studio Hands on
 
Android dev summit 2019 recap
Android dev summit 2019 recapAndroid dev summit 2019 recap
Android dev summit 2019 recap
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話
 
Androidアプリ開発を楽にするために
Androidアプリ開発を楽にするためにAndroidアプリ開発を楽にするために
Androidアプリ開発を楽にするために
 
Redmineプラグイン活用入門
Redmineプラグイン活用入門Redmineプラグイン活用入門
Redmineプラグイン活用入門
 
ShinagawaRedmine1
ShinagawaRedmine1ShinagawaRedmine1
ShinagawaRedmine1
 
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 

ABC2011w_テスト部