Małpka interfejsu użytkownika/aplikacji

Małpka to program uruchamiany na Twoim emulatorze lub urządzeniu i generujący pseudolosowe strumienie zdarzeń użytkownika, takich jak kliknięcia, dotknięcia czy gesty, a także szereg zdarzeń na poziomie systemu. Możesz jej użyć do testowania w skrajnych warunkach aplikacji, które tworzysz, w losowy, lecz powtarzalny sposób.

Przegląd

Jest to narzędzie wiersza poleceń, które można uruchomić w dowolnej instancji emulatora lub na urządzeniu. Wysyła do systemu pseudolosowy strumień zdarzeń użytkownika, który działa jak test obciążeniowy tworzonego przez Ciebie oprogramowania.

W Małpce dostępnych jest wiele opcji, ale można je podzielić na 4 główne kategorie:

  • Podstawowe opcje konfiguracji, na przykład ustawienie liczby próbować zdarzenia.
  • ograniczenia operacyjne, np. ograniczenie testu do jednego pakietu.
  • Typy i częstotliwości zdarzeń.
  • Opcje debugowania.

Po uruchomieniu Małpka generuje zdarzenia i wysyła je do systemu. Sprawdza też testowany system i wyszukuje 3 warunki, które są specjalnie leczone:

  • Jeśli działanie małpy jest ograniczone do jednego lub kilku określonych pakietów, wykrywa ona próby przejścia do innych pakietów i blokuje je.
  • Jeśli aplikacja ulegnie awarii lub otrzyma jakikolwiek nieobsługiwany wyjątek, aplikacja Małpa zatrzyma się i zgłosi błąd.
  • Jeśli aplikacja wygeneruje błąd aplikacja nie odpowiada, aplikacja Małpa zatrzyma się i zgłosi błąd.

W zależności od wybranego poziomu szczegółowości zobaczysz też raporty o postępach w Małpie i generowanych zdarzeniach.

Podstawowe funkcje obsługi „Małpy”

Możesz uruchomić Małpkę za pomocą wiersza poleceń na komputerze programisty lub za pomocą skryptu. Ponieważ Monkey działa w środowisku emulatora/urządzenia, musisz uruchomić go z powłoki w tym środowisku. Aby to zrobić, przed każdym poleceniem umieść przedrostek adb shell lub wpisz bezpośrednio powłokę i polecenia Monkey.

Podstawowa składnia to:

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

Jeśli nie podasz żadnych opcji, Małpka uruchomi się w trybie cichym (nieszczegółowym) i będzie wysyłać zdarzenia do wszystkich (i wszystkich) pakietów zainstalowanych w środowisku docelowym. Oto bardziej typowy wiersz poleceń, który uruchamia aplikację i wysyła do niego 500 pseudolosowych zdarzeń:

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

Informacje o opcjach poleceń

Tabela poniżej zawiera wszystkie opcje, które można uwzględnić w wierszu poleceń Monkey.

Kategoria Opcja Opis
Ogólne --help Drukuje prosty przewodnik użytkowania.
-v Każda litera -v w wierszu poleceń zwiększa poziom szczegółowości. Poziom 0 (domyślny) zawiera tylko powiadomienia o uruchomieniu, o zakończeniu testu i o końcowych wynikach. Poziom 1 zawiera więcej informacji o przebiegu testu, np. poszczególne zdarzenia wysyłane do działań. Poziom 2 zawiera bardziej szczegółowe informacje o konfiguracji, np. aktywności wybrane lub niewybrane do testów.
Wydarzenia -s <seed> Wartość początkowa generatora liczb pseudolosowych. Jeśli uruchomisz ponownie narzędzie Małpa z tą samą wartością ziarna, wygeneruje tę samą sekwencję zdarzeń.
--throttle <milliseconds> Wstawianie stałego opóźnienia między zdarzeniami. Możesz użyć tej opcji, żeby spowolnić małpę. Jeśli jej nie podasz, nie wystąpi opóźnienie, a zdarzenia będą generowane najszybciej, jak to możliwe.
--pct-touch <percent> Dostosuj odsetek zdarzeń dotknięcia. Zdarzenia dotknięcia to zdarzenia w dół w jednym miejscu na ekranie.
--pct-motion <percent> Dostosuj odsetek zdarzeń ruchu. (Zdarzenia ruchu obejmują zdarzenie w dół w jakimś miejscu na ekranie, serię pseudolosowych ruchów i zdarzenie w górę).
--pct-trackball <percent> Dostosuj odsetek zdarzeń kulki. (Wydarzenia związane z kulką składa się z jednego lub kilku losowych ruchów, po których czasami następuje kliknięcie).
--pct-nav <percent> Dostosuj odsetek „podstawowych” zdarzeń nawigacji. (Zdarzenia związane z nawigacją składają się z góry, do dołu, w lewo lub w prawo jako dane wejściowe z kierunkowego urządzenia wejściowego).
--pct-majornav <percent> Dostosuj odsetek „ważnych” zdarzeń nawigacji. Są to zdarzenia związane z nawigacją, które zwykle powodują działania w interfejsie użytkownika, np. przycisk środkowy na padzie 5-kierunkowym, klawisz Wstecz lub klawisz menu.
--pct-syskeys <percent> Dostosuj odsetek kluczowych zdarzeń „systemowych”. Są to klawisze, które są zwykle zarezerwowane do użytku przez system, np. Ekran główny, Wstecz, Rozpocznij połączenie, Zakończ połączenie czy Sterowanie głośnością.
--pct-appswitch <percent> Dostosuj odsetek uruchomienia aktywności. W losowych odstępach czasu małpa wywołuje wywołanie startActivity(), aby zmaksymalizować zasięg wszystkich aktywności w pakiecie.
--pct-anyevent <percent> Dostosuj odsetek zdarzeń innego typu. Obejmuje to wszystkie inne rodzaje zdarzeń, np. naciśnięcia klawiszy czy inne rzadziej używane przyciski na urządzeniu.
Ograniczenia -p <allowed-package-name> Jeśli określisz w ten sposób co najmniej jeden pakiet, Małpa umożliwi systemowi odwiedzanie tylko działań w ramach tych pakietów. Jeśli Twoja aplikacja wymaga dostępu do działań w innych pakietach (np. w celu wybrania kontaktu), musisz także określić te pakiety. Jeśli nie określisz żadnych pakietów, Monkey zezwoli systemowi na uruchamianie działań we wszystkich pakietach. Aby określić kilka pakietów, użyj opcji -p kilka razy – po jednej opcji -p w pakiecie.
-c <main-category> Jeśli określisz w ten sposób co najmniej 1 kategorię, Małpa umożliwi systemowi odwiedzanie tylko aktywności wymienionych w jednej ze określonych kategorii. Jeśli nie określisz żadnych kategorii, Małpka wybierze działania wymienione z oznaczeniem kategorii Intent.CATEGORY_LAUNCHER lub Intent.CATEGORY_MONKEY. Aby określić kilka kategorii, użyj opcji -c kilka razy – po 1 opcji -c w każdej kategorii.
Debugowanie --dbg-no-events Gdy zostanie podany, małpa wykona wstępne uruchomienie w ramach działania testowego, ale nie będzie generować dalszych zdarzeń. Aby uzyskać najlepsze wyniki, połącz polecenie -v, co najmniej jedno ograniczenie pakietu oraz niezerowe ograniczenie, aby aplikacja „Małpa” działała przez co najmniej 30 sekund. Zapewnia ono środowisko, w którym możesz monitorować przejścia pakietów wywoływane przez Twoją aplikację.
--hprof Jeśli ta opcja jest skonfigurowana, ta opcja generuje raporty profilowania bezpośrednio przed sekwencją zdarzeń Małpa i po niej. Spowoduje to wygenerowanie dużych plików (ok. 5 MB) w danych/innych plikach, więc używaj ich z rozwagą. Informacje o analizie raportów profilowania znajdziesz w artykule na temat profilowania wydajności aplikacji.
--ignore-crashes Standardowo Małpa zatrzymuje się, gdy w aplikacji ulegnie awarii lub wystąpi dowolny nieobsługiwany wyjątek. Jeśli wybierzesz tę opcję, Małpa będzie dalej wysyłać zdarzenia do systemu, dopóki nie zakończy się pomiar.
--ignore-timeouts Zwykle małpa zatrzymuje się, gdy w aplikacji wystąpi dowolny błąd przekroczenia limitu czasu, na przykład okno „Aplikacja nie odpowiada”. Jeśli wybierzesz tę opcję, Małpa będzie dalej wysyłać zdarzenia do systemu, dopóki liczenie się nie zakończy.
--ignore-security-exceptions Zwykle małpka zatrzymuje się, gdy w aplikacji wystąpi błąd uprawnień, na przykład przy próbie uruchomienia działania, które wymaga pewnych uprawnień. Jeśli określisz tę opcję, Małpa będzie dalej wysyłać zdarzenia do systemu, dopóki liczenie się nie zakończy.
--kill-process-after-error Standardowo, gdy Małpka zatrzymuje się z powodu błędu, aplikacja, której nie udało się przetworzyć, nie zostanie uruchomiona. Gdy ta opcja jest włączona, system sygnalizuje, że zakończył proces, w którym wystąpił błąd. Uwaga: w normalnym (udanym) procesie uruchomione procesy nie są zatrzymywane, a urządzenie pozostaje w ostatnim stanie po zakończeniu zdarzenia końcowego.
--monitor-native-crashes Wykrywa i zgłasza awarie występujące w kodzie natywnym systemu Android. Jeśli ustawisz wartość --kill-process-after-error, system zostanie zatrzymany.
--wait-dbg Zatrzymuje uruchamianie aplikacji Małpy do czasu podłączenia do niej debugera.