Testowanie porównawcze to sposób na sprawdzanie i monitorowanie skuteczności aplikacji. Możesz regularnie przeprowadzać testy porównawcze, aby analizować i debugować problemy z wydajnością oraz zapobiegać regresji w przypadku niedawnych zmian.
Android oferuje 2 biblioteki testów porównawczych i podejścia do analizowania i testowania 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 testowania wydajności. Umożliwia kontrolowanie kompilacji oraz uruchamianie i zatrzymywanie aplikacji, aby bezpośrednio mierzyć rzeczywiste uruchamianie aplikacji lub przewijanie.
Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki z zewnątrz, 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.
Microbenchmark
Biblioteka Microbenchmark umożliwia testowanie porównawcze kodu aplikacji bezpośrednio w pętli. Jest ona przeznaczona do pomiaru pracy procesora, która ocenia wydajność w najlepszym przypadku – np. rozgrzane kompilowanie Just in Time (JIT) i dostęp do dysku w 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 testowania porównawczego: * 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ć części interfejsu. Możesz na przykład zmierzyć koszt powiązania elementu RecyclerView, czas potrzebny na rozszerzenie układu lub wydajność przejścia układu i pomiaru klasy View.
Nie możesz jednak zmierzyć, jak testowane przypadki wpływają na ogólne wrażenia użytkownika. W niektórych przypadkach testowanie porównawcze nie informuje, czy poprawiasz wąskie gardło, takie jak pominięte klatki lub czas uruchamiania aplikacji. Z tego powodu ważne jest, aby najpierw zidentyfikować te wąskie gardła za pomocą Android Profiler. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, testowana pętla może być uruchamiana wielokrotnie, aby uzyskać mniej zaszumione wyniki. Dzięki temu możesz skupić się na jednym obszarze, który chcesz ulepszyć.
Biblioteka Microbenchmark raportuje tylko informacje o aplikacji, a nie o całym systemie. Dlatego najlepiej sprawdza się w analizowaniu wydajności w sytuacjach specyficznych dla aplikacji, a nie w sytuacjach, które mogą być związane z ogólnymi problemami z systemem.
Porównanie bibliotek testów porównawczych
| Macrobenchmark | Microbenchmark | |
|---|---|---|
| Funkcja | Pomiar punktów wejścia lub interakcji wysokiego poziomu, takich jak uruchamianie aktywności lub przewijanie listy. | Pomiar poszczególnych funkcji. |
| Zakres | Test całej aplikacji poza procesem. | Test pracy procesora w procesie. |
| Szybkość | Średnia szybkość iteracji. Może przekroczyć minutę. | Duża szybkość iteracji. Często mniej niż 10 sekund. |
| Śledzenie | Wyniki zawierają ślady systemowe. | Domyślnie wyniki 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 bazowych {:#creating-profile-rules}
- Biblioteka JankStats
- Omówienie pomiaru wydajności aplikacji