Testy porównawcze to sposób na sprawdzanie i monitorowanie wydajności aplikacji. Możesz regularnie przeprowadzać testy porównawcze, aby analizować i debugować problemy z wydajnością oraz mieć pewność, że ostatnie zmiany nie spowodują regresji.
Android udostępnia 2 biblioteki i podejścia do testów porównawczych, które umożliwiają analizowanie i testowanie różnych sytuacji w aplikacji: Macrobenchmark i Microbenchmark.
Test porównawczy
Biblioteka Macrobenchmark mierzy większe interakcje użytkowników, takie jak uruchamianie aplikacji, interakcje z interfejsem i animacje. Biblioteka zapewnia bezpośrednią kontrolę nad środowiskiem wydajności, które testujesz. Umożliwia sterowanie kompilacją oraz uruchamianie i zatrzymywanie aplikacji w celu bezpośredniego pomiaru rzeczywistego uruchamiania lub przewijania.
Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki z zewnątrz aplikacji testowej, która jest tworzona na podstawie Twoich testów. Dlatego podczas pisania testów porównawczych nie wywołujesz bezpośrednio kodu aplikacji, ale poruszasz się po niej jak użytkownik.
Mikrotest
Biblioteka Microbenchmark umożliwia testowanie porównawcze kodu aplikacji bezpośrednio w pętli. Ten test służy do pomiaru pracy procesora, która ocenia wydajność w najlepszym przypadku, np. w przypadku rozgrzanego kompilatora JIT (Just in Time) i dostępu do dysku z pamięci podręcznej, co można zaobserwować w przypadku wewnętrznej pętli lub konkretnej często używanej funkcji. Biblioteka może mierzyć tylko kod, który można wywołać bezpośrednio w izolacji.
Jeśli aplikacja musi przetwarzać złożoną strukturę danych lub zawierać specyficzny algorytm wymagający dużej mocy obliczeniowej, który jest wywoływany wielokrotnie podczas działania aplikacji, warto przeprowadzić testy porównawcze. Możesz też mierzyć elementy interfejsu. Możesz na przykład zmierzyć koszt wiązania elementu RecyclerView
, czas potrzebny na powiększenie układu lub wymagania dotyczące układu i pomiaru w przypadku klasy View
z perspektywy wydajności.
Nie możesz jednak zmierzyć, w jaki sposób przypadki porównawcze wpływają na ogólne wrażenia użytkowników. W niektórych przypadkach testy porównawcze nie informują, czy udało Ci się wyeliminować wąskie gardło, np. zacinanie się aplikacji lub czas jej uruchamiania. Dlatego najpierw musisz zidentyfikować te wąskie gardła za pomocą profilera Androida. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, pętla testowa może być wielokrotnie uruchamiana w szybki i łatwy sposób, aby uzyskać mniej zaszumione wyniki, co pozwoli Ci skupić się na jednym obszarze ulepszeń.
Biblioteka mikropomiarów zgłasza tylko informacje o aplikacji, a nie o całym systemie. Dlatego najlepiej sprawdza się w analizowaniu skuteczności w sytuacjach związanych z aplikacją, a nie z ogólnymi problemami z systemem.
Porównanie biblioteki wartości referencyjnych
Test porównawczy | Mikrotest | |
---|---|---|
Wersja API | 23 i nowsze | 14 i nowsze |
Funkcja | Mierz punkty wejścia lub interakcje wysokiego poziomu, takie jak uruchomienie aktywności lub przewijanie listy. | Mierzenie poszczególnych funkcji. |
Zakres | Testowanie pełnej aplikacji poza procesem. | Testowanie pracy procesora w procesie. |
Szybkość | Średnia szybkość iteracji. Może trwać dłużej niż minutę. | Szybkie iteracje. Zwykle trwa to mniej niż 10 sekund. |
Śledzenie | Wyniki zawierają ślady profilowania. | Opcjonalne próbkowanie metod i śledzenie. |
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony.
- Tworzenie profili podstawowych {:#creating-profile-rules}
- Biblioteka JankStats
- Omówienie pomiarów skuteczności aplikacji