#navi_header|技術| テストの自動化メモ。 * JUnit + Instrumentation Android上でのActivityTestの基本。Javaのinstrumentと同様、仮想マシンとクラスの間にインターセプト出来る。 android.testパッケージ以下にinstrumentを使ってUIを操作「したことに」して各種Testを実行可能なクラスが用意されている。 - Instrumentation | Android Developers -- http://developer.android.com/reference/android/app/Instrumentation.html - TestとInstrumentation - 日本Androidの会 | Google グループ -- https://groups.google.com/group/android-group-japan/browse_thread/thread/d37f72e7d1ce0b80 - しずくくんのAndroidでゲームプログラミングしてみたいなblog : Android開発でJUnit導入してみる。 その3 Activityのテスト自動化コードでの重要ポイント -- http://blog.livedoor.jp/shizuku_kun/archives/51574481.html * Robotium -> scirocco PowerMockを開発しているJaywayが、その有り余るHENTAI性をAndroidのUIテストの自動化に注ぎ込んだのがRobotium。 "Android開発におけるSelenium"を目指しており、UI部品の内容に対するexpectationを記述や複数Activityにまたがるテストを簡単に記述できる。 個人的には、あのJaywayがメイン開発に携わっていることから将来性も高いと感じる。 - robotium - It's like Selenium, but for Android™ - Google Project Hosting -- http://code.google.com/p/robotium/ - RobotiumでAndroidアプリのシナリオテストを自動化する - 遙かへのスピードランナー -- http://d.hatena.ne.jp/thorikawa/20101019/p1 Robotiumによる自動化テストで、画面のキャプチャなどもまとめて取得できるよう、特にチーム開発での運用面をサポートするツールとしてsciroccoが公開されている。 こちらは日本にあるSONIXという会社が開発している。 - scirocco - A UI Test Automation Tool for Android - Google Project Hosting -- http://code.google.com/p/scirocco/ - AndroidのUI自動テストツール Scirocco 触ってみた。 - しかじろうがプログラム作るよ! -- http://d.hatena.ne.jp/re_shikajiro/20110531/1306848452 * nativedriver Googleが開発したUIテスト自動化ツール。Seleniumで使われているWebDriverと類似のAPIでUIをテストできるようになる。Robotiumの競合に位置づけることが出来る。 nativedriverの場合、テスト対象のアプリ側にテストサーバ機能を持つ専用のjarファイルを追加するなどが必要。とはいえ、アプリ側のロジックに副作用が出るような形はさすがにとっていない。 マルチプラットフォーム対応を目指しており、既にAndroidに対応しているが近日中にiOSにも対応予定。Windowsも視野に入れている。 - nativedriver - Native application GUI automation with extended WebDriver API - Google Project Hosting -- http://code.google.com/p/nativedriver/ * Jython経由でmonkeyrunner デバッグ機能を使ってUIを操作する・・・らしい。 - monkeyrunner | Android Developers -- http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html ただしタップイベントなどを x, y の座標値で指定する必要が有るため、実用は難しいかもしれない。 ちなみに、InstrumentationとRobotiumは2011-06時点では「再生」だけで「記録」機能が無い。 一方、monkeyrunnerにはドキュメント化はされていないが MonkeyRunner Recorder という機能が隠されている。 - MonkeyRunner Recoder - Hack the World! -- http://d.hatena.ne.jp/graceful_life/20110305/1299323561 これを使うとRecorderを一種のUI操作Proxyとして、あとでmonkeyrunnerで実行出来る形式のpythonスクリプトでUI操作を保存できる。 ただしmonkeyrunnerでは操作した結果を取得する機能が画面snapshotの取得しか使えない。プログラムで画面UIの変化を検出する機能が存在しない。 この点が、UIテストの自動化に組み込むにあたりデメリットになるだろう。 #navi_footer|技術|