猿
最もシンプルなツールから始めましょう-Monkeyを使って。 Monkeyは、いわゆる機能テストツールではなく、 ストレステスト、またはプロジェクトドキュメントの公式ページ -UI / Application Exerciserに記載されているとおり。 おおまかに言って、Monkeyは、実行中のアプリケーションが猿の足(まあ、または小さな子供の手の中)に落ちることで電話をエミュレートし、その後の「ユーザー」の無秩序な動作を行います。 ただし、Monkeyを使用すると、「ランダム性」、イベント間の間隔、それらのタイプなどを柔軟に設定できます。 このようなテストの場合、アプリケーションのソースコードは不要です。デバイスまたはエミュレータにインストールするだけで、最も簡単な場合はコンソールから次のように起動できます。
$ adb shell monkey -p org.monkeys -v 500
アプリケーションのパッケージ名と生成されたイベントの数が示されます。 例外(Exception)の場合、対応するスタックトレースがコンソールに表示されます。
:Sending Pointer ACTION_MOVE x=-4.0 y=2.0 :Sending Pointer ACTION_UP x=0.0 y=0.0 // CRASH: org.monkeys (pid 325) // Short Msg: java.lang.NoSuchMethodException // Long Msg: java.lang.NoSuchMethodException: onButtonClick ... // java.lang.IllegalStateException: Could not find a method onButtonClick(View) in the activity class org.monkeys.MonkeysTestActivity for onClick handler on view class android.widget.Button // at android.view.View$1.onClick(View.java:2059) // at android.view.View.performClick(View.java:2408) ... ** Monkey aborted due to error. Events injected: 17 :Dropped: keys=0 pointers=0 trackballs=0 flips=0 ## Network stats: elapsed time=1479ms (1479ms mobile, 0ms wifi, 0ms not connected) ** System appears to have crashed at event 17 of 500 using seed 0
それがMonkeyのすべてです-アプリケーションをテストしてください。
モンキーランナー
Monkeyに似た名前にもかかわらず、MonkeyRunnerはアプリケーションの機能テスト(「クリックスルー」テスト)を実行できる完全に異なるツールであり、デバイスを制御するためのAPIを提供します 。 MonkeyRunnerはRobotiumよりも低レベルであり、Robolectricと比較してアプリケーションのソースコードを必要としません。 ただし、MonkeyRunnerのアプリケーションの分野は、テストだけに限定されません。UIを介して(だけでなく)Androidデバイスを制御するシステムを構築するために使用できます。 MonkeyRunnerはJythonを使用し、スクリプトまたはテストスクリプトをPythonで記述したり、レコーダーを使用してユーザーアクションを記録したりできます。
既に述べたように、MonkeyRunnerはSDKの一部として一緒に提供され、ツールSDKディレクトリにある
monkeyrunner
スクリプトを使用してインタープリターとそのインタラクティブコンソールを起動できます。
スクリプトの記録と再生
SDKの構成から、 レコーダーとプレーヤー用の2つのpythonスクリプトが必要です 。
monkeyrunner
を使用して
monkeyrunner
実行する必要があります。
monkeyrunner ~/Projects/MonkeysTest/monkeyrunner/monkey_recorder.py
レコーダーは次のようになります。
「アクションのエクスポート」ボタンを使用して、スクリプトをファイルに書き込むことができます。その後、スクリプトをプレーヤーで再生できます。
monkeyrunner ~/Projects/MonkeysTest/monkeyrunner/monkey_playback.py /tmp/actions.out
もちろん、エミュレータは上記のすべてのアクションで実行されている必要があります。
スクリーンショットからわかるように、MonkeyRunnerはコントロールを選択するための座標で動作します。これは、もちろんRobotiumまたはRobolectricの要素の選択ほど便利ではなく、画面サイズに依存しますが、この動作はアプリケーションテストスクリプトの作成ではなく、ゲームなど、使い慣れたインターフェイス要素を使用します。
スクリプト作成
MonkeyRunnerでは、Pythonを使用して独自のスクリプトを記述することができます。 インターフェイスの管理に加えて、アプリケーションのアンインストールとインストール、スクリーンショットの保存などができます。 そのようなスクリプトの例:
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice device = MonkeyRunner.waitForConnection() device.removePackage('org.monkeys') device.installPackage('/tmp/monkeys.apk') package = 'org.monkeys' activity = 'org.monkeys.MonkeysTestActivity' runComponent = package + '/' + activity device.startActivity(component=runComponent) MonkeyRunner.sleep(2.0) device.touch(50, 140, 'DOWN_AND_UP') device.type("Hello!") MonkeyRunner.sleep(1.0) device.takeSnapshot().writeToFile('/tmp/monkeyshot.png','png')
APIが提供する機能の詳細については、MonkeyRunnerの公式ドキュメントを参照してください。
Eclipse統合
Eclipseからスクリプトを実行するには、次のことを行うだけで十分です。
- PyDev拡張機能をインストールする
- PyDevの設定で、
monkeyrunner
スクリプトを指定する「インタープリター実行可能monkeyrunner
」として新しいPythonインタープリターを追加します(JythonではなくPythonと同じように追加します)。 SDKの古いバージョンでは、 スクリプトラッパーが必要になる場合があります 。 - スクリプトスクリプトを「実行構成」に追加して、新しく追加されたインタープリターを示します。
もちろん、スクリプト用に個別のPythonプロジェクトを作成できます。
実際に私が簡単に話をしたかったのはそれだけです。 おそらく、説明されているテストツールは役に立つでしょう。