なんだかんだでプログラムが好き

私 すずきかつーき が主にプログラムに関する事を書いたり書かなかったりします

adbコマンドを使って実機で楽々モンキーテスト

adbコマンドを使って実機で楽々モンキーテスト

モンキーテストとは

モンキーテストとは、機器やソフトウェア、システムのテスト手法の一つで、対象箇所や操作手順などを事前に定めず、実施者がその場の思いつきで操作してみる方式。開発者の意図などを一切考慮しないことを「猿に使わせてみたらどうなるか」に例えた名称である。 http://e-words.jp/w/モンキーテスト.html より引用

すなわち「猿のように画面も見ずに連打」すればいいわけです。 が、人力はちょっとツライですね。もちろんアプリ自体にそういうモードを用意してあげることもできますが、結構骨が折れます。

そんな貴方に朗報です、Androidにはこれを自動でやってくれる仕組みが既にあるんです!

コマンド

adb shell monkey -v -p パッケージ名 --throttle イベント間隔(ms) --pct-touch 100 回数

これで、指定したパッケージアプリが自動で起動し(先に起動しておいても良い)、指定したイベント間隔で指定回数ランダムで画面を連打してくれます。 (パッケージ名はUnityのProjectSetting→Player→OtherSettings→PackageNameで指定したものです) image.png

このイベント間隔と回数をかけ合わせれば、終わる時間が分かるので、寝る前から次の日の朝まで、仮に10時間モンキーテストさせたい。

という場合は

10時間=600分=36000秒

なので、イベント間隔が100ms(=0.1秒)であれば、360000 を回数に指定すれば良いことになります。

<例>

adb shell monkey -v -p jp.com.MyApp --throttle 100 --pct-touch 100 3600000

注意

なお途中で辞めたくなってCtrl+Cで止めても、adbのshell上ではプロセスが動いてしまっているので、モンキーテストは止まりません。

止めるにはプロセスを指定してkillする必要があるため

adb shell kill $(pgrep monkey)

とやる必要があります。

また、例えばアプリに終了ボタンなんかがある場合はモンキーテストにより押されてしまい、終了してしまう可能性があります。 なので、そのあたりは先に無効化するなどの考慮が必要です。 (※間違っても課金が発生するような処理をそのままにしないように!)

準備

adbとは Android Debug Bridge からくる略称のツールで、Android実機とPCを接続しデバッグの補助をしてくれるものです。 これは AndroidSDK に含まれています。

コマンドプロンプトから adb とコマンドを打って、何かズラズラとadbのヘルプテキストが表示される場合は問題ありませんが、

>adb
'adb' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

こんな感じになってしまう方はadb.exeへのパスが通っていませんので、先にパスを通す必要があります。

自分でAndroidSDKを用意した方は AndroidSDKをインストールしたフォルダ\android-sdk\platform-tools なんですが、 Unityをインストールする際にAndroidSDKのインストールにチェック入れてついでにセットアップした場合は [UnityHubで設定したUnityのインストール先]\Hub\Editor\[Unityのバージョン]\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools と、少々奥深くに置いてあるはずです。

UnityHubで設定したUnityのインストール先

これをパスに設定、もしくはフルパスでadbコマンドを実行するようにしてください。

まとめ

このadbコマンドによるモンキーテストにより

  • 上記の意図しない操作による不具合を発見する

に加え、人間ではなかなか現実的でない

  • 24時間ゲームを起動し(遊び)続けても大丈夫か

というような、耐久テストも兼ねることができます。 (エイジングテストともいうかな?) 手元のアプリも公開する前にちょっと24時間ぐらい走らせてみたらどうでしょうか。 思わぬ進行不能バグ。 思わぬメモリリークが見つかるかもしれませんよ。

ではでは。