Testowanie aplikacji

Analiza porównawcza to sposób sprawdzania i monitorowania wydajności aplikacji. Możesz regularnie przeprowadzać testy porównawcze, aby analizować i debugować problemy z wydajnością oraz sprawdzać, czy w ostatnich zmianach nie wprowadzisz regresji.

Android oferuje 2 biblioteki testów porównawczych oraz metody analizy i testowania różnych rodzajów sytuacji w aplikacji: Macroporównanie i Mikroporównanie.

Makroporównawcze

Biblioteka Macrobenchmark służy do pomiaru większych interakcji użytkownika, np. uruchamiania, interakcji z interfejsem czy animacji. Biblioteka zapewnia bezpośrednią kontrolę nad testowanym środowiskiem wydajności. Pozwala kontrolować kompilację oraz uruchamiać i zatrzymywać aplikacje, aby bezpośrednio mierzyć uruchamianie lub przewijanie aplikacji.

Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki z zewnątrz aplikacji testowej utworzonej na podstawie Twoich testów. Dlatego przy tworzeniu testów porównawczych nie musisz wywoływać bezpośrednio kodu aplikacji, tylko poruszać się po niej jako użytkownik.

Mikroporównanie

Biblioteka Microporównanie umożliwia porównywanie kodu aplikacji w pętli. Służą one do pomiaru pracy procesora, która ocenia wydajność w najlepszych przypadkach – takich jak rozgrzewka w czasie (JIT) i dostęp do dysku w pamięci podręcznej – które można zobaczyć w pętli wewnętrznej lub przy użyciu konkretnej funkcji. Biblioteka może w izolacji mierzyć tylko kod, który możesz wywołać bezpośrednio.

Jeśli aplikacja musi przetworzyć złożoną strukturę danych lub mieć określony algorytm wykorzystujący moc obliczeniową, który jest wywoływany wiele razy podczas jej uruchamiania, mogą się one sprawdzać w przypadku testów porównawczych. Możesz też mierzyć części interfejsu. Możesz na przykład zmierzyć koszt powiązania elementu RecyclerView, czas potrzebny na zawyżenie układu lub stopień obciążenia klasy View z perspektywy wydajności.

Nie jesteś jednak w stanie zmierzyć, jak testy porównawcze przyczyniają się do ogólnego wrażenia użytkownika. W niektórych przypadkach analiza porównawcza nie określa, czy poprawiasz wąskie gardło, takie jak zacinanie czy czas uruchamiania aplikacji. Z tego powodu ważne jest, aby najpierw zidentyfikować te wąskie gardła przy użyciu programu profilującego Androida. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, pętla testów porównawczych może się uruchamiać wielokrotnie w szybki i łatwiejszy sposób, co pozwala Ci skupić się na jednym obszarze poprawy.

Biblioteka mikroporównawczych zawiera tylko informacje o Twojej aplikacji, a nie o całym systemie. Dlatego najlepiej jest analizować wydajność sytuacji dotyczących konkretnej aplikacji, a nie sytuacji, które mogą mieć związek z ogólnymi problemami z systemem.

Porównanie biblioteki porównawczej

Makroporównawcze Mikroporównanie
Wersja API 23 i nowsze 14 i nowsze
Funkcja Pomiar ogólnych punktów wejścia lub interakcji, takich jak uruchamianie działania czy przewijanie listy. Pomiar poszczególnych funkcji.
Zakres Poza procesem testowania pełnej aplikacji. Testowanie pracy procesora w trakcie przetwarzania.
Szybkość Średnia szybkość iteracji. Może to potrwać ponad minutę. Duża szybkość iteracji. Zwykle nie przekracza 10 sekund.
Śledzenie Wyniki zawierają ślady profilowania. Opcjonalne próbkowanie i śledzenie danych.