Testowanie różnych rozmiarów ekranu i okien

Testowanie jest nieodłączną częścią procesu tworzenia aplikacji. Zwykle uruchamiasz aplikacje za pomocą emulatora lub urządzenia, aby ręcznie sprawdzić, czy kod działa zgodnie z oczekiwaniami. Testowanie ręczne jest jednak czasochłonne, podatne na błędy i często niemożliwe w przypadku aplikacji, które działają na ekranach i urządzeniach o różnej wielkości. Problemy związane z testowaniem ręcznym są najczęściej wynikiem używania jednego urządzenia do programowania. Dzięki temu błędy mogą być niezauważalne na innych urządzeniach o różnych formatach.

Aby wykryć regresje dotyczące różnych rozmiarów okien i ekranów, przeprowadź testy automatyczne, aby sprawdzić, czy działanie i wygląd aplikacji są spójne w przypadku różnych formatów. Automatyczne testy wykrywają problemy na wczesnym etapie, co minimalizuje ryzyko wystąpienia problemów wpływających na wygodę użytkowników.

Co testować

Podczas opracowywania interfejsów użytkownika przeznaczonych do różnych rozmiarów ekranu i okien zwróć szczególną uwagę na 2 aspekty:

  1. Czym różnią się atrybuty wizualne komponentów i układów w oknach o różnych rozmiarach,
  2. Jak zachowuje się stan po zmianach konfiguracji

Atrybuty wizualne

Niezależnie od tego, czy dostosowujesz interfejsy do różnych rozmiarów okien, sprawdź, czy wyświetlają się prawidłowo. Weź pod uwagę szerokość i wysokość: kompaktowe, średnie i rozciągnięte. Zalecane punkty przerwania znajdziesz w sekcji Klasy rozmiaru okna.

Rysunek 1. Ekran „Dla Ciebie” w funkcji Teraz na Androidzie w różnych rozmiarach okien

Poza tym aplikacja może nie renderować niektórych komponentów w systemie projektowania zgodnie z oczekiwaniami, gdy ich ograniczenia rozmiaru zostaną rozciągnięte.

Jeśli Twoja aplikacja ma elastyczne układy do różnych rozmiarów okien, przeprowadź automatyczne testy, aby zapobiec regresjom. Na przykład poprawienie marginesu na telefonie może spowodować niespójności układu na tablecie. Twórz testy interfejsu, aby sprawdzać działanie układów i komponentów, lub twórz zrzuty ekranu, aby wizualnie sprawdzać układy.

Przywracanie stanu

Aplikacje działające na urządzeniach takich jak tablety są obracane i zmieniane znacznie częściej niż aplikacje na telefonach. Urządzenia składane wprowadzają również nowe możliwości wyświetlania, takie jak składanie i rozkładanie, które mogą powodować zmiany konfiguracji. Aplikacja musi mieć możliwość przywrócenia stanu w przypadku wystąpienia takich zmian w konfiguracji. Musisz też napisać testy, które potwierdziły, że aplikacja prawidłowo przywraca stan.

Rysunek 2. Urządzenie składane, otwarte na płasko, otwarte na płasko i obrócone w orientację poziomą, a do połowy otwarte (na stole).

Przede wszystkim sprawdź, czy po zmianie konfiguracji aplikacja nie ulega awarii. Upewnij się, że każdy interfejs aplikacji obsługuje dowolną kombinację obracania, zmiany rozmiaru i zwijania. Ponieważ zmiany w konfiguracji domyślnie odtwarzają działanie, niektóre awarie zdarzają się z powodu założenia o trwałości działania.

Zmiany w konfiguracji można przetestować na wiele sposobów, ale w większości przypadków można to zrobić na 2 sposoby:

  • W obszarze tworzenia wiadomości użyj narzędzia StateRestorationTester, aby sprawnie przeprowadzić symulację zmiany konfiguracji bez ponownego uruchamiania aktywności. Więcej informacji znajdziesz w sekcjach poniżej.
  • W dowolnym teście interfejsu, takim jak Espresso czy Compose, symuluj zmianę konfiguracji, wywołując Activity.recreate().

Zazwyczaj nie musisz używać różnych urządzeń do testowania przywrócenia stanu w odpowiedzi na zmiany w konfiguracji. Dzieje się tak, ponieważ wszystkie zmiany w konfiguracji, które odtwarzają działanie, mają podobne konsekwencje. Niektóre zmiany w konfiguracji mogą jednak aktywować różne mechanizmy przywracania stanu na konkretnych urządzeniach.

Jeśli na przykład użytkownik przegląda interfejs ze szczegółami listy na otwartym urządzeniu składanym i złóż urządzenie, aby przełączyć się na przedni wyświetlacz, interfejs zwykle przełącza się na stronę z informacjami. Automatyczny test powinien obejmować przywracanie stanu interfejsu, w tym stanu nawigacji.

Aby przetestować zmiany w konfiguracji wprowadzane na urządzeniach,

  • Podczas testu, na dowolnym urządzeniu, zmień rozmiar ekranu. W większości przypadków uruchamia to wszystkie mechanizmy przywracania stanu, które trzeba zweryfikować. Ten test nie zadziała jednak w przypadku logiki, która wykrywa określone pozycje urządzeń składanych, ponieważ zmiany stanu nie powodują zmiany konfiguracji.
  • Za pomocą urządzenia lub emulatora obsługującego funkcje, które chcesz przetestować, wprowadź odpowiednie zmiany w konfiguracji. Na przykład tabletem lub tabletem składanym można sterować za pomocą urządzenia do espresso, dzięki czemu łatwo przejść ze składanego urządzenia do rozłożonego na płasko w orientacji poziomej. Przykłady znajdziesz w sekcji Espresso Device w artykule Biblioteki i narzędzia do testowania różnych rozmiarów ekranu.
Rysunek 3. Składanie i rozkładanie urządzenia.

Rodzaje testów na różne rozmiary ekranów i okien

Użyj odpowiedniego typu testu dla każdego przypadku użycia, aby sprawdzić, czy test działa prawidłowo w różnych formatach:

  • Testy działania interfejsu uruchamiają część interfejsu aplikacji, na przykład wyświetlanie aktywności. Testy sprawdzają, czy określone elementy istnieją lub mają określone atrybuty . Testy mogą opcjonalnie wykonywać symulowane działania użytkowników. Widoki – użyj Espresso. Jetpack Compose ma własne testowe interfejsy API. Testy działania interfejsu mogą być instrumentowane lub lokalne. Testy z instrumentacją są przeprowadzane na urządzeniach lub emulatorach, a testy lokalnego interfejsu – w środowisku Robolectric na JVM.

    Za pomocą testów interfejsu użytkownika możesz sprawdzić, czy implementacja nawigacji jest prawidłowa. Testy wykonują różne działania, takie jak kliknięcia i przesuwania palcem. Testy zachowania interfejsu sprawdzają też, czy istnieją określone elementy lub właściwości. Więcej informacji znajdziesz w artykule Automatyzacja testów interfejsu.

  • Testy zrzutu ekranu umożliwiają wykonywanie zrzutu ekranu interfejsu użytkownika lub komponentu i porównanie go z wcześniej zatwierdzonym zrzutem ekranu. To bardzo skuteczny sposób na ochronę przed regresjami, ponieważ pojedynczy zrzut ekranu może obejmować wiele elementów i ich właściwości wizualne. Testy zrzutu ekranu możesz przeprowadzać na JVM lub na urządzeniach. Dostępnych jest wiele środowiska do testowania zrzutów ekranu.

Możesz też potrzebować testów jednostkowych, aby przetestować działanie jednostek logicznych, które działają różnie w zależności od typu urządzenia lub rozmiaru okna, ale testy jednostkowe są na tym obszarze mniej popularne.

Dalsze kroki

Więcej informacji o implementowaniu kontroli zawartych w tym dokumencie znajdziesz w artykule Biblioteki i narzędzia.