2013年9月6日金曜日

【Androidシナリオテスト】Androidのテストを完全自動化する方法

AndroidをPCにつなぐ事で、シナリオテストが出来るようになります。

まずはその仕組みについて、調査してみましょう!
AndroidSDKをDLし、SDKにパスを通します!
そして、コマンドラインで

adb shell getevent

と打ってみましょう!
その動画がコレです。



ん?ちょっとわかり辛いですが、
タッチした瞬間、何か変化が現れて流れていきましたね!

それではコマンドラインのログを見てみましょう!














おお!
/dev/input/event0
のイベントが流れているのがわかります!

それでは、このイベントでフィルタリングしてみましょう!
単純にgrep でフィルタリングしてみます。

adb shell getevent | grep event0



おお!
タッチした瞬間に何かイベントが起きているという事がわかりますね!

実はAndroidは、タッチしたイベントをadb経由でこのように取得する事も
可能ですが、さらに送信する事も可能です!

ただし、送信イベントは先ほどみたログとはちょっと形式が違ってきます。
ログは、

/dev/input/event0: 0000 0000 00000000

という感じですが、Androidにタッチイベントを送信する場合、

adb shell sendevent /dev/input/event0 0 0 0

という風になります。
大雑把に言うと、


  1. 先頭に「adb shell sendevent」がくっついて、
  2. コロン「:」がなくなり、
  3. 3つの数字が16進が10進

の3点の違いがあります。

うーーーん、どうしようか???

ピコーーーーン!!!
そんなときの頼みの綱!!!
目の前にPCがあるではないか!!!

そうだ!!!
PCでフォーマット変換をしよう!!!

ということで、フォーマット変換のプログラムを作りました!

皆さんに使って欲しいのでオープンソースにしてあります!
ご自由にお使い頂いてどうぞ!


使い方は簡単!
/tmpにevent.txtというファイルをおきます!
そのファイルは、上のようなコマンドでとったイベントのログを
貼り付けます。
そして、上で取得したプロジェクトをビルドして、ソフトを起動します!
そうすると、/tmpにevent_c.txt
というファイルが出来上がります!

それを、

chmod +x /tmp/event_c.txt

として実行権限をつければOK!!!

後は、コマンドラインでSDK_ROOT/platform-toolsにディレクトリを移し、
/tmp/event_c.txtとコマンドラインで実行してください!

そうすれば、複数のアプリにまたがった、あるいは、複数のActivityに
またがった、トータルテストが出来るようになります!

あ!
ちなみに、これで作ったシナリオで私も「ぱすわ~ど帳(SA)」を
リリース時にテストしています!
そのときの動画がコレ!




ぱすわ〜ど帳はこういったテストを繰り返し1000回以上行って
リリースしています!