Jak zautomatyzować testowanie aplikacji mobilnych

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Automatyzacja testowania aplikacji mobilnych to sposób na skalowanie działań związanych z testami regresji. Oto kilka przykładów, które pomogą Ci rozpocząć pracę.

Przeciętny czas skupienia uwagi człowieka wynosi mniej niż 9 sekund! Czy kiedykolwiek zastanawiałeś się dlaczego? Większość aplikacji mobilnych, które pojawiły się w ostatnim czasie, wymaga przewijania kanału, przy czym mózg jest dostrojony tak, aby nie skupiać uwagi na czymś dłużej niż przez kilka sekund. Doprowadziło to do znacznego skrócenia czasu skupienia uwagi przeciętnego użytkownika.

Mnogość aplikacji mobilnych dostępnych w sklepie z aplikacjami wiąże się z dużą odpowiedzialnością za testowanie aplikacji mobilnych i skalowanie działań związanych z testami regresji. Właśnie w tym pomocne okazują się narzędzia do testowania aplikacji mobilnych. 

Byłem jednym z pierwszych użytkowników platform do testowania aplikacji mobilnych i z mojego doświadczenia wynika, że skupienie się na automatyzacji, współczynnikach kształtu oraz testach wydajności odegrało równie ważną rolę w skalowaniu i zwiększaniu wpływu w świecie urządzeń mobilnych. W tym artykule przedstawię najskuteczniejsze techniki automatyzacji testów aplikacji mobilnych.

Testowanie aplikacji mobilnych: elementy, które należy uwzględnić

Testowanie na dowolnej konkretnej platformie wiąże się z własnymi wyzwaniami, ale w przypadku urządzeń mobilnych należy uwzględnić dodatkowe parametry. Niezależnie od tego, czy przeprowadzasz testy manualne, czy automatyzujesz testy, oprócz testów funkcjonalnych przypadki testowe powinny koncentrować się na:

Łączności

Ważne jest ustalenie, co się stanie, jeśli użytkownik korzysta z urządzenia mobilnego w trybie samolotowym lub bez połączenia z internetem, co się stanie w przypadku wahań przepustowości itd., aby mieć pewność, że aplikacja działa. 

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Lokalizacji 

Szczególnie w przypadku aplikacji mobilnych zależnych od GPS lub usług opartych na lokalizacji testy należy przeprowadzać poprzez symulowanie lokalizacji za pomocą narzędzi takich jak MobileSpy, Location Spoofer itp. W przeciwnym razie trudno byłoby przeprowadzić testy — na przykład: jeśli chcesz zasymulować scenariusz testowy dla aplikacji mobilnej do współdzielenia przejazdów, w której ktoś zamawia przejazd z Nowego Jorku, a w mikrousługach zaplecza wprowadzono zmiany dotyczące wyszukiwania kierowcy w tej lokalizacji. Bez symulacji testy nie dostarczyłyby dokładnych wyników. 

Systemu operacyjnego

Zwłaszcza przy liczbie telefonów z systemem Android dostępnych obecnie na rynku testowanie wszystkich dostępnych wersji systemu operacyjnego jest niemal niemożliwe — jak zatem ustalić priorytety? W przypadku systemu iOS pojawiają się dodatkowe wyzwania związane z wersjami Xcode powiązanymi ze zmianami wersji systemu operacyjnego. 

Obecnie firmy korzystają z usług zewnętrznych dostawców, takich jak BrowserStack, którzy udostępniają symulatory/emulatory różnych systemów operacyjnych, testowanie urządzeń oraz testowanie w różnych przeglądarkach. 

Ikony interfejsu użytkownika różnią się w zależności od platform systemów operacyjnych: Windows, iOS i Android, a jeśli chodzi o automatyzację testów, większość z nas ostatecznie korzysta z symulatorów — te dla systemu Android ładują się znacznie dłużej, podczas gdy urządzenia z systemem iOS są szybsze.

Znajomość różnych kombinacji klawiszy na urządzeniach mobilnych, zależnych od typu systemu operacyjnego i służących do wykonywania zrzutów ekranu na potrzeby debugowania problemów, to kluczowa informacja dla każdego, kto testuje aplikacje mobilne. 

Współczynnika kształtu

Podczas tworzenia aplikacji mobilnych należy uwzględnić 5 głównych współczynników kształtu dla różnych wersji systemów operacyjnych, a także tryb pionowy lub poziomy dla każdego z tych typów urządzeń: 

UrządzenieRozmiar ekranu
Małe urządzenia mobilne3,5 cala lub mniej
Średnie urządzenia mobilneod 3,5 do 5 cali
Tabletyod 5 do 7 cali
Małe tabletyod 7 do 8,5 cala
Tablety pełnowymiarowe8,5 cala lub więcej

Jak wybrać odpowiednią platformę do automatyzacji urządzeń mobilnych

Uwzględnianie współczynników kształtu podczas tworzenia aplikacji mobilnych oznacza zapewnienie responsywności, gdy ta sama aplikacja jest otwierana na różnych urządzeniach mobilnych i typach systemów operacyjnych. Jeśli aplikacja ma być używana na całym świecie, a firmy chcą zwiększyć bazę użytkowników, powinny podjąć tę decyzję na wczesnym etapie procesu tworzenia i zdecydować się na użycie platform React Native zamiast natywnego tworzenia aplikacji na system Android lub iOS.

W przeciwnym razie firmy będą musiały później poświęcić czas i wysiłek na refaktoryzację oraz przeprojektowanie aplikacji w celu przejścia na platformy React Native. Ma to bezpośredni wpływ na liczbę zespołów i nakład pracy związany z utrzymaniem, ponieważ platformy React Native umożliwiają tworzenie aplikacji zarówno na system iOS, jak i Android. 

Tworzenie aplikacji mobilnych z wykorzystaniem platform React Native zmniejsza również obciążenie związane z automatyzacją testów, ponieważ wystarczy utrzymywać jedną platformę do automatyzacji testów dla systemów iOS i Android. 

Istnieją różne sposoby tworzenia aplikacji mobilnych. Niektóre firmy decydują się na korzystanie z natywnych języków programowania, takich jak Java i Objective C, odpowiednio dla aplikacji na Androida i iOS. Zaletą korzystania z języków natywnych jest możliwość zapewnienia aplikacjom bogatej funkcjonalności.

Z drugiej strony identyfikatory elementów będą różne na obu platformach — co oznacza, że będziemy potrzebować osobnych natywnych platform testowych do testowania tego samego, takich jak Espresso na Androidzie, XCUITest na iOS itd. 

React Native to kolejny powszechnie używany język programowania do tworzenia responsywnych aplikacji mobilnych, który został udostępniony jako otwarte oprogramowanie przez Facebooka. Celem było ujednolicenie prac nad aplikacjami mobilnymi na obu platformach, aby można było korzystać z jednego zespołu, a identyfikatory elementów w obu aplikacjach były takie same — dzięki czemu wystarczyłaby jedna platforma testowa, taka jak Appium, do testowania aplikacji mobilnych. 

Jeśli chodzi o automatyzację testów aplikacji mobilnych, wybór odpowiednich narzędzi do automatyzacji kontroli jakości może znacząco wpłynąć na skuteczność testowania.

Jak zautomatyzować testowanie aplikacji mobilnych na iOS 

Podczas testowania ręcznego należy spełnić szereg kryteriów: większość firm tworzących aplikacje na iOS jasno określa, które systemy operacyjne i wersje SDK są obsługiwane. Pomaga to ograniczyć zakres testów. 

Aby zwiększyć skalę testowania oprogramowania, musimy zainwestować w automatyzację. Istnieje wiele popularnych platform obsługujących automatyczne testowanie aplikacji mobilnych na iOS. Na potrzeby naszej dyskusji ograniczmy zakres do następujących 2 narzędzi do automatyzacji:

  • XCUITest
  • Appium
XCUITestAppium
Natywna platforma aplikacji, która może znajdować się w bazie kodu źródłowego systemu iOS. Odizolowana platforma testowa tworzona poza bazą kodu źródłowego. 
Napisana w języku Objective C lub SwiftNapisana w językach Java, Python itd.
Jawne oczekiwania, które stosują warunek. Niejawne oczekiwania obejmujące użycie sleep(), co sprawia, że testy są niestabilne. 
Pozorowanie odpowiedzi interfejsu API zaplecza za pomocą bibliotek otwartego oprogramowania, takich jak MockingjayObsługuje korzystanie z serwera pozorowanego. 
Ponieważ jest to natywna platforma aplikacji, można jej używać wyłącznie do testowania aplikacji na iOS. Ponieważ testy znajdują się poza bazą kodu źródłowego i można je pisać w językach takich jak Java, Python itd., można jej używać do testowania aplikacji wieloplatformowych, takich jak aplikacje na Windows, iOS i Androida, pod warunkiem że identyfikatory elementów są takie same na obu platformach. 

Wykorzystałem serwery pozorowane, aby zasymulować wywołania zaplecza i przetestować wyłącznie interfejs użytkownika, tworząc klasę bazową w następujący sposób: 

zrzut ekranu testu klasy bazowej

Gdy klasa bazowa jest już gotowa, dodaję właściwy test, wykorzystując wzorzec projektowy obiektu strony, jak pokazano poniżej: 

zrzut ekranu testu strony głównej opieki

Jak zautomatyzować testowanie aplikacji mobilnych na Androida

Na świecie jest ponad 2 miliardy aktywnych urządzeń z systemem Android. Testowanie aplikacji na Androida na różnych typach urządzeń i systemów operacyjnych jest niemal niemożliwe! Dlatego firmy wyraźnie określają obsługiwane wersje. Zapewnia to również lepsze doświadczenia użytkowników.

Platformy do automatyzacji systemu Android zdecydowanie pomogą przyspieszyć procesy testowania, takie jak Robotium, Selendroid itd., a na potrzeby naszej dyskusji ograniczmy się do narzędzi do automatyzacji: Espresso i Appium:

EspressoAppium
Natywna platforma, która może znajdować się w bazie kodu źródłowego Androida. Odizolowana platforma testowa tworzona poza bazą kodu źródłowego. 
Napisana w językach Java i KotlinNapisana w językach Java, Python itp.
Jawne oczekiwania, operacje asynchroniczne obsługiwane dzięki funkcji zasobów bezczynnościNiejawne oczekiwania wymagające użycia sleep(), co sprawia, że testy są niestabilne. 
Zastępowanie odpowiedzi backendu za pomocą bibliotek o otwartym kodzie źródłowym, takich jak Mockito, oraz kreatora RetrofitObsługuje użycie serwera pozorowanego.
Ponieważ jest to natywna platforma, można jej używać wyłącznie do testowania aplikacji na Androida. Ponieważ testy znajdują się poza bazą kodu źródłowego i mogą być napisane w językach takich jak Java, Python itp., można jej używać do testowania aplikacji wieloplatformowych zarówno na iOS, jak i na Androidzie, o ile identyfikatory elementów są takie same na obu platformach. 

Jedną z zalet korzystania z natywnych platform aplikacji jest możliwość używania serwerów pozorowanych do symulowania wywołań API backendu, a tym samym testowania wyłącznie interfejsu użytkownika. Oto przykładowy fragment kodu pokazujący, jak udało mi się to osiągnąć:

zrzut ekranu kodu serwera pozorowanego

W zależności od sposobu opracowania architektury mikrousług odpowiedź można pobrać z karty sieciowej przeglądarki lub bezpośrednio od deweloperów, a następnie odwołać się do niej w teście w następujący sposób:

zrzut ekranu testu strony głównej

Jak widać na powyższym przykładzie, HomeTabPage jest wywoływana w teście, zamiast konieczności jawnego sprawdzania każdego elementu — w platformie wykorzystałem wzorzec obiektu strony w następujący sposób:

zrzut ekranu testu strony głównej

More Articles

Narzędzia do testowania aplikacji mobilnych

Na rynku dostępne są różne narzędzia do testowania, a ich wybór zależy od wielu czynników: 

  • Kompetencje zespołu
  • Cel automatyzacji
  • Odbiorcy automatyzacji: menedżerowie produktu/sprzedaż/inżynierowie/testerzy
  • Zgodność platformy testowej z natywnym kodem źródłowym
  • Liczba aplikacji hybrydowych

Popularne narzędzia używane w branży to między innymi:

  • Selendroid
  • Robotium
  • Appium
  • Testdroid
  • UiAutomator

i wiele innych. 

Nie masz ochoty przeprowadzać testów we własnym zakresie? Możesz również skorzystać z usług testowania aplikacji mobilnych, aby ktoś zrobił to za Ciebie.

Testowanie wydajności aplikacji mobilnych

Podczas testowania aplikacji mobilnych, oprócz skupiania się na automatyzacji w celu zwiększenia skali testów, powinniśmy również nadać priorytet testom wydajności, ponieważ odgrywają one kluczową rolę w określeniu, czy użytkownik będzie nadal korzystać z naszej aplikacji.

Jeśli ekran ładuje się dłużej niż 2 sekundy, ludzie stają się niecierpliwi — co wiąże się z naszymi badaniami nad czasem skupienia uwagi, dlatego aby utrzymać użytkowników, musimy inwestować w testy wydajności. 

Podczas testowania wydajności aplikacji musimy zidentyfikować wskaźniki KPI i porównać z nimi wyniki: 

  • Maksymalny czas odpowiedzi
  • Średni czas odpowiedzi
  • Średnia przepustowość
  • Szczytowa liczba aktywnych użytkowników dla każdego systemu operacyjnego i urządzenia

Korzystanie z narzędzia do testowania aplikacji mobilnych może uprościć testowanie wydajności. Na przykład Apptim może śledzić wskaźniki wydajności z perspektywy użytkownika końcowego — dostarcza kompleksowe raporty wydajności dla wszystkich kluczowych parametrów wydajności.

Do monitorowania wydajności aplikacji mobilnej możemy użyć monitorowania wydajności Firebase, które zapewnia kontrolę nad danymi dotyczącymi wydajności, udostępniając informacje o działaniu aplikacji wraz z podziałem danych dotyczących śledzenia i sieci na wymiary, takie jak wersja aplikacji, kraj, urządzenie i typ sieci. 

Istnieją również inne narzędzia, takie jak Appium Studio, Sauce Labs, Testdroid itp., które oferują podobne możliwości monitorowania wydajności. 

Mam nadzieję, że ten artykuł wprowadził Cię w temat testowania aplikacji mobilnych oraz kluczowych czynników z nim związanych! 

Aby poznać więcej najlepszych praktyk i wskazówek dotyczących kształtowania procesu programistycznego, zasubskrybuj newsletter The QA Lead.

Powiązana lektura:

Sprawdź również:

Powiązana lista narzędzi:

Niranjani Manoharan
An accomplished software engineering leader in building tools, test infrastructure and improving quality and developer productivity for industry pioneers like Lyft, Pinterest, eBay, Twitter and now at Hippo Insurance.

You may also like