Małpa czy goryl? Które z nich przetestuje Twoją aplikację?

Małpa czy goryl? Które z nich przetestuje Twoją aplikację?
Małpie i goryle testowanie to dwie techniki, które z pozoru mogą wydawać się podobne, ale w rzeczywistości służą różnym celom i stosuje się je na różnych etapach rozwoju aplikacji. Choć obie te techniki mają wspólny cel, jakim jest znalezienie błędów i usterek w oprogramowaniu, różnią się między sobą podejściem i zakresem.

Małpie testowanie

Małpie testowanie (monkey testing) jest techniką testowania oprogramowania, polegającą na wprowadzaniu losowych danych wejściowych (np. kliknięcia, wpisywanie tekstu, gesty) do aplikacji, aby w ten sposób sprawdzić jej reakcję i spróbować wywołać awarię systemu.

Głównym celem małpiego testowania jest sprawdzenie niezawodności i wydajności całego systemu w warunkach nieprzewidywalnych i niestandardowych. Chodzi o to, aby zidentyfikować potencjalne błędy, które mogłyby zostać przeoczone podczas bardziej tradycyjnych testów.

Zalety małpiego testowania:

  • nie ma konieczności tworzenia scenariuszy testowych
  • można je łatwo zautomatyzować, co pozwala na przeprowadzenie ich wielokrotnie i na większą skalę
  • losowość danych wejściowych umożliwia szybką identyfikację błędów, które w innym przypadku byłyby trudne do wykrycia
  • pozwala na przetestowanie całego systemu, a nie tylko poszczególnych funkcjonalności, co daje szerszy obraz jego stabilności
  • do przeprowadzenia testów nie jest wymagana głęboka znajomość kodu czy struktury aplikacji.

Wady:

  • losowość danych wejściowych sprawia, że trudno jest odtworzyć kroki prowadzące do błędu
  • jest mniej popularne niż inne techniki testowania, ze względu na trudności w interpretacji wyników i odtwarzaniu błędów.

Małpie testowanie dzieli się na trzy odrębne kategorie, w zależności od poziomu wiedzy testera i sposobu, w jaki test jest przeprowadzany:

  • podejście „dumb monkey” – testy głupiej małpy - w którym testerzy nie posiadają żadnej wiedzy na temat systemu ani jego funkcjonalności. Nie są w stanie ocenić, czy wprowadzane dane są poprawne czy nie. Test polega na losowym wprowadzaniu danych, bez żadnego konkretnego planu działania.
  • podejście „smart monkey” - testy mądrej małpy - gdzie testerzy mają pełną wiedzę na temat systemu, jego przeznaczenia i funkcjonalności. Potrafią poruszać się po systemie i wprowadzać odpowiednie dane, aby przeprowadzić testy. Testy są bardziej ukierunkowane, ale nadal zawierają element losowości.
  • podejście „brilliant monkey” - testy genialnej małpy - w którym testerzy przeprowadzają testy na podstawie analizy zachowań użytkowników. Potrafią przewidzieć, jakie błędy mogą wystąpić i skupić się na tych obszarach systemu, które są najbardziej podatne na problemy. To podejście jest najbardziej zaawansowane i wymaga dogłębnej wiedzy o systemie oraz jego użytkownikach.

Goryle testowanie

Goryle testowanie (gorilla testing) koncentruje się na intensywnym i powtarzalnym testowaniu konkretnych modułów lub funkcjonalności aplikacji. Testerzy ręcznie wprowadzają losowe dane wejściowe, zarówno poprawne, jak i niepoprawne, aby sprawdzić, jak moduł zachowuje się w ekstremalnych warunkach. Głównym celem gorylego testowania jest sprawdzenie wytrzymałości i odporności na błędy poszczególnych modułów aplikacji. Chodzi o to, aby upewnić się, że moduł działa poprawnie nawet w przypadku nieoczekiwanych danych wejściowych lub intensywnego użytkowania.

Zalety gorylego testowania:

  • pozwala na szczegółowe przetestowanie każdego modułu, co zwiększa szanse na wykrycie ukrytych błędów
  • intensywne testowanie ujawnia słabe punkty w kodzie, które mogłyby prowadzić do awarii w rzeczywistych warunkach
  • sprawdza, jak moduł zachowuje się w przypadku nieprawidłowych danych wejściowych, co pozwala ocenić jego odporność na błędy i awarie.

Wady:

  • jest procesem ręcznym, co oznacza, że wymaga większego nakładu pracy i czasu niż testy automatyczne
  • intensywne testowanie każdego modułu może być czasochłonne, szczególnie w przypadku dużych i złożonych aplikacji
  • testerzy muszą dobrze znać testowany moduł, aby móc skutecznie identyfikować potencjalne problemy.

Podstawowe różnice między małpim a gorylim testowaniem obrazuje poniższa tabela:

 

# małpie testowanie goryle testowanie
cel testu niezawodność i wydajność całego systemu wytrzymałość konkretnych modułów
rodzaj testów losowe powtarzalne, ręczne
automatyzacja tak nie
kto testuje deweloperzy, testerzy, narzędzia deweloperzy i testerzy
wymagana wiedza testera mniejsza większa

 

Kiedy stosować małpie, a kiedy goryle testowanie?

Wybór między tymi dwoma technikami zależy przede wszystkim od etapu rozwoju oprogramowania oraz konkretnych celów testowania.

Małpie testowanie jest szczególnie przydatne na wcześniejszych etapach rozwoju, kiedy aplikacja jest jeszcze w fazie budowy i testowania podstawowych funkcjonalności. W tym momencie głównym celem jest sprawdzenie ogólnej stabilności i wydajności systemu, a także wykrycie potencjalnych błędów krytycznych, które mogłyby uniemożliwić dalszy rozwój. Małpie testowanie, dzięki swojej losowości, może szybko zidentyfikować takie błędy, nawet jeśli nie były one przewidziane w scenariuszach testowych.

Goryle testowanie natomiast jest bardziej odpowiednie na późniejszych etapach rozwoju, kiedy większość funkcjonalności jest już zaimplementowana i przetestowana. W tym momencie skupiamy się na szczegółowym testowaniu poszczególnych modułów, aby upewnić się, że są one wytrzymałe, niezawodne i odporne na błędy. Testowanie goryla pozwala na identyfikację potencjalnych problemów, które mogłyby wystąpić w środowisku produkcyjnym, zanim aplikacja zostanie udostępniona użytkownikom końcowym.

Oczywiście, nie jest to sztywny podział i w niektórych przypadkach małpie testowanie może być stosowane również na późniejszych etapach, a goryle na wcześniejszych. Ostateczna decyzja zależy od specyfiki projektu, dostępnych zasobów i priorytetów testowania.

Źródła:
https://www.browserstack.com/guide/monkey-testing-vs-gorilla-testing