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. |