Co to jest testowanie na małpach i gorylach? Przykłady, różnica
⚡ Inteligentne podsumowanie
Testowanie metodą Monkey polega na wprowadzaniu do działającej aplikacji losowych, nieplanowanych danych i obserwowaniu, czy zostaną one zapisane. Dzięki temu awarie, zawieszenia i nieobsłużone stany są ujawniane na długo przed napisaniem jakiegokolwiek zdefiniowanego przypadku testowego.
Czym jest testowanie na małpach?
Testowanie małp To technika testowania oprogramowania, w której tester wprowadza losowe dane do aplikacji bez predefiniowanych przypadków testowych i sprawdza jej zachowanie, w szczególności czy się zawiesza. Celem testowania małp jest wykrywanie błędów i usterek poprzez eksperymentalną, nieskryptowaną interakcję.
Nazwa pochodzi od prostego obrazka, który ilustruje poniższy tekst.
- W testach małpich tester (i czasami programista) jest traktowany jako „małpa”.
- Gdyby małpa korzystała z komputera, wykonywałaby zadania losowo, nie rozumiejąc systemu.
- W ten sam sposób tester stosuje losowe dane wejściowe w testowanym systemie, aby znaleźć błędy, nie określając wcześniej żadnego przypadku testowego.
- W niektórych przypadkach testy na małpach mają na celu testów jednostkowych or Testowanie GUI.
Co to jest testowanie goryla?
Testowanie goryli jest techniką testowania oprogramowania, w której jeden moduł programu jest wielokrotnie testowany w celu potwierdzenia, że działa poprawnie i nie zawiera żadnych błędów.
Pojedynczy moduł może być testowany setki lub więcej razy w dokładnie ten sam sposób, dlatego testowanie typu „gorilla” jest również znane jako „testowanie frustrujące”. Testowanie typu „monkey” rozkłada się losowo na całą aplikację; testowanie typu „gorilla” koncentruje się na jednym miejscu, aż się zepsuje lub okaże się niezawodne.
Rodzaje testów na małpach
Testowanie małp dzieli się na kategorie w zależności od wiedzy testera o systemie. Poniższy diagram podsumowuje te trzy typy.
- Głupia małpa: tester nie ma pojęcia o systemie ani jego funkcjonalności i nie ma żadnej gwarancji, że jakiekolwiek dane wejściowe są prawidłowe.
- Mądra małpa: Tester ma dokładny obraz systemu, jego celu i funkcjonalności, porusza się po nim i dostarcza prawidłowych danych wejściowych.
- Genialna małpa: Tester pracuje na podstawie rzeczywistych zachowań użytkowników i jest w stanie wskazać miejsca, w których najprawdopodobniej pojawią się defekty.
Testowanie małp kontra testowanie goryli kontra testowanie ad-hoc
Testowanie na małpach, testowanie na gorylach i testy ad hoc Łączy je nieskryptowany smak, dlatego często są mylone. Dwie poniższe tabele je rozdzielają.
Testowanie małp kontra testowanie goryli
| Testowanie małp | Testowanie goryla |
|---|---|
| Wykonywane losowo, bez żadnych konkretnie zdefiniowanych przypadków testowych. | Ani zdefiniowane, ani losowe — te same kontrole są po prostu powtarzane. |
| Wykonywane w całym systemie i mogą obejmować wiele przypadków testowych. | Wykonano na kilku wybranych modułach z niewielką liczbą przypadków testowych. |
| Celem jest sprawdzenie, czy nie nastąpiła awaria systemu. | Celem jest sprawdzenie czy moduł działa prawidłowo. |
Testowanie małp kontra testowanie ad hoc
| Testowanie małp | Testowanie ad hoc |
|---|---|
| Wykonywane losowo, bez żadnych konkretnie zdefiniowanych przypadków testowych. | Wykonywane bez planowania i dokumentacji, bez przygotowywania przypadków testowych ani SRS. |
| Testerzy mogą nie wiedzieć, czym jest system ani do czego służy. | Przed rozpoczęciem testów tester musi dobrze zrozumieć system. |
| Celem jest sprawdzenie, czy nie nastąpiła awaria systemu. | Celem jest losowe podzielenie systemu na podczęści i sprawdzenie ich funkcjonalności. |
Zalety i wady testów na małpach
Ponieważ technika ta polega na zastąpieniu planowania szybkością, jej zalety i wady wynikają z tej samej właściwości.
Zalety testów na małpach
- Nowe rodzaje błędów: tester ma swobodę działania poza wcześniej określonymi scenariuszami, co prowadzi do pojawienia się błędów, których nikt nie przewidział.
- Łatwe do wykonania: Szybkim sposobem na sprawdzenie działania systemu jest wykonywanie losowych akcji na podstawie losowych danych.
- Less wykwalifikowani ludzie: testy na małpach często można przeprowadzić bez udziału doświadczonych testerów.
- Less kosztowny: wymaga znacznie mniejszych nakładów na konfigurację i uruchomienie niż pakiet skryptowy.
Wady testów na małpach
- Błędy mogą być trudne do rozmnożenia: Ponieważ dane wejściowe są losowe, odtworzenie awarii może nie być możliwe bez zarejestrowanego ziarna.
- Less precyzja: tester nie jest w stanie zdefiniować dokładnego scenariusza i nie może zagwarantować dokładności tego, co zostało omówione.
- Ekspertyza techniczna nadal jest pomocna: aby wyniki były miarodajne, testerzy muszą mieć dobrą znajomość danej dziedziny.
- Wolno w stosunku do plonu: przebiegi mogą trwać długo i wciąż ujawniać niewiele błędów, pozostawiając luki w systemie.
Jak przeprowadzić test na małpach
Testowanie małp staje się o wiele bardziej efektywne, gdy jest obsługiwane przez narzędzie i można je uruchamiać Android Kompilacje, a także aplikacje desktopowe i internetowe. Ogólny proces wygląda następująco:
- Zarejestruj testowaną aplikację za pomocą narzędzia lub dedykowanego serwera, który będzie ją obsługiwał.
- Przygotuj odniesienia i konfigurację, których narzędzie potrzebuje do zbudowania zestawu testów.
- Uruchom utworzony zestaw testów.
- Pozwól narzędziu zapisać swój dziennik — plik dziennika „testu małpy” rejestruje każde wygenerowane zdarzenie i wyniki.
- Pozwól na kontynuowanie działania, aż system osiągnie punkt krytyczny, w którym nieprawidłowe działanie zostanie odnotowane w dzienniku.
- Udostępnij raport zespołowi odpowiedzialnemu i zachowaj dane testowe do wykorzystania w przyszłości.
Zachowaj każdy dziennik. Losowy przebieg będzie przydatny później tylko wtedy, gdy sekwencja zdarzeń i ziarno, które ją wygenerowało, zostaną zapisane, więc zarządzanie defektami można powiązać awarię z odtwarzalnym sygnałem wejściowym.
Narzędzia do testowania małp
Testowanie na małpach jest zazwyczaj zautomatyzowane, ponieważ maszyna może wygenerować tysiące zdarzeń w czasie, gdy człowiek wygeneruje kilkadziesiąt. Najczęściej stosowane opcje to:
- Ćwiczenie interfejsu użytkownika/aplikacji Monkey: narzędzie wiersza poleceń wbudowane w Android który działa w adb shell i wysyła pseudolosowe strumienie zdarzeń użytkownika, takich jak dotknięcia, gesty i naciśnięcia klawiszy, a także zdarzenia na poziomie systemu, do urządzenia lub emulatora.
- Małpi Biegacz: oddzielny Python API który steruje urządzeniami i emulatorami ze stacji roboczej, wysyłając określone polecenia i przechwytując zrzuty ekranu. Pomimo nazwy, nie jest to to samo narzędzie co Exerciser Monkey.
- Automatyzator interfejsu użytkownika i Appium: ogólny testy mobilne struktury, które można zaprogramować tak, aby uruchamiały półlosowe sekwencje zdarzeń podczas kompilacji.
- Narzędzia do testowania nieszczelności, takie jak AFL: ta sama koncepcja losowego wprowadzania danych zastosowana do danych, a nie gestów, co jest omówione w testowanie rozmycia.
Wsparcie narzędzi do testowania na małpach jest mniejsze niż w przypadku testowania skryptowego testowanie automatyzacjiDlatego większość zespołów łączy ogólny generator zdarzeń z istniejącym frameworkiem, zamiast kupować dedykowany produkt.
Kiedy stosować testowanie na małpach
Testowanie na małpach sprawdza się w konkretnych sytuacjach, a nie jako ogólny zamiennik planowanych testów.
Używaj, gdy:
- Wczesna wersja wymaga niedrogiego sprawdzenia stabilności przed powstaniem formalnych przypadków testowych.
- Interfejs jest wysoce interaktywny — zawiera gry, narzędzia do rysowania, odtwarzacze multimedialne — a rzeczywiste zachowania użytkowników są trudne do przewidzenia.
- Chcesz się namoczyć lub stres uruchomienie, które wykrywa awarie, wycieki pamięci i nieobsłużone stany na przestrzeni wielu godzin.
- Wydanie przeszło kontrolę skryptową i chcesz niezależnego sprawdzenia wszystkiego, czego skrypt nie ruszył.
Unikaj tego, gdy:
- Potrzebne są powtarzalne dowody spełnienia wymagania — to zadanie pisemnego walizka testowa.
- Kompilacja jest na tyle niestabilna, że każde uruchomienie powoduje natychmiastowy błąd, przez co wszystko inne jest ukryte za pierwszą awarią.
- Czasu jest niewiele, ponieważ losowe poszukiwania nie dają gwarancji znalezienia czegokolwiek.
W praktyce najlepsze rezultaty uzyskuje się, łącząc podejścia: testy skryptowe obejmują znane przepływy, testowanie eksploracyjne celowo bada nieznane i testuje na małpach wszystko, co według nich nigdy się nie wydarzy.


