Testy wydajności aplikacji mobilnych

⚡ Inteligentne podsumowanie

Testowanie wydajności aplikacji mobilnych mierzy szybkość uruchamiania się aplikacji, zużycie baterii i pamięci, szybkość reakcji interfejsów API i płynność działania aplikacji w sieciach o niskiej niezawodności.

  • 🔘 Trzy kategorie: Wydajność urządzenia, wydajność serwera lub interfejsu API i wydajność sieci łącznie eliminują wszystkie wąskie gardła urządzeń mobilnych.
  • ️ Sygnały urządzenia: Podstawowymi kontrolami urządzenia są czas uruchamiania, poziom rozładowania baterii, zużycie pamięci, zmienność sprzętu i przywracanie danych w tle.
  • ✅ Sygnały serwera: Rozmiar ładunku, liczba wywołań API na akcję i udokumentowany plan awaryjny na wypadek przestoju serwera.
  • 🧪 Sygnały sieciowe: Jitter, utrata pakietów i zmiany prędkości muszą dawać jasny komunikat, a nie tylko nieruchomy ekran.
  • 🛠️. Obróbka: RobotiumTutaj pojawiają się MonkeyRunner i Automator, choć pierwsze dwa nie są już rozwijane.
  • 📊 Gotowość: Lista kontrolna obejmująca pamięć RAM, czas reakcji, współbieżność i odporność na awarie decyduje o tym, czy kompilacja zostanie dostarczona.

Testowanie wydajności aplikacji mobilnych na różnych warstwach urządzenia, serwera i sieci

W przypadku każdej aplikacji mobilnej wydajność ma kluczowe znaczenie. Jeśli Twoja aplikacja mobilna nie działa dobrze, użytkownik końcowy ją odinstaluje i poszuka innej, która działa lepiej.

Twoja aplikacja mobilna musi zostać dokładnie przetestowana przed udostępnieniem jej użytkownikowi końcowemu.

Strategia testowania aplikacji mobilnych

Wydajność aplikacji na telefonie komórkowym lub innym urządzeniu inteligentnym jest zazwyczaj mierzona w następujących trzech kategoriach.

  • Wydajność urządzenia
  • Wydajność serwera/interfejsu API
  • Wydajność sieci

Poniższy diagram przedstawia mapowanie tych trzech warstw na ich kontrole.

Schemat strategii testowania aplikacji mobilnych z podziałem na sprawdzanie wydajności urządzeń, serwerów i sieci

Wydajność urządzenia

Kiedy klient zauważa, że ​​aplikacja działa wolno, zaczyna się irytować.

Aby sprawdzić wydajność urządzenia, należy sprawdzić następujące elementy:

  • Uruchomienie aplikacji: Ile czasu zajmuje uruchomienie Twojej aplikacji? Jest to pierwszy parametr wydajności oceniany przez użytkownika. Z reguły po dotknięciu ikony aplikacji pierwszy ekran powinien zostać wyświetlony w ciągu 1-2 sekund.
  • Czas pracy baterii podczas korzystania z aplikacji: Przy ciągłym użytkowaniu niektóre aplikacje mobilne zużywają dużo energii baterii i nagrzewają telefon. Dzieje się tak zazwyczaj, gdy aplikacja zużywa więcej zasobów niż potrzeba, co obciąża procesor.
  • Zużycie pamięci: Kiedy Testy aplikacji, należy sprawdzić zużycie pamięci przez aplikację. Implementując pewne funkcjonalności w aplikacji, zwiększa się również zużycie pamięci. Na przykład w Android aplikacje, gdy zaimplementowano powiadomienia push, zwiększa się zużycie pamięci.

    W niektórych przypadkach zaobserwowano, że zużycie pamięci przez cały system operacyjny wynosi zaledwie 14%, ale nowa aplikacja zużywa 11%. Dlatego też przed wdrożeniem aplikacji w świecie rzeczywistym lub przekazaniem jej klientowi należy uwzględnić te czynniki.

  • Różnice w sprzęcie/oprogramowaniu: Podczas testowania aplikacji mobilnej obowiązkowe jest sprawdzenie aplikacji na różnych urządzeniach. Może się zdarzyć, że aplikacja będzie działać płynnie na jednym urządzeniu, ale nie na innym. Podobnie jak w przypadku różnych dostawców Android urządzeniach, możemy sprawdzić aplikację na telefonach Samsung, HTC i Lenovo. Podobnie aplikację należy przetestować z różnymi specyfikacjami pamięci RAM i procesorem, np. 1 GB lub 2 GB.
  • Użycie z innymi aplikacjami: Gdy testowana aplikacja działa równolegle z innymi aplikacjami, nie powinno być żadnych zakłóceń. Najlepszym sposobem, aby to sprawdzić, jest zmiana testowanej aplikacji i innych aplikacji.
  • Aplikacja w tle: Po odzyskaniu aplikacji działającej w tle powinna ona pozostać w tym samym stanie, co poprzednio. Jeśli ten scenariusz nie zostanie obsłużony prawidłowo, dane zostaną utracone. Powiązane przypadki cyklu życia opisano w testowanie przerwań.

Wydajność serwera/interfejsu API

Gdy aplikacja komunikuje się z serwerem za pośrednictwem API, czas reakcji staje się krytyczny dla wydajności. Aby sprawdzić wydajność serwera, należy sprawdzić:

  • Dane do i z serwera: Aplikacja powinna sprawnie obsługiwać dane przesyłane z serwera. Ładowanie danych nie powinno zajmować zbyt wiele czasu. W niektórych aplikacjach dane są przesyłane w określonym formacie, dlatego przed wyświetleniem w aplikacji należy je przekonwertować na odpowiedni format. W wyniku tego procesu aplikacje czasami działają wolniej, a czas reakcji wydłuża się.
  • Wywołania API generowane z aplikacji: Liczba wywołań z testowanej aplikacji do serwera wygenerowanych z aplikacji powinna być mniejsza. W niektórych przypadkach dla tej samej funkcjonalności wykonuje się wiele wywołań API. Aby uzyskać lepszą wydajność, należy to obsłużyć przy mniejszej liczbie połączeń.
  • Czas przestoju serwera: Z jakiegokolwiek powodu, jeśli serwer jest niedostępy lub nie działa, możemy zapisać dane w natywnej bazie danych. Dzięki temu, gdy serwer jest niedostępy, możemy wyświetlić dane przechowywane w natywnej bazie danych. Innym rozwiązaniem mogą być serwery bazy danych w trybie failover, tzn. jeśli jeden z serwerów jest niedostępy lub znajduje się w fazie konserwacji, serwer zapasowy powinien być dostępny do przełączenia. Serwer failover/zapasowy powinien być w ciągłej replikacji i synchronizacji z serwerem głównym.

Wydajność sieci

Należy zmierzyć wydajność aplikacji w różnych sieciach i właściwości sieci.

Aby sprawdzić wydajność sieci, należy sprawdzić następujące rzeczy.

  • Trema: Opóźnienie w odbiorze informacji w sieci nazywa się drganiami. Jest to problem związany z sieciami bezpołączeniowymi lub sieciami z przełączaniem pakietów. Ponieważ informacja jest rozdzielana w pakiety, pakiety mogą podróżować różną ścieżką od nadawcy do odbiorcy. Kiedy dane docierają do zamierzonej lokalizacji, są szyfrowane w porównaniu z tym, jakie zostały pierwotnie wysłane. W przypadku Jittersa aplikacja mobilna powinna sobie z tym poradzić.

    Musisz wyświetlić odpowiednie powiadomienia użytkownikowi końcowemu, prosząc go o ponowne wysłanie żądania lub zaczekanie na odpowiedź systemu.

  • Utrata pakietów: W przypadku całkowitej utraty pakietu aplikacja powinna być w stanie ponownie wysłać żądanie informacji lub powinna odpowiednio wygenerować alerty. Jeśli dane nie są kompletne, użytkownik nie będzie w stanie zrozumieć informacji wyświetlanych w aplikacji. Może to być dla użytkownika stresujące. Dlatego lepiej jest wyświetlić odpowiedni komunikat lub poprosić użytkownika o ponowną próbę.
  • Szybkość sieci: Aplikacja musi zostać przetestowana w różnych sieciach o zmiennej prędkości. Należy ją przetestować w sieciach 3G, 4G i 5G. Dotyczy to zarówno sieci Wi-Fi, jak i sieci komórkowych. Należy również monitorować działanie aplikacji, zwłaszcza gdy obie sieci są dostępne, a nastąpiło przełączenie między nimi.

    Na przykład, podczas przełączania sieci telefonicznej z 4G na Wi-Fi i odwrotnie, aplikacja może napotkać problem. W takim przypadku aplikacja przestaje reagować i może wymagać ponownego uruchomienia.

Rozwiązywanie problemów z wydajnością aplikacji mobilnych

Po wykryciu problemów/problemów podczas Test wydajności. Nadszedł czas traci popraw błędy.

Problem 1) Opóźnienie lub powolna reakcja aplikacji mobilnej.

Przyczyną tego opóźnienia może być pamięć RAM, pamięć podręczna itp.

Musisz zabić niepotrzebne procesy lub wyczyścić pamięć podręczną. Rozwiązywanie problemów z łącznością może rozwiązać niektóre problemy powodujące opóźnienia

Problem 2) Ponowne uruchamianie aplikacji, blokowanie się, zawieszanie się lub brak reakcji.

Można to naprawić, wykonując niektóre z poniższych czynności

  • Optymalizacja kodów aplikacji
  • Oprogramowanie należy załatać i zaktualizować.
  • Automatyczne przywracanie
  • Zarządzanie pamięcią RAM lub w niektórych przypadkach pamięcią ROM podczas korzystania z kart zewnętrznych
  • Wiping partycjonowanie pamięci podręcznej
  • Sprawdzanie, czy aplikacja działa z aplikacjami i interfejsami API innych firm
  • Mapaping aplikacja mobilna według urządzenia

Przydatne narzędzia do testowania aplikacji mobilnych

Narzędzia do testowania aplikacji mobilnych różnią się w zależności od urządzenia lub mobilnego systemu operacyjnego. Niektóre popularne narzędzia do testowania wydajności aplikacji mobilnych to

ANDROID

  • Robotium To jest po prostu jak Selenium dla aplikacji mobilnych. Tester może nagrać i odtworzyć kilka kroków wymaganych do przeprowadzenia testu.
  • Biegacz Małp MonkeyRunner może uruchamiać testy na rzeczywistych urządzeniach podłączonych do komputera PC lub emulatorów. Narzędzie posiada API, które umożliwia sterowanie smartfonem, tabletem lub emulatorem z zewnątrz Android kod.

⚠️ Uwaga dotycząca wersji: Obie Android wpisy są starsze. Robotium nie miał żadnej premiery od 2016 roku i Google oznacza MonkeyRunner jako nieobsługiwany, wskazując zespołom na UI Automator i jego przeglądarka uiautomatorviewer zamiast tego inspektor.

APPLE

  • Automat (Mac) Automator to aplikacja opracowana przez firmę Apple dla macOSImplementuje tworzenie przepływów pracy metodą „wskaż i kliknij” (lub „przeciągnij i upuść”), aby zautomatyzować powtarzające się zadania i scalić je w partie, co pozwala na szybszą modyfikację. Oszczędza to czas i wysiłek w porównaniu z ręczną interwencją człowieka w każdym pliku z osobna.

Wyzwania

Do kluczowych wyzwań stojących przed testowaniem wydajności należą:

  • Organizowanie różnych platform mobilnych i ich systemów operacyjnych
  • Symulacja łączności 3G, 4G, 5G lub Wi-Fi itp.
  • Ograniczenia urządzeń mobilnych, takie jak zużycie baterii i zasobów
  • Użyteczność telefonu komórkowego
  • Różne rozmiary urządzeń mobilnych do uruchamiania tej samej aplikacji

Skonfiguruj środowisko testowe wydajności aplikacji mobilnej

Aby skonfigurować środowisko testowe, musisz:

  • Zrozumienie aplikacji mobilnej, którą należy przetestować
  • Identyfikacja różnych systemów operacyjnych, na których aplikacja musi działać
  • Budowanie konfiguracji testowej
  • Zbuduj emulatory lub symulatory
  • Prototyping rzeczywistej konfiguracji
  • Wybór odpowiedniego narzędzia do testów

Lista kontrolna testowania wydajności aplikacji mobilnej

Testowanie wydajności aplikacji mobilnych jest ważnym krokiem przed ich wydaniem. Testowanie wydajności ma na celu sprawdzenie

  • Ile pamięci RAM jest wymagane do korzystania z tej aplikacji?
  • Aby zweryfikować szybkość i czas reakcji aplikacji w różnych sieciach i okolicznościach.
  • Zapewnij realistyczne wrażenia użytkownika w różnych warunkach sieciowych
  • Upewnij się, że wymagane wyniki zostały osiągnięte w przypadku wielu połączeń
  • Upewnij się, że aplikacja nie ulegnie awarii.
  • Zapewnienie dobrego działania aplikacji mobilnych podczas korzystania z danych, Wi-Fi lub innej łączności
  • Monitorowanie czasu pracy i wąskich gardeł w korzystaniu z mobilnego API
  • Aby zapewnić maksymalną liczbę jednoczesnych użytkowników
  • Na koniec sprawdzenie aplikacji mobilnej do granic jej możliwości

FAQ

W przypadku urządzeń ze średniej półki cenowej zazwyczaj dąży się do osiągnięcia wartości poniżej dwóch sekund, co jest zgodne z zasadą podaną powyżej. Należy mierzyć 95. percentyl, a nie średnią, ponieważ powolne urządzenia dominują w rzeczywistych skargach.

ANR to zdarzenie informujące o braku odpowiedzi aplikacji, wywoływane, gdy Android główne bloki wątków. Współczynnik bezawaryjności to odsetek sesji kończących się bez awarii. Google Play obniża priorytet aplikacji, które przekraczają opublikowane przez niego progi.

Sześćdziesiąt klatek na sekundę to poziom bazowy dla przewijania i animacji, a nowsze wyświetlacze dążą do dziewięćdziesięciu lub więcej. Utracone klatki, zwane „jank”, są postrzegane jako słaba jakość, nawet gdy nic się nie zawiesza.

Uczenie maszynowe bazuje na każdej metryce dla każdego modelu urządzenia, więc regresja jest oznaczana na podstawie podobnego sprzętu, a nie jednej globalnej wartości. Powolne klastrowanie traces, ranking wąskich gardeł, które mają największy wpływ na sesje.

Copilot sprawnie tworzy powtarzalne rusztowania, takie jak szkielet skryptu ładowania lub pętla przechwytująca próbki pamięci. Progi i wybór urządzeń odzwierciedlają Twój produkt, dlatego sprawdź każde wygenerowane potwierdzenie przed jego zatwierdzeniem.

Użyj obu. Emulatory zapewniają tanie i powtarzalne działanie sieci i API w ramach potoku. Do rozładowania baterii, ograniczania termicznego i zachowań specyficznych dla danego dostawcy wymagane są prawdziwe urządzenia, których emulatory nie są w stanie wiernie odtworzyć.

JMeter to popularny wybór open source do obsługi współbieżnych żądań w tych samych punktach końcowych, z których korzysta aplikacja. Mierzy on wydajność serwera, której narzędzia po stronie urządzenia nigdy nie widzą.

Zapisany limit czasu uruchamiania, pamięci lub rozmiaru pakietu, który kompilacja sprawdza automatycznie. Przekroczenie go powoduje niepowodzenie kompilacji, więc regresje są wykrywane w momencie scalania, a nie po wydaniu.

Podsumuj ten post następująco: