「一通りやったよ」というような記事があまりなかったと思うので、
今回は 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 件のコメント:
コメントを投稿