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.
Macrobenchmark
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 ona kontrolowanie kompilacji oraz uruchamianie i zatrzymywanie aplikacji w celu bezpośredniego pomiaru rzeczywistego czasu uruchamiania aplikacji lub przewijania.
Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki zewnętrznie z aplikacji testowej utworzonej 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 wydajności 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 pętli wewnętrznej lub konkretnej często używanej funkcji. Biblioteka może mierzyć tylko kod, który można wywołać bezpośrednio w izolacji.
Oto dobre przypadki do przeprowadzenia testów porównawczych: gdy aplikacja musi przetwarzać złożoną strukturę danych. * Gdy aplikacja ma konkretny algorytm wymagający dużej mocy obliczeniowej, który jest wywoływany wielokrotnie podczas działania aplikacji.
Możesz też mierzyć elementy interfejsu. Możesz na przykład zmierzyć koszt RecyclerView wiązania elementów, czas potrzebny na powiększenie układu lub wydajność przejścia układu i pomiaru w klasie View.
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. w postaci utraconych klatek lub czasu uruchamiania aplikacji. 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ć uruchamiana wielokrotnie, aby uzyskać mniej zaszumione wyniki. Dzięki temu możesz skupić się na jednym obszarze, który wymaga poprawy.
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 w przypadku problemów z całym systemem.
Porównanie biblioteki testów porównawczych
| Macrobenchmark | Mikrotest | |
|---|---|---|
| Wersja interfejsu API | 23 i nowsze | 14 i nowsze |
| Funkcja | Mierz punkty wejścia lub interakcje na wysokim poziomie, takie jak uruchomienie aktywności lub przewijanie listy. | Mierzenie poszczególnych funkcji. |
| Zakres | Testowanie pełnej aplikacji poza procesem. | Testowanie w procesie pracy procesora. |
| 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 język JavaScript jest wyłączony.
- Tworzenie profili podstawowych {:#creating-profile-rules}
- Biblioteka JankStats
- Omówienie pomiarów skuteczności aplikacji