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.

  • 🐒 Główna idea: Losowe kliknięcia, wciskanie klawiszy i gesty służą do badania punktów krytycznych systemu, a nie oczekiwanych rezultatów.
  • 🦍 Kontrast goryli: Testowanie metodą Gorilla wielokrotnie obciąża jeden moduł, podczas gdy testowanie metodą Monkey obejmuje całą aplikację.
  • ???? Trzy stopnie: Głupie, mądre i błyskotliwe małpy różnią się pod względem wiedzy, jaką mają na temat testowanego systemu.
  • ⚖️. Uczciwy kompromis: Tani i szybki w eksploatacji, ale usterki trudno odtworzyć, a gwarancja pokrycia kosztów nie jest gwarantowana.
  • 🛠️. Obróbka: Android UI/Application Exerciser Monkey, MonkeyRunner i podobne narzędzia automatycznie generują strumienie zdarzeń.
  • 🎯 Najlepsze dopasowanie: Wczesne wersje, interaktywne interfejsy i testy stabilności, zawsze połączone z testami skryptowymi i eksploracyjnymi.

Porównanie testów małp i goryli w testowaniu oprogramowania

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.

Tester wcielający się w małpę wprowadzającą losowe dane podczas testowania na małpie

  • 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łupie, mądre i błyskotliwe typy testowania małp

  • 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:

  1. Zarejestruj testowaną aplikację za pomocą narzędzia lub dedykowanego serwera, który będzie ją obsługiwał.
  2. Przygotuj odniesienia i konfigurację, których narzędzie potrzebuje do zbudowania zestawu testów.
  3. Uruchom utworzony zestaw testów.
  4. Pozwól narzędziu zapisać swój dziennik — plik dziennika „testu małpy” rejestruje każde wygenerowane zdarzenie i wyniki.
  5. Pozwól na kontynuowanie działania, aż system osiągnie punkt krytyczny, w którym nieprawidłowe działanie zostanie odnotowane w dzienniku.
  6. 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.

FAQ

Nazwa nawiązuje do nieskończonego obrazu małpy: małpa, która losowo naciska klawisze wystarczająco długo, w końcu tworzy coś sensownego. Zastosowana w oprogramowaniu, losowa indukcja w końcu osiąga stany, których żaden projektant nie przewidział.

Testowanie eksploracyjne jest celowe: tester formułuje hipotezę, bada ją i dostosowuje. Testowanie na małpach jest celowo nieukierunkowane. Jedno opiera się na osądzie, drugie na ilości i losowości.

Łączy je zasada losowego wprowadzania danych, ale różni się celem. Testowanie na małpach (Monkey testing) polega na wyzwalaniu zdarzeń użytkownika w interfejsie. Testowanie rozmyte (Fuzzing) przekazuje nieprawidłowo sformatowane dane do parserów i interfejsów API, zazwyczaj w poszukiwaniu luk w zabezpieczeniach.

Chaos Monkey należy do inżynierii chaosu: losowo wyłącza usługi lub zakłóca infrastrukturę, aby przetestować odporność. Wspólną ideą jest losowość, ale celem jest platforma, a nie interfejs użytkownika.

Modele mogą ukierunkowywać strumień zdarzeń w kierunku ścieżek wybieranych przez rzeczywistych użytkowników, zmieniając głupiego użytkownika w mądrzejszego. Grupują również zduplikowane logi awarii i klasyfikują losowe awarie, które wymagają uwagi programisty w pierwszej kolejności.

Drugi pilot GitHub Szybko tworzy uprząż — generatory zdarzeń, obsługę seedów, parsery logów i skrypty triażu awarii. Strategia losowości i kryteria zaliczenia wciąż wymagają zdefiniowania przez testera.

Przydatne wskaźniki obejmują liczbę awarii na tysiąc wygenerowanych akcji, liczbę znalezionych unikalnych defektów, pokrycie kodu osiągnięte podczas wykonania oraz czas do pierwszej awarii. Analizuj trendy w różnych kompilacjach, zamiast odczytywać dane z jednego wykonania.

Zapisz losowe ziarno i dziennik zdarzeń. Narzędzia akceptujące ziarno odtworzą tę samą sekwencję, dzięki czemu awarię można zawęzić do krótkiego, powtarzalnego przypadku i zgłosić jako normalny defekt.

Podsumuj ten post następująco: