UI-/Anwendungs-Trainingsprogramm-Manager

The Monkey ist ein Programm, das auf Ihrem Emulator oder Gerät ausgeführt wird und pseudozufällige Streams von Nutzerereignissen wie Klicks, Berührungen oder Gesten sowie eine Reihe von Ereignissen auf Systemebene generiert. Mit dem Monkey können Sie Anwendungen, die Sie entwickeln, auf zufällige, aber wiederholbare Weise einem Stresstest unterziehen.

Übersicht

Der Monkey ist ein Befehlszeilentool, das Sie auf jeder Emulatorinstanz oder auf einem Gerät ausführen können. Es sendet einen pseudozufälligen Stream von Nutzerereignissen in das System, das als Belastungstest für die von Ihnen entwickelte Anwendungssoftware fungiert.

Für den Affen gibt es eine Reihe von Optionen, die jedoch in vier Hauptkategorien unterteilt werden:

  • Grundlegende Konfigurationsoptionen, z. B. das Festlegen der Anzahl der zu versuchenden Ereignisse
  • Operative Einschränkungen, z. B. die Beschränkung des Tests auf ein einzelnes Paket
  • Ereignistypen und -häufigkeiten
  • Optionen für die Fehlerbehebung.

Wenn der Monkey ausgeführt wird, generiert er Ereignisse und sendet sie an das System. Außerdem überwacht das System das zu testende System und sucht nach drei Bedingungen, die es besonders behandelt:

  • Wenn Sie die Ausführung des Monkey in einem oder mehreren bestimmten Paketen eingeschränkt haben, wird nach Versuchen, zu anderen Paketen zu navigieren, gesucht und diese blockiert.
  • Wenn Ihre Anwendung abstürzt oder eine unbehandelte Ausnahme empfängt, wird der Monkey beendet und meldet den Fehler.
  • Wenn Ihre Anwendung den Fehler Anwendung antwortet nicht generiert, stoppt der Monkey und meldet den Fehler.

Je nach ausgewählter Ausführlichkeitsstufe werden auch Berichte zum Fortschritt des Affen und zu den generierten Ereignissen angezeigt.

Grundlegende Verwendung des Affen

Sie können den Monkey über eine Befehlszeile auf Ihrem Entwicklungscomputer oder über ein Skript starten. Da der Monkey in der Emulator-/Geräteumgebung ausgeführt wird, müssen Sie ihn über eine Shell in dieser Umgebung starten. Dazu können Sie jedem Befehl adb shell voranstellen oder die Shell eingeben und Monkey-Befehle direkt eingeben.

Die grundlegende Syntax lautet:

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

Wenn keine Optionen angegeben sind, wird der Monkey im stillen (nicht ausführlichen) Modus gestartet und sendet Ereignisse an alle (und alle) Pakete, die auf Ihrem Ziel installiert sind. Hier sehen Sie eine typischere Befehlszeile, mit der Ihre Anwendung gestartet und 500 pseudozufällige Ereignisse an sie gesendet werden:

$ adb shell monkey -p your.package.name -v 500

Referenz zu Befehlsoptionen

In der folgenden Tabelle sind alle Optionen aufgeführt, die Sie in der Monkey-Befehlszeile verwenden können.

Kategorie Option Beschreibung
Allgemein --help Druckt einen einfachen Leitfaden zur Verwendung aus.
-v Jedes „-v“ in der Befehlszeile erhöht den Ausführlichkeitsgrad. Ebene 0 (Standardeinstellung) bietet über die Startbenachrichtigung, den Testabschluss und die Endergebnisse hinaus wenig Informationen. In Ebene 1 werden während der Ausführung mehr Details zum Test bereitgestellt, z. B. einzelne Ereignisse, die an Ihre Aktivitäten gesendet werden. Ebene 2 bietet detailliertere Einrichtungsinformationen wie zum Beispiel ausgewählte oder nicht für Tests ausgewählte Aktivitäten.
Veranstaltungen -s <seed> Seed-Wert für Pseudozufallszahlengenerator. Wenn Sie den Monkey mit demselben Seed-Wert noch einmal ausführen, wird die gleiche Abfolge von Ereignissen generiert.
--throttle <milliseconds> Fügt eine feste Verzögerung zwischen Ereignissen ein. Mit dieser Option können Sie den Affen verlangsamen. Wenn keine Angabe erfolgt, gibt es keine Verzögerung und die Ereignisse werden so schnell wie möglich generiert.
--pct-touch <percent> Prozentsatz der Touch-Ereignisse anpassen. Touch-Ereignisse werden unten auf dem Bildschirm angezeigt.
--pct-motion <percent> Prozentsatz der Bewegungsereignisse anpassen. Bewegungsereignisse bestehen aus einem Abwärtsereignis auf dem Bildschirm, einer Reihe pseudozufälliger Bewegungen und einem Aufwärtsereignis.
--pct-trackball <percent> Passen Sie den Prozentsatz der Trackball-Ereignisse an. (Trackball-Ereignisse bestehen aus einer oder mehreren zufälligen Bewegungen, manchmal gefolgt von einem Klick.)
--pct-nav <percent> Prozentsatz der einfachen Navigationsereignisse anpassen. Navigationsereignisse bestehen aus der Eingabe nach oben, unten, links und rechts, wie von einem Eingabegerät in eine Richtung.
--pct-majornav <percent> Prozentsatz der wichtigen Navigationsereignisse anpassen. (Dies sind Navigationsereignisse, die normalerweise Aktionen auf Ihrer Benutzeroberfläche auslösen, z. B. die mittlere Schaltfläche auf einem Fünf-Wege-Pad, die Zurück-Taste oder die Menütaste.)
--pct-syskeys <percent> Prozentsatz der „System“-Schlüsselereignisse anpassen. (Dies sind Tasten, die in der Regel vom System verwendet werden können, z. B. die Startbildschirmtaste, die Schaltfläche „Zurück“, „Anruf starten“, „Anruf beenden“ oder die Lautstärkeregelung.)
--pct-appswitch <percent> Prozentsatz der Aktivitätsstarts anpassen. Der Monkey führt in zufälligen Intervallen einen startActivity()-Aufruf aus, um die Abdeckung aller Aktivitäten innerhalb des Pakets zu maximieren.
--pct-anyevent <percent> Passen Sie den Prozentsatz anderer Ereignistypen an. Dies gilt für alle anderen Ereignistypen wie das Drücken von Tasten, andere weniger genutzte Schaltflächen auf dem Gerät usw.
Einschränkungen -p <allowed-package-name> Wenn Sie ein oder mehrere Pakete auf diese Weise angeben, erlaubt der Monkey dem System nur, Aktivitäten innerhalb dieser Pakete aufzurufen. Wenn Ihre Anwendung Zugriff auf Aktivitäten in anderen Paketen benötigt (z.B. um einen Kontakt auszuwählen), müssen Sie auch diese Pakete angeben. Wenn Sie keine Pakete angeben, erlaubt der Monkey dem System, Aktivitäten in allen Paketen zu starten. Wenn Sie mehrere Pakete angeben möchten, verwenden Sie die Option „-p“ mehrmals, wobei Sie pro Paket eine Option „-p“ verwenden.
-c <main-category> Wenn Sie eine oder mehrere Kategorien auf diese Weise angeben, erlaubt der Affe dem System nur den Zugriff auf Aktivitäten, die in einer der angegebenen Kategorien aufgeführt sind. Wenn Sie keine Kategorien angeben, wählt der Monkey Aktivitäten aus, die unter der Kategorie „Intent.CATEGORY_LAUNCHER“ oder „Intent.CATEGORY_MONKEY“ aufgeführt sind. Wenn Sie mehrere Kategorien angeben möchten, verwenden Sie die Option „-c“ mehrmals – eine Option von „-c“ pro Kategorie.
Debugging --dbg-no-events Wenn angegeben, führt der Monkey den ersten Start in eine Testaktivität durch, generiert jedoch keine weiteren Ereignisse. Die besten Ergebnisse erzielen Sie, wenn Sie „-v“, eine oder mehrere Paketeinschränkungen und eine Drosselung ungleich null verwenden, um den Monkey mindestens 30 Sekunden lang laufen zu lassen. Dadurch erhalten Sie eine Umgebung, in der Sie die von Ihrer Anwendung aufgerufenen Paketübergänge überwachen können.
--hprof Wenn diese Option festgelegt ist, werden Profilberichte unmittelbar vor und nach der Monkey-Ereignissequenz generiert. Dabei werden große Dateien (ca. 5 MB) mit Daten/Sonstigen generiert. Verwenden Sie diese Funktion daher mit Vorsicht. Informationen zum Analysieren von Profilberichten finden Sie unter Profil der Anwendungsleistung erstellen.
--ignore-crashes Normalerweise stoppt der Monkey, wenn die Anwendung abstürzt oder eine unbehandelte Ausnahme auftritt. Wenn Sie diese Option angeben, sendet der Monkey weiterhin Ereignisse an das System, bis die Zählung abgeschlossen ist.
--ignore-timeouts Normalerweise stoppt der Monkey, wenn in der Anwendung ein Zeitüberschreitungsfehler auftritt, z. B. das Dialogfeld "Anwendung reagiert nicht". Wenn Sie diese Option angeben, sendet der Monkey weiterhin Ereignisse an das System, bis die Zählung abgeschlossen ist.
--ignore-security-exceptions Normalerweise stoppt der Monkey, wenn in der Anwendung ein Berechtigungsfehler auftritt, z. B. wenn sie versucht, eine Aktivität zu starten, für die bestimmte Berechtigungen erforderlich sind. Wenn Sie diese Option angeben, sendet der Monkey weiterhin Ereignisse an das System, bis die Zählung abgeschlossen ist.
--kill-process-after-error Wenn der Monkey aufgrund eines Fehlers anhält, wird die fehlgeschlagene Anwendung normalerweise weiterhin ausgeführt. Wenn diese Option festgelegt ist, signalisiert sie dem System, den Prozess, bei dem der Fehler aufgetreten ist, zu stoppen. Beachten Sie, dass die gestarteten Prozesse bei einem normalen (erfolgreichen) Abschluss nicht angehalten werden und das Gerät einfach im letzten Zustand nach dem letzten Ereignis belassen wird.
--monitor-native-crashes Prüft und meldet Abstürze im nativen Code des Android-Systems. Wenn --kill-process-after-error festgelegt ist, wird das System angehalten.
--wait-dbg Verhindert die Ausführung des Monkey, bis ein Debugger hinzugefügt wird.