Jak przetestować aplikację mobilną w AndroidStudio przy pomocą fizycznych i niefizycznych urządzeń?

 

Wielu ludzi na co dzień nie ma dostępu do komputera, za to znaczna część z nich ma swoje zmniejszone wersje komputerów zawsze przy sobie.Za ich pomocą kontaktują się z bliskimi, korzystają z najpopularniejszych aplikacji, czytają wiadomości i zaspokajają wiele innych potrzeb. Mowa oczywiście o smartfonach, dzięki którym dziś można zrobić praktycznie wszystko: od płatności i przelewów poprzez organizowanie spotkań aż po zapisanie listy zakupów. Dlatego też coraz więcej mówi się w dzisiejszych czasach o testowaniu aplikacji mobilnych. Mnogość urządzeń często wymaga od testera nie lada organizacji i wiedzy, aby zrobić to możliwie dobrze.

W tym artykule przedstawię możliwości jakie daje nam Android Studio do testowania aplikacji mobilnych na urządzenia z systemem Android. Jest to wstęp do mini serii składającej się z dwóch artykułów — kolejny z nich będzie dotyczył testowania aplikacji mobilnych przy pomocy Xcode. 

Testowanie mobilne

Kiedy mowa o testowaniu mobilnym, na pierwszy plan wysuwa się oczywiście funkcjonalność, ale także użyteczność i testowanie responsywności. W przypadku aplikacji mobilnych przestrzeń ekranowa jest mniejsza, a więc i rozwiązania muszą być jak najbardziej konkretne, przyjemne dla oka i przystosowane do różnych wielkości ekranu. Dlatego też, w zależności od projektu, najczęściej testuje się aplikacje choć częściowo manualnie, szczególnie przez wzgląd na aspekty graficzne.

Android

Zaczynając obmyślać podejście do testowania konkretnych aplikacji warto dowiedzieć się więcej o samym Androidzie. Obecnie na rynku od paru miesięcy dostępny jest  już Android 11, czyli jego najnowsza wersja. Najczęściej, najnowsze wersje systemu Android dostępne są dla telefonów Google (Google Pixel 2, Pixel 2XL, Pixel 3, Pixel 3XL, itd.). Nadal są też osoby, które z powodzeniem używają Android 4, 5 czy 6 w codziennym życiu. Dlatego, myśląc o testowaniu aplikacji mobilnych na systemach Android, warto się zastanowić w jaką grupę celujemy, czy jest to cały świat, czy tylko Europa, Stany Zjednoczone, a może indywidualni specyficzni klienci naszego produktu, do obsługi którego tę aplikację tworzymy.

Z doświadczenia wiem też, że jeśli jakiś błąd występuje na jednym systemie Android to możemy go znaleźć również na innych wersjach tego systemu, ale nigdy stuprocentowej pewności nie mamy, dlatego dla ułatwienia spójrzmy na statystyki.

Użytkownicy

Najczęściej klienci, co zresztą naturalne, chcą aby ich aplikacja była jak najbardziej dostępna dla wszystkich zainteresowanych. Zanim przejdziemy do tego, co z tego wynika, zaznaczę na wstępie, że Android 11 nie jest brany pod uwagę w statystykach, ponieważ na dzień dzisiejszy jest na rynku zaledwie 2 miesiące, a do tego dostępny jest jedynie dla telefonów Google. Dla porównania gdy spojrzymy na Android 10.0 to wyszedł on we wrześniu 2019 a 3 miesiące później, czyli w listopadzie 2019 miało go zainstalowane zaledwie 1% użytkowników Androida. Gdy znane są już nam te dane, przejdźmy do tego co w praktyce oznacza „dostępny dla wszystkich”.

Najwięcej użytkowników (patrząc na skalę światową) korzysta z wersji Android 10, jest to aż 36,93%. Kolejny największy procent to użytkownicy Androida 9, którzy stanowią 24,3% wszystkich posiadaczy smartfonów z tym właśnie systemem. Obserwując tę tendencję, można zauważyć że z czasem coraz więcej ludzi zmienia wersję na nowszą, a druga w kolejności jest coraz mniej używana (choć wciąż bardzo często). Wciąż duży procent ludzi który używa Androida w wersji 8 i starszej. Dlatego też przy projektowaniu i testowaniu aplikacji najbezpieczniej jest brać pod uwagę systemy od Android 6 wzwyż, oczywiście jeśli dana aplikacja ma być uniwersalna. Te i jeszcze więcej statystyk możecie znaleźć tutaj.

udzial-roznych-wersji-androida-w-rynku-1024x424.png

Źródło: https://gs.statcounter.com/os-version-market-share/android/mobile-tablet/worldwide

Urządzenia

Gdy wiemy już jakie wersje systemu warto pokryć testami nadmienię jeszcze o samych urządzeniach dostępnych obecnie na rynku. Najprościej można podzielić je na te wysokiej klasy (high-end) i te niskiej (low-end). 

Zacznijmy od tych „lepszych’. Do tego worka możemy wrzucić wszystkie najnowsze modele z możliwością aktualizacji wersji systemu do najnowszej: wszystkie urządzenia Google Pixel i Samsungi Galaxy od S8+ w górę. Urządzenia te posiadają również dostęp do sieci 4G, dużą pojemność pamięci (7+ GB) oraz ekran o przekątnej 8 cali lub większej. Dlatego też do tego zestawienia należą smartfony z tak zwanym notchem, czyli wycięciem w górnej części ekranu na które trzeba uważać przy projektowaniu widoków.

Z kolei do drugiego typu (low-end) zaliczamy wszelkie urządzenia, które nie otrzymują już wsparcia od producenta, mają dostęp do sieci max. 3G, małą pojemność pamięci oraz są dużo tańsze od telefonów z wyższej półki — dlatego korzysta z nich wiele osób w wielu częściach świata. Więcej na temat tego podziału możecie znaleźć tutaj.

Android Studio

Teraz, kiedy wiemy na jakie aspekty, wersje oraz urządzenia zwracać uwagę przy testowaniu przyjrzyjmy się IDE (Integrated Development Environment), które może nas wspomóc w procesie testowania.

Android Studio jest to oficjalne IDE dla systemu operacyjnego Google Android, za pomocą którego, deweloperzy mogą budować aplikację mobilne na każdy typ urządzenia z tym systemem. Poza tym, że posiada klasyczny edytor kodu, który obsługuje języki Kotlin, Java oraz C/C++, to można mieć podgląd jak dana aplikacja wygląda oraz ile parametrów zużywa. Za pomocą Android Studio można podejrzeć i testować aplikację na różnych emulatorach, które reprezentują fizyczne urządzenia oraz wgrać aplikację na telefon i testować bezpośrednio na nim.

Tutaj możecie podejrzeć w jaki sposób zainstalować i skonfigurować Android Studio na swojej własnej maszynie. Obecnie najnowsza dostępna wersja to 4.1.1.

Android Studio — testowanie na emulatorach

Pierwszą bardzo istotną funkcjonalnością dla testerów (i nie tylko) jest możliwość sprawdzenia danej aplikacji na emulatorach. Po uruchomieniu projektu w górnym pasku widzimy możliwość wybrania pomiędzy podłączonymi urządzeniami (o czym później) a zbudowanymi wirtualnymi urządzeniami, które z powodzeniem możemy dodawać.

Android-studio-urzadzenia-wirtualne-1024x363.png

android-studio-urzadzenia-wirtualne-2-1024x527.png

Dodając nasze wirtualne urządzenie, zaczynamy najpierw od rodzaju jaki chcemy wybrać. Dostępne są to nie tylko emulatory urządzeń mobilnych ale też TV czy też Wear OS.

android-studio-modele-telefonow-1024x688.png

Dodajemy nazwę, pamięć RAM i wielkość ekranu. Możemy wybrać z już istniejących urządzeń, które posiadają parametry takie, jak np. najsłynniejsze telefony Google Pixel.

testowanie-w-android-studio-1024x692.png

Następnym etapem jest wybór wersji systemu. Możemy wybrać wersję Android od 4.1 wzwyż i ją pobrać. Po skonfigurowaniu emulatora możemy przystąpić do zbadania możliwości, jakie nam daje.

testowanie-mobilne-w-android-studio-1024x657.png

Możemy ustawić m.in.:

  • typ internetu oraz jego moc,
  • procent naładowania baterii,
  • wirtualne sensory, które przydadzą się przy badaniu ruchów w aplikacji,
  • koordynaty.

Równie istotne jest to, że generuje się raport błędów, który może okazać się cenną informacją dla programisty.

Po ustawieniu wszystkich niezbędnych parametrów możemy przystąpić do testów. Jak wspomniałam wcześniej, w przypadku aplikacji mobilnych najważniejsza będzie dla nas responsywność oraz testy funkcjonalne. Reszta zależy od wymagań. To co ważne, testować możemy w trybie pionowym (portrait) oraz w trybie poziomym (landscape). Czasem podczas zmiany trybu ustawienia urządzenia mogą wystąpić istotne błędy. Jeśli aplikacja oczywiście obsługuje dwie orientacje. Są rzeczy które ciężko będzie nam zbadać za pomocą emulatora, jak np. skanowanie kodu kreskowego lub dokumentu czy też połączenie bluetooth z innym urządzeniem. Takiego rodzaju funkcjonalności najlepiej testować na urządzeniach fizycznych, które posiadamy.

Android Studio — testowanie na urządzeniach fizycznych

Zanim przystąpimy do wgrania aplikacji na telefon testowy musimy uruchomić tryb debugowania USB. Tryb ten znajduje się w Opcjach deweloperskich urządzenia. W wersji systemu Android 4.2 i nowszych jest on schowany, można go zobaczyć po kliknięciu 7 razy na numer wersji systemu, który w zależności od tej właśnie wersji znajduje się w:

  • Android 9 (API 28) i wyżej: Ustawienia > O telefonie > Numer wersji systemu
  • Android 8.0.0 (API 26) i Android 8.1.0 (API 26): Ustawienia > System > O telefonie > Numer wersji systemu
  • Android 7.1 (API 25) i niżej: Ustawienia > O telefonie > Numer wersji systemu

Teraz możemy wejść w Opcje deweloperskie, znaleźć debugowanie USB i włączyć. W tym przypadku to gdzie znajdziecie tę opcję również zależy od wersji systemu. Możecie zobaczyć ją od razu po wejściu lub (w Androidzie 9+) po kliknięciu „Zaawansowane”. Następnie możemy podłączyć nasze urządzenie do laptopa, wgrać na nie aplikację i zacząć testy.

A co w momencie gdy poza logami, które możemy zobaczyć w Android Studio, chcielibyśmy aby narzędzie pokazało nam konsole i kod odpowiedzi zapytań tak jak w aplikacjach webowych? Z pomocą przychodzi opcja Inspect w Narzędziach deweloperskich Chrome. Po wejściu w chrome://inspect/#devices możemy zobaczyć urządzenia podłączone do komputera. Co bardzo istotne, opcja ta zadziała w przypadku aplikacji budowanych np w Electronie, ponieważ zasilane są przez silnik renderujący Chromium, które to jest open-source częścią Google Chrome. Jeśli, nie są to aplikację oparte na Chromium, można użyć programu zwanego Charles Proxy. W dużym skrócie, umożliwia on przeglądanie całego ruchu pomiędzy maszyną (w tym przypadku telefonem, ale może to też być symulator) a internetem. Obejmuje to żądania, odpowiedzi i nagłówki HTTP (które zawierają pliki cookie i informacje z pamięci podręcznej. Charles Proxy może również służyć do zwolnienia prędkości internetu za pomocą opcji `Throttling`.

Podsumowanie

Testowanie aplikacji mobilnych może być dla nas testerów nie lada wyzwaniem przez mnogość wersji systemu czy też kolejne coraz to nowsze modele smartfonów które prowadzą do tego że rynek stał się bardzo dynamiczny. Skutkuje to czasem tym, że podczas powstawania aplikacji ukaże się np. najnowsza wersja systemu którą trzeba będzie wspierać. Jednakże, jest to bardzo ciekawa dziedzina testowania, która wciąga wielu testerów i zostają w niej na dłużej :) Jeśli, dotarłeś aż tutaj dziękuje za przeczytanie oraz mam nadzieję, że artykuł był ciekawy i przybliżył jak dużą pomocą jest Android Studio w testowaniu mobilnym.