W artykule przeczytasz o tym, dlaczego testowanie aplikacji mobilnych jest tak ważne, dowiesz się również, jakie są typy testów aplikacji mobilnych oraz poznasz obowiązki testera aplikacji mobilnych.

Aplikacje mobilne i ich znaczenie

Cyfryzacja współczesnego świata oraz pandemiczna rzeczywistość ostatnich lat znacząco wpłynęły na wzrost zapotrzebowania, a w rezultacie na dostępność usług internetowych. Czasy pracy online, zdalnego nauczania, internetowych zakupów, spotkań, bankowości czy sportu sprawiły, że firmy coraz chętniej przeznaczają swój budżet na rozwój aplikacji mobilnych. Z raportu App Anie „State of Mobile 2022” wynika, że w 2021 roku użytkownicy około 230 miliardów razy instalowali aplikacje na swoich telefonach, a ich wydatki na aplikacje mobilne sięgnęły przeszło 170 mld dolarów. 

W ubiegłym roku przeciętny Amerykanin spędzał przed ekranem około 4 godzin dziennie, czyli średnio o godzinę dłużej niż np. oglądając ulubiony program w telewizji. Bez wątpienia czasy, gdy telefon służył tylko do wykonywania połączeń telefonicznych, czy pisania SMS-ów bezpowrotnie minęły. Nie ma zatem co się dziwić, że firmy z różnych sektorów decydują się na tworzenie własnych aplikacji, gdy życie i codzienne akcje z nim związane oscylują coraz częściej wokół poręcznego ekranu telefonu. Aplikacja staje się komplementarną częścią życia i coraz więcej firm zdaje sobie z tego sprawę.  

Czym są aplikacje mobilne?

Aplikacja mobilna to typ oprogramowania przeznaczonego konkretnie pod urządzenie mobilne. Pobranie i instalacja aplikacji odbywa się za pomocą sklepu internetowego Google Play (dla systemu Android) oraz App Store (dla systemu iOS). Ilość i dostępność aplikacji stale rośnie. Dla przykładu w chwili otwarcia App Store w 2008 roku było tam dostępnych około 500 aplikacji. Obecnie znajduje się ich tam ponad 2 miliony. Google Play oferuje ich jeszcze więcej, bo około 3,5 miliona, stanowiąc tym samym największy sklep z aplikacjami na świecie. 

Podział aplikacji mobilnych

Aplikacje mobilne można podzielić na 4 główne grupy:

  • Mobile Web
  • Progressive Web Apps
  • Aplikacje Crossplatformowe (Hybrydowe)
  • Aplikacje Natywne

Mobile Web

Jest to zawartość przeznaczona dla Internetu mobilnego i wyświetlania na ekranach telefonów. Punktem przełomowym dla przeglądania stron internetowych za pomocą telefonu był rok 2007, a dokładnie premiera pierwszego iPhona. Minęło kilka lat i ostatecznie w 2014 roku oficjalnie użycie Internetu na urządzeniach mobilnych w USA przekroczyło jego użytkowanie na desktopach. 

Mobile Web nie stanowi osobnej aplikacji, nie ma również dostępu do hardware telefonu. Brak dostępu do Internetu oznacza brak dostępu do zawartości aplikacji. Z drugiej strony jednak Mobile Web charakteryzuje się niższym kosztem budowy oraz utrzymania, jak również szerszą dostępnością dla użytkowników. 

Jak testować mobile Web?

Do testów Mobile Web nie potrzeba dedykowanych urządzeń lub specjalnego oprogramowania. Najważniejszą kwestią związaną z testowaniem Mobile Web jest responsywność, czyli dostosowywanie się wyglądu i układu strony do urządzenia, na jakim jest wyświetlana. Tester sprawdza poprawność wyświetlania treści, obrazów, linków oraz innych mediów. Czytelność względem rozmiarów ekranu, skrolowanie, padding, zmiany kolorów i podświetleń. Czy z punktu widzenia użytkownika wyświetlana treść jest odpowiednio czytelna oraz czy klikalne obszary są wystarczająco duże. 

Progressive Web Apps

Progresywna aplikacja internetowa nie jest ani stroną internetową, ani aplikacją natywną. PWA to strona internetowa, które daje tylko wrażenie bycia aplikacją mimo że jest napisana w tych samych technologiach: HTML, CSS, JavaScript. 

Od Mobile Web różni się możliwością pracy w trybie offline, dostępem do hardware telefonu, lepszym UX, szybszym wczytywaniem zwartości oraz mniejszym zużyciem danych oraz notyfikacjami push. Podobnie jak w przypadku Mobile Web nie jest ma potrzeby instalacji aplikacji ze sklepu Google Play, czy App Store, ponieważ pobiera się ją bezpośrednio z przeglądarki. 

Jak testować Progressive Web Apps?

Testowanie PWA to połączenie testowania stron internetowych oraz testowania aplikacji mobilnych. Progresywna aplikacja internetowa powinna działać prawidłowo niezależnie od urządzenia, połączenia internetowego czy przeglądarki. W przypadku testowania ponownie duże znaczenie ma responsywność, ale również UI, bezpieczeństwo, udostępnianie, aktualizacje, notyfikacje oraz praca w trybie offline. 

Aplikacje Natywne

Aplikacja natywna napisana jest w odpowiednim języku programowania pod konkretny system operacyjny. Dla systemu Android jest Java lub Kotlin, a dla systemu iOS Swift lub Objective C. Innymi słowy kod jest różny w zależności od systemu. Aplikacje natywne odznaczają się świetnym UX, a ze względu na dostęp do wszystkich funkcji urządzenia charakteryzują się pełnym spektrum wykorzystania możliwości telefonu. Są wydajne, szybkie, nie obciążając przy tym dostępnych zasobów. Jednak ceną za wysoką jakość interfejsu jest długi i kosztowny proces tworzenia aplikacji. 

Jak testować Aplikacje Natywne?

Testowanie aplikacji natywnych opiera się już o bardziej skonkretyzowaną wiedzę na temat testowania mobilnego. Z jednej strony należy przeprowadzić testy aplikacji, ale z drugiej trzeba również sprawdzić, jak aplikacja reaguje bezpośrednio z telefonem. Jaki poziom zadowolenia z użytkowania aplikacji będzie miał potencjalny klient, czy użytkownik. Stąd też szeroka gama typów testów na urządzenia mobilne (bardziej szczegółowo omówione w dalszej części artykułu). 

Aplikacje Hybrydowe

Aplikacja hybrydowa łączy w sobie cechy aplikacji webowych i natywnych. Charakteryzuje ją szybszy czas tworzenia, ponieważ zbudowana jest na podstawie kodu, który może działać na różnych systemach operacyjnych – iOS i Android. Aplikacja hybrydowa stworzona jest przy użyciu technologii webowych HTML, CSS, JavaScript i działa jak aplikacja internetowa. Mimo to użytkownik, tak jak w przypadku aplikacji natywnej, pobiera ją i instaluje na swoim urządzeniu. Natywny charakter aplikacji pozwala na korzystanie z konkretnych elementów urządzenia jak np. aparat, czy autoryzacja odciskiem palca. Pomimo wygody i szybkości jej wdrożenia nie jest pozbawiona wad. Jest to związane przede wszystkim z faktem, że mimo wspólnego kodu pozostała część i tak musi być dopisana pod konkretny system operacyjny. Aplikacje hybrydowe nie są polecane przy tworzeniu gier, czy przy tworzeniu bardziej skomplikowanych aplikacji.  

Jak testować aplikacje Hybrydowe?

Testowanie aplikacji hybrydowych jest bardzo podobne do testowania aplikacji natywnych. 

React Native oraz Flutter

Wspominana kosztowność tworzenia aplikacji natywnych, czy hybrydowych może być rozwiązana za pomocą użycia jednego framworka do tworzenia multiplatformowej aplikacji. Takimi frameworkami są mi.in. Flutter czy React Native. 

Flutter to technologia pochodząca do Google, gdzie aplikacja pisana jest w języku Dart. Jeden kod przeznaczony jest zarówno na system Android, jak i iOS.

React Native natomiast to framework open source opracowany przez Facebooka. Umożliwia tworzenie aplikacji za pomocą JavaScript i również jest to jeden kod możliwy do użycia na Androida, czy iOS. 

Wspomniane frameworki zyskują na popularności ze względu na krótszy proces tworzenia aplikacji, niższy koszt wdrożenia, potencjalnych wzrost liczby użytkowników i łatwiejsze utrzymanie. Ich użycie skraca czas wejścia produktu na rynek w porównaniu z aplikacjami natywnymi. 

Typy testów mobilnych

Testy na urządzaniach mobilnych można podzielić na następujące typy:

  • Testy funkcjonalne
  • Usability
  • Testy zużycia baterii
  • Stress and Interrupt
  • Performance
  • Standby
  • Instalacji
  • Aktualizacji
  • Automatyczne
  • Dostępności
  • Lokalizacji

Testy funkcjonale na urządzeniach mobilnych skupiają się na działaniu aplikacji oraz na tym, by upewnić się, że działała zgodnie z przyjętymi założeniami. Tester sprawdza poprawność działania interfejsu oraz zgłasza znalezione nieprawidłowości. Testy funkcjonalne wykonuje się na różnych urządzeniach i w różnych warunkach starając się sprawdzać scenariusze najbliższe prawdopodobnemu użyciu. Sprawdzane jest np. poprawne logowanie, czy wylogowywanie. Testy funkcjonalne mają na cele zapewnienie, że jakość aplikacji jest zgodna z wymogami klienta. 

Testy Usability nastawione są przede wszystkim na wygodę i dobre doświadczenia użytkownika końcowego podczas używania aplikacji. Testy użyteczności koncentrują się na tym, by nawigowanie było intuicyjne, żeby użytkownik nie gubił się w aplikacji i potrafił za pomocą 3 kliknięć znaleźć się w wybranym miejscu (zasada 3 tąpnięć). Testowanie jest formą sprawdzania i ulepszania aplikacji, by w efekcie końcowym była jak najlepsza i najłatwiejsza w użyciu (np. duże obszary dotykowe, autouzupełnianie, obsługa jedną ręką). 

Testy zużycia baterii stosowane są w celu zminimalizowania zużycia baterii przez aplikację. Testerzy sprawdzają np. czy aplikacja działająca w tle zużywa tyle samo baterii, co będąc bezpośrednio w użyciu. Jak wygląda zużycie baterii w trakcie używania aplikacji i czy np. można ją uruchomić w trybie oszczędzania energii. 

Stress and Interrupt stanowią bardzo ważną część testowania mobilnego i najczęściej wymagają koordynacji kilku urządzeń wzajemnie na siebie oddziaływujących np. inny telefon, słuchawki itp. lub innych aplikacji jak np. dzwoniący budzik, czy powiadomienie z kalendarza. Tester sprawdza, jak smsy i przychodzące połączenia wpływają na działanie aplikacji. Co się dzieje, gdy połączenie z Internetem zostanie przerwane. Jak aplikacja reaguje na zmianę Internetu z Wi-Fi na sieć komórkową. 

Testy Performance związane są z szybkością i wydajnością aplikacji. Koncentrują się na tym, by aplikacja działała szybko, a zawartość ekranu nie wczytywała się zbyt długo. Tester sprawdza, jak szybko aplikacja reaguje na gesty, ile zużywa pamięci, procesora, czy  też mobilnego Internetu. 

Standby testy sprawdzają działanie aplikacji przy włączeniu, wyłączeniu ekranu. Jak aplikacja zachowuje się i jak długo wytrzymuje, działając w tle (z/bez połączenia z Internetem). Jaki wpływ na podłączone za pomocą Bluetooth urządzenia zewnętrzne ma wyłączenie ekranu. Czy połączenie zostanie wtedy przerwane? 

Testy Instalacji skupiają się na procesie pobierania aplikacji na urządzeniu. Testerzy sprawdzają, jak instaluje się aplikacja przy szybkim/wolnym Internecie, gdy jest dużo/mało dostępnej pamięci w telefonie lub gdy tej pamięci jest generalnie niewystarczająco. Co się stanie gdy instalowanie aplikacji będzie kontynuowane w tle, a użytkownik w tym czasie będzie korzystał z innej. Czy po odinstalowaniu wszystkie elementy aplikacji zostaną usunięte? 

Testy Aktualizacji są dość podobne do testów instalacji, sprawdzają zachowanie aplikacji w trakcie oraz po przeprowadzonej aktualizacji. Czy nowe funkcjonalności zostały poprawnie wdrożone, a poprzednie nadal działają? Czy użytkownik nie został wylogowany lub czy żadne dane z aplikacji nie zostały usunięte?

Testy Automatyczne na urządzenia mobilne można wykonywać za pomocą narzędzi do aplikacji natywnych (np. Express, XCtest) lub międzyplatformowych (np. Appium). W przypadku testowania mobilnego zdecydowanie przyśpieszają pracę, niestety zdarza się dość często, że brakuje na nie czasu w projekcie.

Testy Dostępności stanowią bardzo ważną grupę testów dedykowanych ludziom z różnymi oraz w różnym stopniu występującymi niepełnosprawnościami. Rozróżnia się 4 typy niepełnosprawności, które należy wziąć pod uwagę w trakcie testowania mobilnego:

  • Niewidomi/niedowidzący – biorą pod uwagę wartę wizualną  i sterowanie głosowe. Czy najważniejsze elementy dostępne są dla czytników ekranów, czy możliwe jest sterowanie głosem. Czy kontrast i rozmiar np. tekstu jest wystarczający. 
  • Niesłyszący/niedosłyszący – czy materiały wideo w aplikacji są dostępne z napisami. Czy oprócz dźwięków najważniejsze rzeczy w aplikacji są również sygnalizowane wibracjami?
  • Niepełnosprawność fizyczna – czy możliwe jest użycie i sterowanie aplikacją za pomocą głosu? Istnieje możliwość ustawienia czułości przycisków?
  • Upośledzenie funkcji poznawczych – jak czytelny i łaty w obsłudze jest interfejs dla użytkownik? Czy jest dostępny czytnik tekstu na ekranie? Czy zaimplementowane zostało autouzupełnianie tekstu? 

Testy lokalizacji są szczególnie istotne, gdy dana aplikacja występuje w różnych wersjach językowych. Testerzy sprawdzają, czy UI jest dobrze wyświetlony w przypadku innych alfabetów (np. cyrylica), jak wyświetlają się znaki specjalne, czy kontent czytany z lewej do prawej (np. dla języka arabskiego) wyświetla się poprawnie. 

Nie są to oczywiście wszystkie rodzaje testów, jakie można wykonać na urządzeniach mobilnych. Do tej grupy można dodać o wiele więcej, natomiast wszystko zależy od rodzaju i przeznaczenia danej aplikacji. 

Testowanie na fizycznych urządzeniach i testowanie na emulatorach/symulatorach

Testy urządzeń mobilnych można wykonywać na realnych urządzeniach lub można do tego wykorzystać emulatory urządzeń mobilnych. Jest to dość często dobre rozwiązanie w przypadku braku budżetu na zakup lub konserwacje fizycznych urządzeń. 

Emulator to oprogramowanie, które symuluje pracę urządzenia mobilnego i jest bardzo przydatne przede wszystkim ze względu ekonomiczność i łatwość użycia. Pozwala sprawdzić wiele konfiguracji np. rozdzielczości, czy różne parametry sprzętowe. Testowanie na emulatorach nie jest jednak w pełni równoważne testowaniu na urządzeniach fizycznych. Niestety nie wszystkie błędy tester jest w stanie na nich wyłapać w porównaniu do realnego telefonu. 

Podsumowanie

Ilość dostępnych aplikacji w sklepach Google Play czy App Store wcale nie obniża wymogów konsumentów. Ściągniecie aplikacji trwa niekiedy równie szybko, co jej usunięcie.  W pamięci zapisały się głośne wpadki m.in. mBanku, który wysyłał do swoich klientów wiadomości push „ęśąćż”, które szybko stały się genezą wielu memów. Jednak sprawa mBanku to nie tylko przykład tego, co się dzieje, gdy nierozważnie testujemy na produkcji. To też wspaniały obraz tego, jak szybko szerzy się informacja w sieci i jak bardzo przyszłość aplikacji mobilnych zależy od feedbacku użytkowników.  

Na aplikację mobilną można spojrzeć z perspektywy narzędzia skierowanego do konkretnego odbiorcy, substytutem obsługi klienta, który może (ale wcale nie musi) pozostawić konkurencję w daleko w tyle. Wszystko zależy od sprawności działania i zadowolenia użytkownika końcowego. Dlatego jakość, testy i funkcjonalność aplikacji są takie ważne. Wpadka mBanku ostatecznie przyniosła mu spory rozgłos w mediach społecznościowych i została przekuta na około 1,15 mln zł ekwiwalentu reklamowego.  Ale nie był to sukces samej aplikacji, a raczej skuteczne, podszyte dużą dawką humoru działanie antykryzysowe. Pytanie, czy wszystkie wpadki aplikacji mobilnych miałaby tyle szczęścia?