「一通りやったよ」というような記事があまりなかったと思うので、
今回は Monkey Runner でのアプリ自動実行をご紹介。
Monkey Runner というのは Andorid の操作を予め
決めておいて、それを基に自動実行できる仕組みです。
自動実行の途中でスクリーンショットもとれるので、
テストにはもってこいなわけです。
アプリのレイアウトに依存するところが大きいのですが、
複数の条件を切り替えてテストするような場面や、
長時間実行によるリソース使用量の変化を観測する
場合などに使えるツールです。
自動実行するアプリのサンプル
として、←のような四則演算を
行うアプリを取り上げます
アプリのソースは こちら からどうぞ。
まずは←のアプリをエミュレータで
実行できるように準備します。
また、Monkey Runner は
ボタンなどのウィジェットの操作を
座標を元に行うので、
エミュレータのサイズを 480x800
にします。
つぎに、↓のような python のコードを用意し、
「C:\mr_simplecalc.py」に保存しておきます。
#!/usr/bin/python # coding: UTF-8 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice import datetime # 日時文字列の取得 def getDate(): d = datetime.datetime.today() return d.strftime('%Y%m%d_%H%M%S') # スナップショットの取得 # (monkeyrunner.bat と同階層に snapshot フォルダを準備のこと) def snapshot(device): MonkeyRunner.sleep(1) result = device.takeSnapshot() result.writeToFile('snapshot/%s.png' % getDate(), 'png') # テスト初期化 def init(): device = MonkeyRunner.waitForConnection() device.startActivity(component='jp.probsc.simplecalc/.MainActivity') return device # 標準出力へメッセージを出力 def printMsg(msg): print '[%s] %s' % (getDate(), msg) # テストの実施 def doTest(): device = init() snapshot(device) for i in range(1, 1001): printMsg('cnt: %d' % i) # 1つめの数値を入力 MonkeyRunner.sleep(1) device.touch(65, 215, 'DOWN_AND_UP') device.type('%d' % i) # 2つめの数値を入力 MonkeyRunner.sleep(1) device.touch(240, 215, 'DOWN_AND_UP') num = i * 2 device.type('%d' % num) # 「+」ボタンを押下 MonkeyRunner.sleep(1) device.touch(155, 110, 'DOWN_AND_UP') snapshot(device) # テストの開始 printMsg('test start.') doTest() printMsg('test end.')
↑のコードでは、1+2、2+3、3+4 ... の計算を
1000回分繰り返します。
で、毎回、png ファイルのスクリーンショットを
とっていきます。
次は、この保存場所を準備します。
Monkey Runner では「monkeyrunner.bat」
というツールを使うのですが、↑のコードでは
同じフォルダ内の「snapshot」フォルダの中に保存します。
僕の例では「monkeyrunner.bat」は
「C:\android\android-sdk-windows\tools\monkeyrunner.bat」
にあるので、「snapshot」フォルダは
「C:\android\android-sdk-windows\tools\snapshot」
に用意します。
最後に、コマンドプロンプトから下記の太字部分のコマンドを入力します。
c:\>
c:\>C:\android\android-sdk-windows\tools\monkeyrunner.bat C:\mr_simplecalc.py
[20120318_145102] test start.
[20120318_145117] cnt: 1
[20120318_145132] cnt: 2
[20120318_145148] cnt: 3
[20120318_145201] cnt: 4
[20120318_145215] cnt: 5
...
勝手にエミュレータ内のアプリが動くではありませんか!
また、「snapshot」フォルダ内に↓のように
みるみるテストの様子が保存されていきます!
便利ー。そんなかんじー。
0 件のコメント:
コメントを投稿