Pojęcia i implementacja w Jetpack Compose
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 makro
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 przykłady, w których warto przeprowadzić testy porównawcze:
- Gdy aplikacja musi przetworzyć 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 RecyclerViewwią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 mierzyć, 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, takie jak utracone klatki lub czas uruchamiania aplikacji. Z tego powodu ważne jest, aby najpierw zidentyfikować te wąskie gardła za pomocą profilera Androida. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, pętla testu porównawczego 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
| Test makro | Mikrotest | |
|---|---|---|
| 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 w osobnym procesie. | 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 systemowe. | Wyniki domyślnie zawierają minimalny ślad systemowy i ślad metody. |
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