Testowanie aplikacji

Testy porównawcze to sposób na sprawdzenie i monitorowanie wydajności aplikacji. Możesz regularnie uruchamiać testy porównawcze, aby analizować i debugować problemy z wydajnością oraz sprawdzać, czy ostatnie zmiany nie powodują regresji.

Android udostępnia 2 biblioteki porównawcze i metody analizowania i testowania różnych rodzajów sytuacji w aplikacji: Macrobenchmark i Microbenchmark.

Macrobenchmark

Biblioteka Macrobenchmark mierzy dłuższe interakcje użytkowników, takie jak uruchamianie, interakcje z interfejsem użytkownika i animacja. Biblioteka zapewnia bezpośrednią kontrolę nad środowiskiem wydajności, które testujesz. Umożliwia sterowanie kompilacją oraz uruchamianie i zatrzymywanie aplikacji, aby bezpośrednio mierzyć rzeczywiste uruchamianie aplikacji lub przewijanie.

Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki zewnętrznie z aplikacji testowej utworzonej z użyciem Twoich testów. Dlatego podczas pisania testów porównawczych nie wywołujesz kodu aplikacji bezpośrednio, tylko poruszasz się po niej jako użytkownik.

Mikrotest porównawczy

Biblioteka Microbenchmark umożliwia przeprowadzanie testów porównawczych kodu aplikacji bezpośrednio w pętli. Jest to wskaźnik służący do pomiaru pracy procesora, który ocenia wydajność w najlepszym przypadku, np. uruchomiony na gorąco JIT (Just in Time) i dostępy do dysku w pamięci podręcznej, które możesz zaobserwować w pętli wewnętrznej lub w przypadku konkretnej funkcji często wywoływanej. Biblioteka może mierzyć tylko kod, który możesz wywołać bezpośrednio w ramach izolacji.

Jeśli aplikacja musi przetwarzać złożoną strukturę danych lub zawierać konkretny algorytm wymagający dużych zasobów obliczeniowych, który jest wywoływany wielokrotnie podczas jej działania, może to być dobry przypadek do przeprowadzenia testów porównawczych. Możesz też mierzyć elementy interfejsu. Możesz np. mierzyć koszt RecyclerView wiązania produktu, czas potrzebny na napełnienie układu lub obciążenie układu i pomiarów klasy View pod kątem wydajności.

Nie możesz jednak mierzyć, w jaki sposób porównania przyczyniają się do ogólnych wrażeń użytkowników. W niektórych przypadkach testowanie porównawcze nie informuje, czy udało Ci się poprawić wąskie gardło, np. płynność lub czas uruchamiania aplikacji. Dlatego ważne jest, aby najpierw zidentyfikować te wąskie gardła za pomocą Android Profilera. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, możesz szybko i łatwo uruchomić pętlę z benchmarkiem, aby uzyskać mniej zakłóceń w wynikach. Dzięki temu możesz skupić się na jednym obszarze ulepszeń.

Biblioteka Microbenchmark podaje 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 z benchmarkami

Macrobenchmark Mikrotest porównawczy
Wersja API 23 i nowsze 14 i nowsze
Funkcja Pomiar punktów wejścia lub interakcji na wysokim poziomie, np. uruchamiania aktywności lub przewijania listy. pomiar pojedynczych funkcji;
Zakres Testowanie pełnej aplikacji poza procesem. Testowanie w trakcie przetwarzania pracy procesora.
Szybkość Średnia szybkość iteracji. Może ona trwać dłużej niż minutę. Szybka iteracja. Często trwa mniej niż 10 sekund.
Śledzenie Wyniki są dostarczane z śladami profilowania. Opcjonalne próbkowanie i śledzenie metody.