W dobie postępującej wirtualizacji i przeniesienia licznych procesów do internetu wręcz archaicznym może wydawać się testowanie czegokolwiek na prawdziwych, fizycznych urządzeniach. Nie bez powodu uważa się, iż środowiska wirtualne są bardziej elastyczne, zwinne i łatwiej skalowalne niż te, działające bezpośrednio na prawdziwym sprzęcie (real device).

W obliczu tak przytłaczających korzyści można więc pomyśleć, że absolutnie nie ma powodu, by testować strony czy aplikacje webowe na prawdziwych sprzętach, zwłaszcza gdy w zasięgu myszki mamy dostęp do tysięcy symulatorów i emulatorów. A jednak. Testowanie na fizycznych sprzętach pozostaje kluczowe w pewnych przypadkach i nie zanosi się na to, by łatwo było je zastąpić lub by zastąpić je w ogóle.

Przyjrzyjmy się zatem, jakie są przypadki użycia, wyjaśniając, kiedy testowanie na urządzeniach rzeczywistych jest korzystniejsze niż testowanie z wykorzystaniem symulatorów i emulatorów.

Symulator

Symulatory i emulatory

Nie będziemy zagłębiać się w szczegółową analizę różnic między emulatorami a symulatorami, ponieważ nie czas i miejsce na to. Zamiast tego powiemy krótko, że emulatory działają jak urządzenie wirtualne, które mają być dokładną, cyfrową repliką urządzenia rzeczywistego. Symulatory naśladują działanie zewnętrzne urządzenia, ale nie wirtualizują sprzętu rzeczywistego. Chętnych odsyłamy do słownika na testerzy.pl.

Funkcjonalności obu systemów nie są identyczne, ale w wielu przypadkach mogą się uzupełniać. Symulator w określonych sytuacjach może być emulatorem. Emulator nigdy nie będzie symulatorem

Kamil Folga, Symulatory i emulatory sieci

Emulatory i symulatory okazują się niezwykle przydatne, gdy w trakcie testowania chcemy szybko zmienić czynniki środowiskowe, by zobaczyć, jak oprogramowanie reaguje na inne ustawienia np. modyfikowanie typu procesora lub ilości pamięci bez konieczności przerabiania rzeczywistego sprzętu (co jest z pewnością bardziej problematyczne i czasochłonne).

Jednak dostępne obecnie na rynku emulatory i symulatory nie są bez wad. Jedną z nich i chyba wymienianą najczęściej, jest ta, że teoretyczne zachowanie zwirtualizowanego środowiska rzadko stanowi idealne odzwierciedlenie rzeczywistego sprzętu lub oprogramowania.

Smartphone z podłączonymi słuchawkami

 

Specyficzne sytuacje

Korzystając z prawdziwych urządzeń do przeprowadzania analizy, decydujemy się na utratę pewnego rodzaju elastyczności czy ograniczenie niektórych możliwości, o których pisaliśmy wyżej. W zamian otrzymujemy jednak wyniki testów, które dokładnie odzwierciedlają, jak aplikacja czy strona internetowa będzie się zachowywać na danym typie urządzenia w rzeczywistości.

Kiedy warto sięgnąć po prawdziwe urządzenia? Najlepiej wtedy, gdy chcemy przetestować pewne typu funkcji, które są trudne lub niemożliwe do przetestowania w środowiskach emulowanych i symulowanych. W sytuacjach takich, jak:

  • Gdy chcemy przetestować stopień nagrzewania się urządzenia podczas działania aplikacji i sprawdzić wydajność sprzętu (performance testing); ile procesora zużywa na aplikację, ile pamięci, jak szybko urządzenie reaguje, etc.
  • Gdy chcemy sprawdzić, jak łączność bezprzewodowa wpływa na aplikację (wprawdzie istnieją emulatory odpowiedzialne za emulację połączeń sieci bezprzewodowych, ale w tym momencie są nieporównywalnie gorsze od prawdziwych urządzeń).
  • Gdy chcemy przetestować, jak aplikacja reaguje na sprzęt audio i wideo w urządzeniu (tu również można spróbować emulować karty dźwiękowe i procesory graficzne, ale ponieważ hardware jest obecnie tak wysoko wyspecjalizowany, trudno jest uzyskać wiarygodne wyniki testów podczas używania emulowanego sprzętu audio i wideo).
  • Gdy chcesz dowiedzieć się, jak użytkownik reaguje na twoją aplikację, gdy trzyma w dłoniach prawdziwe urządzenie i wyświetla ją na ekranie bez niczego w pobliżu (zamiast po prostu wyświetlić ją na ekranie przy pomocy emulatora lub symulatora).
  • Sprawdzanie integralności fizycznych danych wejściowych a aplikacją. Korzystając z wielu różnych czujników takich jak chociażby GPS, czujniki zbliżeniowe, życiowe, gesty dotykowe, czytniki linii papilarnych, etc. aplikacje wymagają przetestowania na prawdziwym urządzeniu. Wiele z tych gestów nie można zasymulować. Jeśli można je emulować, to prawdopodobnie tylko na jednym smartphonie czy emulatorze, nie na wszystkich urządzeniach od dostępnych na rynku marek.
  • Gdy emulatory nie są w stanie przetestować aplikacji. „Istnieje wiele bibliotek firm trzecich, które wymagają określonego typu sprzętu i nie można ich uruchomić na emulatorze” – twierdzi Andrej Kostresevic, CEO w Nomads.

Prawdziwe urządzenia są dobre do testowania aplikacji w mniej optymalnych warunkach sieciowych. W jaki sposób aplikacja reaguje na przykład, gdy sieć wpada i znika?

Eran Kinsbruner, Perfecto Mobile [w:] Mobile app testing: When to use real devices versus emulators

Prawdziwy telefon komórkowy w pudełku

Korzystanie z real device

W powszechnej opinii funkcjonuje przekonanie, jakoby testowanie na prawdziwych urządzeniach było „skazane” na powolność w opozycji do szybszych emulatorów i symulatorów. Nie będziemy się w tym miejscu nad tym rozwodzić, bo musielibyśmy napisać jeszcze ze trzy części tekstu, ale zaznaczymy, że nie do końca jest to prawda. Wiele bowiem zależy od szybkości naszego sprzętu, wielkości pamięci, szybkości łącza, tego z jakich urządzeń korzystamy, a z jakich emulatorów, etc. Odpowiedź nie jest jednoznaczna i składa się na nią wiele czynników.

Zwykle odpowiedzią na pytanie, kiedy najlepiej używać prawdziwych narzędzi do testowania jest taka, by robić to na końcu cyklu testerskiego. W ten sposób uzyskamy dokładne wyniki testów wykonane na prawdziwych urządzeniach tuż przed wprowadzeniem produktu do produkcji. Nie musimy martwić się testowaniem na real devices w trakcie trwania procesu tworzenia strony czy aplikacji, który mógłby spowolnić proces dostarczania produktu na wcześniejszych etapach. W większości przypadków, jeśli aplikacja przeszła wszystkie inne testy, wszelkie błędy wykryte podczas testowania na urządzeniach rzeczywistych będą prawdopodobnie niewielkie i łatwe do naprawy.

Nie jest jednak trudno wyobrazić sobie sytuację, gdy chcemy przeprowadzić testy na prawdziwych urządzeniach wcześniej, niż pod sam koniec procesu. Na przykład, gdy nasza aplikacja jest odgórnie zależna od hardwaru smartphona. Wówczas warto skupić się na urządzeniach rzeczywistych i zrobić to jak najszybciej. Lepiej już w początkowym etapie zidentyfikować istotne problemy związane z działaniem na hardwarze, niż później kasować część kodu, by naprawić działanie całości.

Jeśli aplikacja jest centralnie zależna od funkcji sprzętowych w urządzeniu, warto jak najwcześniej i jak najczęściej przeprowadzać testy na prawdziwych urządzeniach, choć nie wyklucza to korzystania z dobrodziejstw symulatorów i emulatorów, w ramach wsparcia.

Testowanie aplikacji mobilnych na emulatorach jest ogromnym ryzykiem, ponieważ użytkownicy uruchamiają aplikacje na prawdziwych urządzeniach, a nie na emulatorach. Są rzeczy, których nie można znaleźć na emulatorach i symulatorach, i jest to jeden z największych powodów, dla których ludzie używają ich w połączeniu z prawdziwymi urządzeniami

Eran Kinsbruner, Perfecto Mobile [w:] Mobile app testing: When to use real devices versus emulators

Emulatory dobrze sprawdzają się w testowaniu interfejsu użytkownika i wstępnej kontroli jakości, a prawdziwe urządzenia są absolutnie niezbędne do testowania w przypadkach, które opisaliśmy powyżej. Rozszerzenie możliwości, jakie dają real devices o chmurę urządzeń, czyli skorzystanie z device testing laba (lub też: laboratorium urządzeń), świetnie sprawdzi się, gdy chcemy powiększyć skalę przeprowadzanej analizy i zwielokrotnić liczbę urządzeń i systemów operacyjnych. O zaletach testowania z wykorzystaniem prawdziwym urządzeń umieszczonych w device testing lab pisaliśmy tutaj. A jeśli chcecie dowiedzieć się czegoś więcej na temat związany z tą technologią, to odsyłamy was do wpisu Czym są live testy?

Jeśli chcesz po prostu skupić się na jakości i wypuszczać aplikacje mobilne na rynek, a nie zajmować się zarządzaniem urządzeniami, niech chmura zrobi to za Ciebie

Eran Kinsbruner, Perfecto Mobile [w:] Mobile app testing: When to use real devices versus emulators

Część specjalistów z branży podejmuje decyzję o wyborze sposobu testowania na podstawie konkretnych przypadków. Jest to podejście bardzo indywidualne i relatywne. Z pewnością w taki sposób wybór metody testowania jest lepiej dopasowany do sytuacji. Na przykład zmiany, które mają wpływ zarówno na interfejs użytkownika, jak i architekturę aplikacji, najlepiej testować przy użyciu kombinacji urządzeń fizycznych i emulatorów.

Wybór między emulatorami i symulatorami a prawdziwymi urządzeniami nie powinien opierać się na zasadzie „albo jedno, albo drugie”. Decyzja o skorzystaniu z konkretnego rozwiązania powinna być podyktowana chęcią znalezienia właściwych proporcji między oboma rodzajami testowania w celu wspierania standardów jakości w ciągłej integracji i wdrażaniu.

7
  •  
    7
    Shares
  • 7
  •  
  •  
  •