CrashMonkeyとは
iOSシミュレーターにインストールしたアプリをランダムに操作して、いわゆるモンキーテストを自動的に繰り返し実行して、エビデンスを残してくれるツールです。
mokemokechicken/CrashMonkey · GitHub
iOS 向けモンキーテストツール CrashMonkey を公開しました (ゆめ技:ゆめみスタッフブログ)
動作イメージ
インストール
rubyで動くので、以下のようにgemをインストールするだけです。
$ gem install crash_monkey
使い方
gem をインストールしたら、iOSシミュレーターにインストールしてあるアプリを指定して起動するだけです。アプリのソースコードに手をいれる必要はないです。
$ crash_monkey -a Hogehoge.app
起動オプション
-nでテストを行う回数、-t で1回のテストの秒数を設定できるようです。
% crash_monkey Usage: crash_monkey [options] -a app_name Target Application(Required) -n run_count How many times monkeys run(default: 2) -d result_dir Where to output result(default: ./crash_monkey_result) -t time_limit_sec Time limit of running(default: 100 sec) -c config_path Configuration JSON Path --show-config Show Current Configuration JSON --list-app Show List of Installed Apps in iOS Simulator
結果の見方
テストを実行したフォルダの直下にcrash_mokeny_resultというフォルダができ、そのフォルダの直下にindex.htmlが作成されているので、これをブラウザで見ると各テストの結果を一覧で見ることができます。
ランダムな操作の特徴を設定する
JSON形式で設定ファイルを作成すれば、ランダムな操作の特徴をある程度指定できます。
設定ファイルのフォーマットは--show-configオプションで確認できます。
タップを多めに、とか、そういった設定ができそうです。
$ crash_monkey --show-config { "numberOfEvents": 100000, "delayBetweenEvents": 0.05, "result_detail_event_num": 20, "eventWeights": { "tap": 500, "drag": 100, "flick": 100, "orientation": 1, "clickVolumeUp": 1, "clickVolumeDown": 1, "lock": 3, "pinchClose": 50, "pinchOpen": 50, "shake": 1, "deactivate": 3 }, "touchProbability": { "multipleTaps": 0.05, "multipleTouches": 0.05, "longPress": 0.05 } }
注意点
ログイン画面などがあるアプリでは、指定したユーザーID/パスワードを入力して欲しいところですが、それらを指定する手段は用意されていないようです。
もし、そのアプリが、一度ログインすればログイン情報をKeyChainなどに保存して、しばらくログイン操作なしでセッションが継続するような作りになっていれば、一度、CrashMonekyを使う前に手動でログインして、セッションを作っておく、などの準備をすればその後のランダムな操作はCrashMonkeyに任せることができます。
あと、コマンドラインから起動時に、テストの繰り返し毎に毎回OSのユーザー名とパスワードが聞かれてしまうので、シェルスクリプトなどでそれを入力するようなものを作っておくと良さそうです。
これで、夜中とかにモンキーテストを実施しておき、細かいバグを見つけさせる、などができそうです。試していませんが、JenkinsなどのCIツールと連携もすることができるようです。