Rozwiązywanie problemów z Laboratorium Najczęstsze pytania
Na tej stronie znajdziesz pomoc w rozwiązywaniu problemów i odpowiedzi na najczęstsze pytania dotyczące przeprowadzania testów za pomocą Firebase Test Lab. Znane problemy są również udokumentowane. Jeśli nie możesz znaleźć potrzebnych informacji lub potrzebujesz dodatkowej pomocy, dołącz do kanału #test-lab na Slacku Firebase lub skontaktuj się z zespołem pomocy Firebase.
Rozwiązywanie problemów
Dlaczego test trwa tak długo?
Jeśli w katalogu Test Labwybierzesz urządzenie o wysokim poziomie pojemności, testy mogą się rozpocząć szybciej. Gdy urządzenie ma małą pojemność, testy mogą trwać dłużej. Jeśli liczba wywołanych testów jest znacznie większa niż możliwości wybranych urządzeń, testy mogą trwać dłużej.
Testy przeprowadzane na urządzeniach o dowolnym poziomie wydajności mogą trwać dłużej z powodu tych czynników:
Ruch, który wpływa na dostępność urządzenia i szybkość testu.
awarie urządzeń lub infrastruktury, które mogą wystąpić w dowolnym momencie; Aby sprawdzić, czy zgłoszono problemy z infrastrukturą Test Lab, otwórz panel stanu Firebase.
Więcej informacji o pojemności urządzenia w Test Lab znajdziesz w artykule o pojemności urządzenia na Androida i iOS.
Dlaczego otrzymuję niejednoznaczne wyniki testów?
Niejednoznaczne wyniki testów występują zwykle z powodu anulowanych uruchomień testów lub błędów infrastruktury.
Błędy infrastruktury są spowodowane wewnętrznymi problemami z Test Lab, takimi jak błędy sieci lub nieoczekiwane zachowania urządzeń. Test Lab wewnętrznie wycofuje przebiegi testów
wielokrotnie powodujące błędy infrastruktury przed zgłoszeniem
niejednoznacznego wyniku. Możesz jednak wyłączyć te ponowienia za pomocą
failFast.
Aby ustalić przyczynę błędu, wykonaj te czynności:
Sprawdź, czy nie występują znane przerwy w działaniu usługi w panelu stanu Firebase.
Powtórz test w Test Lab, aby sprawdzić, czy można go odtworzyć.
W razie potrzeby spróbuj przeprowadzić test na innym urządzeniu lub innym typie urządzenia.
Jeśli problem będzie się powtarzał, skontaktuj się z zespołem Test Lab na kanale#test-lab na Slacku Firebase.
Dlaczego dzielenie na partycje wydłużyło czas działania moich testów?
Fragmentacja może wydłużyć czas trwania testów, jeśli liczba fragmentów, którą podasz, przekroczy liczbę urządzeń dostępnych do użycia w Test Lab. Aby uniknąć tej sytuacji, spróbuj użyć innego urządzenia. Więcej informacji o wybieraniu innego urządzenia znajdziesz w sekcji
Pojemność urządzenia.
Dlaczego rozpoczęcie testu trwa tak długo?
Gdy przesyłasz prośbę o test, aplikacja jest najpierw weryfikowana, ponownie podpisywana itp. w ramach przygotowań do przeprowadzenia testów na urządzeniu. Zwykle trwa to mniej niż kilka sekund, ale może zależeć od takich czynników jak rozmiar aplikacji.
Gdy aplikacja będzie gotowa, zaplanowane zostaną wykonania testów, które pozostaną w kolejce, dopóki urządzenie nie będzie gotowe do ich uruchomienia. Dopóki wszystkie wykonania testu nie zostaną ukończone, stan macierzy będzie „Oczekujący” (niezależnie od tego, czy wykonania testu są w kolejce, czy aktywnie działają).
Dlaczego test trwa tak długo?
Po zakończeniu wykonania testu artefakty testowe są pobierane z urządzenia, przetwarzane i przesyłane do Cloud Storage. Czas trwania tego kroku może zależeć od liczby i rozmiaru artefaktów.
Aplikacja nie zwraca danych i nie można znaleźć zrzutów ekranu
Artefakty wykonania testu (takie jak zrzuty ekranu i pliki dziennika) są przechowywane w Google Cloud Storage i bezpośrednio renderowane w konsoli Firebase. Jeśli test został przeprowadzony w ciągu ostatnich 90 dni, sprawdź, czy masz przypisane role na poziomie projektu (właściciel projektu, edytujący projekt lub przeglądający projekt).
Sprawdź też, czy w projekcie lub organizacji nie jest włączona usługa Cloud Audit Logging.
Jeśli wykonanie miało miejsce ponad 90 dni temu, artefakty testowe zostały prawdopodobnie automatycznie usunięte. Konfigurację zasobnika wyników możesz sprawdzić, klikając kartę Wyniki testu w panelu Test Lab. Domyślny zasobnik wyników jest skonfigurowany tak, aby przechowywać obiekty przez 90 dni.
Aby dłużej przechowywać artefakty testowe, uruchom polecenie
gcloud firebase test android run z flagą --results-bucket i podaj
nazwę zasobnika wyników. Więcej informacji znajdziesz w gcloud firebase test android rundokumentacji.
Dlaczego otrzymuję częściowe lub brakujące wyniki testów instrumentacji?
Podczas przeprowadzania testów instrumentacji mogą pojawiać się błędy wskazujące częściowe wyniki, które zawierają komunikaty takie jak Test run failed to complete. Expected
x tests, received y (gdzie y jest mniejsze niż x). Ten błąd oznacza, że Test Lab nie udało się przeanalizować logcat pod kątem znaczników początku lub końca przypadków testowych, które są zwykle generowane przez AndroidJUnitRunner.
Oto najczęstsze przyczyny tego problemu:
Opis problemu
Możliwe rozwiązanie
Przypadek testowy nie został uruchomiony z powodu przekroczenia limitu czasu. Jeśli łączny czas trwania testów jest dłuższy niż określony przez Ciebie czas oczekiwania lub dłuższy niż maksymalny czas oczekiwania, Test Lab anuluje pozostałe przypadki testowe.
Zwiększ limit czasu dla macierzy, aby mieć pewność, że wszystkie testy zostaną ukończone.
Podziel testy na części, jeśli nie zostało to jeszcze zrobione, tak aby każda część uruchamiała podzbiór testów i kończyła się w krótszym czasie.
Jeśli fragmentacja jest już włączona, zwiększ liczbę fragmentów.
Nie udało się przeprowadzić testu, ponieważ został on przedwcześnie zakończony lub zawieszony.
Przypadek testowy może zostać zakończony przedwcześnie z powodu nieobsłużonego wyjątku lub błędu asercji. Przypadki testowe mogą utknąć w nieskończonej pętli lub nie być w stanie kontynuować działania, np. jeśli aplikacja nie wyświetla prawidłowego widoku i przypadek testowy nie może wykonać działania w interfejsie.
Sprawdź film i logcat, aby dowiedzieć się, w którym momencie test się zatrzymał.
Niestandardowy mechanizm uruchamiania testów (w tym rozszerzenie AndroidJUnitRunner) uległ nieoczekiwanemu awarii lub zapisał w logcat nieoczekiwane znaczniki początku lub końca przypadku testowego.
Sprawdź kod narzędzia do uruchamiania testów.
W logcat zapisano zbyt wiele logów, co spowodowało przepełnienie bufora lub awarię procesu logcat.
Zmniejsz liczbę zapisów do logcat.
Testowana aplikacja uległa awarii.
Debuguj aplikację.
Najczęstsze pytania
Jakie są bezpłatne limity dla Test Lab? Co zrobić, jeśli mi się skończą?
Firebase Test Lab oferuje bezpłatne limity na testowanie na urządzeniach i korzystanie z interfejsów Cloud API. Pamiętaj, że limit testowy jest zgodny ze standardowym planem cenowym Firebase, a limity interfejsu Cloud API nie.
Limit testowania
Limity testów są określane na podstawie liczby urządzeń używanych do przeprowadzania testów.
Abonament Firebase Spark ma stały limit testowania, który jest bezpłatny dla użytkowników. W przypadku abonamentu Blaze limity mogą się zwiększać, jeśli z czasem wzrośnie wykorzystanie Google Cloud. Jeśli osiągniesz limit testowania, poczekaj do następnego dnia lub przejdź na abonament Blaze, jeśli korzystasz obecnie z abonamentu Spark.
Jeśli korzystasz już z abonamentu Blaze, możesz poprosić o zwiększenie limitu.
Więcej informacji znajdziesz w sekcji Limit testowy.
Interfejs Cloud Testing API ma 2 limity: żądania dziennie na projekt i żądania co 100 sekund na projekt. Możesz monitorować wykorzystanie w Google Cloudkonsoli.
Limit interfejsu Cloud Tool Results API
Interfejs Cloud Tool Results API ma 2 limity: zapytania dziennie na projekt i zapytania co 100 sekund na projekt. Możesz monitorować wykorzystanie w Google Cloudkonsoli.
Prześlij prośbę o zwiększenie limitów, edytując limity bezpośrednio w Google Cloud konsoli (pamiętaj, że większość limitów jest domyślnie ustawiona na maksymalną wartość) lub
Aby poprosić o zwiększenie przydziału danych w interfejsie API, wypełnij formularz w Google Cloudkonsoli lub skontaktuj się z zespołem pomocy Firebase.
Jak sprawdzić, czy ruch docierający do mojego backendu pochodzi z Test Lab?
W backendzie możesz sprawdzić, czy ruch pochodzi z urządzeń testowych hostowanych przez Firebase, porównując źródłowy adres IP z naszymi zakresami adresów IP.
Czy Test Lab działa z VPC-SC?
Test Lab nie działa z VPC-SC, która blokuje kopiowanie aplikacji i innych artefaktów testowych między wewnętrzną pamięcią Test Lab a zasobnikami wyników użytkowników.
Jak wykrywać niestabilne testy w Test Lab?
Aby wykryć niestabilne zachowanie w testach, zalecamy użycie opcji
--num-flaky-test-attempts
. Ponowne uruchomienia testów w celu wyeliminowania niestabilności są rozliczane lub wliczane do dziennego limitu tak samo jak zwykłe wykonania testów.
Pamiętaj:
Po wykryciu błędu całe wykonanie testu jest uruchamiane ponownie. Nie ma możliwości ponawiania tylko testów zakończonych niepowodzeniem.
Ponowne uruchomienia w celu wyeliminowania niestabilności są zaplanowane na tę samą godzinę, ale nie ma gwarancji, że będą wykonywane równolegle, np. gdy ruch przekracza liczbę dostępnych urządzeń.
Czy Test Lab obsługuje urządzenia
do noszenia?
Tak. Test Lab obsługuje zegarek Google Pixel Watch. Teraz możesz przeprowadzać testy samodzielnej aplikacji na Wear na zegarkach Google Pixel Watch. Więcej informacji o Test Laburządzeniach znajdziesz w artykule Testowanie na dostępnych urządzeniach.
Czy Test Lab obsługuje najnowsze urządzenia Google?
Tak. Test Lab obsługuje urządzenia Google Pixel Tablet i Google Pixel Fold. Testy możesz przeprowadzać na samodzielnych urządzeniach fizycznych.
Więcej informacji o Test Laburządzeniach znajdziesz w artykule Testowanie na dostępnych urządzeniach.
Jak wykryć trwający test w Test Lab?
Jeśli testujesz aplikację w Firebase lub przeprowadzasz testy na potrzeby raportu przed opublikowaniem w Konsoli Play, możesz sprawdzić, czy test jest przeprowadzany na urządzeniu hostowanym przez Firebase. W tym celu poszukaj właściwości systemu firebase.test.lab w pliku MainActivity. Następnie możesz wykonać dodatkowe instrukcje na podstawie wartości logicznej testLabSetting. Więcej informacji znajdziesz w artykule Zmodyfikowane zachowania testów.
Czy Test Lab
obsługuje Appium, Flutter/FlutterDriver, ReactNative/Jest lub Cucumber?
Niektóre z tych elementów są uwzględnione w naszym planie rozwoju, ale obecnie nie możemy zagwarantować obsługi tych platform testowych i do tworzenia aplikacji. Jeśli jednak aplikacja została utworzona za pomocą platformy obsługującej Espresso (np. Flutter), możesz napisać test instrumentacji za pomocą Espresso, a następnie uruchomić go w Test Lab.
Czy Test Lab
obsługuje testowanie zaciemnionych aplikacji, np. za pomocą ProGuard lub R8?
Test Lab nie obsługuje bezpośrednio zaciemniania ani odszyfrowywania. Aplikacja prawdopodobnie będzie działać, ale wszystkie zaciemnione dane aplikacji, takie jak ślady stosu, będą w dziennikach zaciemnione.
Czy podczas testowania na Test Lab mogę używać urządzenia składanego w różnych stanach i pozycjach?
Urządzenia składane mogą być w różnych stanach złożenia, np. FLAT (całkowicie otwarte) lub HALF_OPENED (między całkowicie otwartym a całkowicie zamkniętym).
Pozycje to z kolei określona orientacja urządzenia i stan urządzenia składanego. Na przykład pozycja stołu, czyli HALF_OPENED w orientacji poziomej, lub pozycja książki, czyli HALF_OPENED w orientacji pionowej.
Czy mogę wypróbować Test Lab, jeśli nie mam aplikacji?
W przeciwieństwie do innych usług Firebase, aby korzystać z Test Lab, nie musisz dodawać pakietu SDK Firebase. Jeśli nie masz jeszcze aplikacji, możesz pobrać plik APK online lub utworzyć aplikację i testowy plik APK na podstawie jednego z przykładów w repozytorium GitHub AndroidX.
Pamiętaj, że do uruchomienia testu Robo potrzebujesz tylko pliku APK aplikacji, a test instrumentacyjny wymaga zarówno aplikacji, jak i pliku APK testu, które są tworzone na podstawie kodu źródłowego. Więcej informacji znajdziesz w artykule Testy z użyciem instrumentacji.
Jakie urządzenia są najlepsze do testowania różnic w zrzutach ekranu?
Testowanie różnic w zrzutach ekranu polega na tym, że asercje testowe są oparte na porównaniu obrazów ekranu uzyskanych podczas przeprowadzania testu z obrazami wzorcowymi reprezentującymi oczekiwane zachowanie. Na niektórych typach urządzeń takie testy mogą być bardziej podatne na błędy niż na innych. W przypadku tego rodzaju testów zalecamy kierowanie reklam na urządzenia z emulatorem Arm (*.arm). Emulatory urządzeń z architekturą ARM korzystają z obrazów, które są bardzo podobne lub identyczne z „ogólnymi” emulatorami Androida Studio.
Zalecamy też zapoznanie się z bibliotekami testowymi, które mogą pomóc w zwiększeniu niezawodności testów zrzutów ekranu w przypadku oczekiwanych zmian.
Czy Test Lab aktualizuje urządzenia wirtualne?
Tak. Urządzenia wirtualne są aktualizowane, gdy wprowadzane są te zmiany:
Aktualizacje dotychczasowych obrazów
Wycofanie wcześniejszych poziomów interfejsu API
Dodawane są nowe poziomy interfejsu API Androida
Jak włączyć raporty o zasięgu?
Aby włączyć raporty o zasięgu, dodaj coverage=true do pola environmentVariables.
Jeśli używasz Android Test Orchestrator, musisz podać katalog, w którym będą przechowywane wyniki pokrycia:
Gdzie znajdę szczegóły urządzenia, takie jak rozdzielczość, obsługiwane interfejsy ABI itp.?
Szczegółowe informacje o urządzeniu są dostępne w interfejsie API i można uzyskać do nich dostęp z klienta gcloud za pomocą polecenia describe:
gcloud firebase test android models describe MODEL
Znane problemy
Zabezpieczenia captcha podczas logowania
Test Robo nie może pominąć ekranów logowania, które wymagają dodatkowych działań użytkownika poza wpisaniem danych logowania, np. wypełnienia testu CAPTCHA.
Obsługa platformy interfejsu
Testy Robo najlepiej sprawdzają się w przypadku aplikacji, które korzystają z elementów interfejsu z platformy interfejsu Androida (w tym obiektów View, ViewGroup i WebView). Jeśli używasz testu Robo do testowania aplikacji, które korzystają z innych platform interfejsu, w tym aplikacji korzystających z silnika gier Unity, test może zakończyć się bez eksplorowania kolejnych ekranów.