Android SDKには、テストツールMonkeyが付属しています。

http://developer.android.com/guide/developing/tools/monkey.html

Monkeyテストとは

モンキーテストとは、お猿さんに実機を渡して無茶苦茶にイベントを発生させて問題なく動くかどうかのストレステストです。

通常テストはテスト項目書を作り、どのようなテストをするかを決めて行うものですが、そのような種類のテストではありません。

モンキーテストは、バグを発見できるかもしれないし、出来ないかもしれません。モンキーテストでは、理論的に総てのイベントを網羅する事は確率的に0であるため、バグがでなかったとしてもそれはたまたま出なかっただけかもしれません。このためテストを行っても品質が上がったと言うのは難しく、お客様にモンキーテストに関して説明しずらい為、仕事上あまりする事はなく、モンキーテストはあまり知名度がありません。

しかしながら、よくソフトを作ったら1日から1週間は寝かせたりしますが、それと同じで、リリース前にモンキーテストを走らせておくのは良い事だと思います。

使い方

Monkeyツールの起動は、adbを利用して行います。

引数には、対象とするパッケージ名及び、発生させるイベントのカウント数を指定します。


$adb shell monkey [options] <event-count>

とりあえずMonkey toolがどのように動作をするのか確認するのであれば、以下のようにテストするパッケージと
-v 1オプションを指定するのが良いでしょう。


$adb shell monkey -v 1 -p jp.co.taosoftware.android.podcast 500

ちなみにMonkeyプログラムは、Android内の/system/binディレクトリに存在します。

以下使用できるコマンドライン一覧(SDK1.1 r1時点)です。

オプション一覧

General
–help ヘルプを表示
-v 出力レベルの調整

  • レベル0(デフォルト) 開始終了時等の最小限の出力をする
  • レベル1 どのようなイベントを発生させたのか等の詳細を表示
  • レベル2 レベル1より詳細な情報を出力
Events
-s <seed> Seedを指定、Monkeyはランダムなイベントを発生させるが、エラー発見し修正した後時等前回と同じイベントを発生させたい必要性が出る。同じイベントを発生させたい時は、同じseed値を指定する。
–throttle <milliseconds> イベント発生のスピードを指定する。指定しない場合はできるだけ早くイベントを発生させる。
–pct-touch <percent> タッチイベントの発生割合調整をする。
–pct-motion <percent> モーションイベントの発生割合調整をする。

Android SDKモーションイベント
–pct-trackball <percent> トラックボールイベントの発生割合調整をする。
–pct-nav <percent> “basic”ナビゲーションイベントの発生割合調整をする。
–pct-majornav <percent> “major”ナビゲーションイベントの発生割合調整をする。
–pct-syskeys <percent> システムキーイベントの発生割合調整をする。

システムキーとは、ホームボタン、電話ボタン、終話ボタン、ボリュームコントロール等のボタン
–pct-appswitch <percent> アクティビティ起動割合

MonkeyはstartActivity()によるActivityの起動も試みる
–pct-anyevent <percent> その他のイベントの割合

Constraints

-p <allowed-package-name テストをするパッケージ名を指定する。

指定がない場合は、システム総てのパッケージを対象とする。

-p <package1> -p <package2>とする事で複数のパッケージを指定可能

テストするアプリケーション内で、他のパッケージのアクティビティを利用しているなら、そのパッケージを指定する。
-c <main-category> カテゴリタイプを指定する。

指定しなければ、Intent.CATEGORY_LAUNCHERか、Intent.CATEGORY_MONKEYを指定した事となる。

複数のカテゴリを指定する時は、-cオプションをカテゴリ毎に指定する。

Debugging

–dbg-no-events アクティビティの起動は行うが、イベントを発生させない。

-vコマンドと同時に使用し、non-zero throttleで30秒以上動かすといった使い方をする。
–hprof プロファイルレポートを作成する。

レポートファイルは、data/miscディレクトリに作成され、ファイルサイズは5M以上になるので注意すること。
Traceviewアプリケーションのドキュメントに詳細が記載されている。
–ignore-crashes 指定をしない場合は、Monkeyはアプリケーションがハングした時、キャッチしていないエクセプションが発生した時に停止をする。

–ignore-crashesを指定するとエラー後も引き続きイベントを発生させる。
–ignore-timeouts 指定をしない場合は、Monkeyはタイムアウトエラーが発生した時停止をする。

タイムアウトエラーとは、”Application Not Responding”ダイアログが出る時のことである。

–ignore-timeoutsオプションを指定するとエラー後も引き続きイベントを発生させる。
–ignore-security-exceptions 指定をしない場合は、Monkeyはセキュリティエクセプション(パミッションエラー)が発生した時、停止をする。

–gnore-security-exceptionsオプションを指定するとエラー後も引き続きイベントを発生させる。
–kill-process-after-error 通常エラーによりMonkeyが停止した時は、テストされたアプリケーションはエラーではあるが、プロセスは残っている。

–kill-process-after-errorオプションを指定すると、システムがアプリケーション終了のシグナルを送る(kill)
–monitor-native-crashes Androidのシステムネイティブコードで起こるクラッシュを報告します。

–kill-process-after-errorオプションを同時に付けるとシステムは停止します。
–wait-dbg デバッガがアタッチするまでMonkeyの実行を待ちます

実際にMonkeyの使い方や詳しい使い方は別の記事に記載します。

ブログ内の関連する記事