Rozwiązywanie problemów z Laboratorium Najczęstsze pytania
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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źć tego, czego szukasz, lub potrzebujesz dodatkowej pomocy, dołącz do kanału #test-lab na Firebase Slack lub skontaktuj się z zespołem pomocy Firebase.
Rozwiązywanie problemów
Dlaczego test trwa tak długo?
Gdy wybierzesz urządzenie o wysokim poziomie pojemności w katalogu Test Lab, testy mogą rozpocząć się szybciej. Jeśli urządzenie ma małą pojemność, testy mogą potrwać dłużej. Jeśli liczba wywołanych testów jest znacznie większa niż pojemność wybranych urządzeń, testy mogą potrwać dłużej.
Testy przeprowadzane na urządzeniach o dowolnym poziomie wydajności mogą potrwać dłużej z tych powodów:
ruch, który wpływa na dostępność urządzeń 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ądzeń w Test Lab znajdziesz w informacjach o pojemności urządzeń z Androidem i iOS.
Dlaczego otrzymuję niejednoznaczne wyniki testów?
Niejednoznaczne wyniki testów są zwykle spowodowane anulowaniem testów lub błędami infrastruktury.
Błędy infrastruktury są spowodowane wewnętrznymi problemami z Test Lab, takimi jak błędy sieci lub nieoczekiwane zachowania urządzenia. Test Lab wewnętrznie wycofuje uruchomienia testów, które wielokrotnie powodują błędy infrastruktury, zanim zgłosi niejednoznaczny wynik. Możesz jednak wyłączyć te ponowne próby, używając failFast.
Aby ustalić przyczynę błędu, wykonaj te czynności:
Sprawdź, czy w panelu stanu Firebase nie ma informacji o znanych przerwach w działaniu usługi.
Ponów test w Test Lab, aby sprawdzić, czy problem jest powtarzalny.
Spróbuj przeprowadzić test na innym urządzeniu lub typie urządzenia, jeśli to możliwe.
Jeśli problem będzie się powtarzał, skontaktuj się z zespołem Test Lab na kanale #test-lab w Firebase Slack.
Dlaczego po podzieleniu na fragmenty testy trwają dłużej?
Fragmentowanie może wydłużyć czas wykonywania testów, jeśli określona liczba fragmentów przekracza liczbę urządzeń dostępnych do użycia w usłudze Test Lab. Aby uniknąć tej sytuacji, spróbuj przełączyć się na inne urządzenie. Więcej informacji o wybieraniu innego urządzenia znajdziesz w artykule
Pojemność urządzenia.
Dlaczego rozpoczęcie testu trwa tak długo?
Gdy przesyłasz żądanie testu, aplikacja jest najpierw weryfikowana, ponownie podpisywana itp. w ramach przygotowań do przeprowadzenia testów na urządzeniu. Zwykle ten proces trwa kilka sekund, ale może na niego wpływać m.in. rozmiar aplikacji.
Po przygotowaniu aplikacji wykonania testów są planowane i pozostają w kolejce, dopóki urządzenie nie będzie gotowe do ich uruchomienia. Dopóki nie zakończą się wszystkie wykonania testu, stan macierzy będzie „Oczekujący” (niezależnie od tego, czy wykonania testu są w kolejce, czy są aktywnie uruchomione).
Dlaczego test trwa tak długo?
Po zakończeniu wykonywania 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.
Rozwiązywanie problemów na Androidzie
Aplikacja nie zwraca danych i nie może znaleźć zrzutów ekranu
Artefakty wykonania testu (takie jak zrzuty ekranu i pliki dziennika) są przechowywane w Google Cloud Storage i renderowane bezpośrednio w konsoli Firebase. Jeśli wykonanie testu miało miejsce w ciągu ostatnich 90 dni, sprawdź, czy masz przypisane role na poziomie projektu (właściciel projektu, edytujący projekt lub wyświetlający projekt).
Upewnij się też, że w Twoim projekcie lub organizacji nie są włączone logi kontrolne Cloud.
Jeśli wykonanie miało miejsce ponad 90 dni temu, artefakty testu zostały najprawdopodobniej 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 zachować artefakty testowe na dłużej, uruchom polecenie gcloud firebase test android run z flagą --results-bucket i podaj nazwę zasobnika wyników. Więcej informacji znajdziesz w dokumentacji referencyjnej gcloud firebase test android run.
Dlaczego otrzymuję częściowe lub brakujące wyniki elementów testowania z instrumentacją?
Podczas przeprowadzania testów z instrumentacją mogą pojawić się błędy wskazujące na częściowe wyniki, które zawierają komunikat podobny do Test run failed to complete. Expected
x tests, received y (gdzie y jest mniejsze niż x). Ten błąd oznacza, że Test Lab nie może przeanalizować logcat pod kątem znaczników początku lub końca elementu testowania, które są zwykle generowane przez AndroidJUnitRunner.
Oto najczęstsze przyczyny tego problemu:
Opis problemu
Możliwe rozwiązanie
Element testowania nie został uruchomiony z powodu przekroczenia limitu czasu. Jeśli łączny czas trwania testów przekroczy określony przez Ciebie limit czasu lub maksymalny limit czasu, Test Lab anuluje pozostałe elementy testowania.
Zwiększ limit czasu dla macierzy, aby mieć pewność, że wszystkie testy zostaną ukończone.
Podziel testy na fragmenty, jeśli jeszcze nie zostało to zrobione, aby każdy fragment uruchamiał podzbiór testów i kończył się w krótszym czasie.
Jeśli fragmentowanie jest już włączone, zwiększ liczbę fragmentów.
Nie udało się ukończyć elementu testowania, ponieważ został przedwcześnie zamknięty lub się zawiesił.
Element testowania może zakończyć się przedwcześnie z powodu nieprzechwyconego wyjątku lub błędu asercji. Elementy testowania 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, a element testowania nie może wykonać działania w interfejsie.
Sprawdź film i logcat, aby dowiedzieć się, gdzie test został zatrzymany.
Niestandardowy moduł uruchamiający testy (w tym rozszerzający AndroidJUnitRunner) uległ nieoczekiwanej awarii lub zapisał nieoczekiwane znaczniki rozpoczęcia lub zakończenia elementu testowania w pliku logcat.
Sprawdź kod modułu uruchamiającego testy.
Do 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 usługi 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 Cloud APIs. Pamiętaj, że limit testowy korzysta ze standardowego abonamentu Firebase, a limity Cloud API – nie.
Limit testowy
Limity testowania są określane na podstawie liczby urządzeń używanych do przeprowadzania testów.
Abonament Firebase Spark ma stały limit testów, który jest bezpłatny dla użytkowników. W przypadku abonamentu Blaze limity mogą wzrosnąć, jeśli z czasem zwiększy się wykorzystanie Google Cloud. Jeśli osiągniesz limit testów, poczekaj do następnego dnia lub przejdź na abonament Blaze, jeśli obecnie korzystasz z abonamentu Spark.
Jeśli korzystasz już z abonamentu Blaze, możesz poprosić o zwiększenie limitu.
Więcej informacji znajdziesz w artykule na temat limitu testowania.
Cloud Testing API ma 2 limity: żądań dziennie na projekt i żądań na 100 sekund na projekt. Wykorzystanie możesz sprawdzać w konsoli Google Cloud.
Limit interfejsu Cloud Tool Results API
Interfejs Cloud Tool Results API ma 2 limity: zapytań dziennie na projekt i zapytań co 100 sekund na projekt. Wykorzystanie możesz sprawdzać w konsoli Google Cloud.
Prześlij prośbę o zwiększenie limitów, edytując je bezpośrednio w konsoli Google Cloud (pamiętaj, że większość limitów jest domyślnie ustawiona na maksimum).
Aby poprosić o zwiększenie limitów interfejsu API, wypełnij formularz prośby w konsoli Google Cloud 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 określić, czy ruch pochodzi z urządzeń testowych hostowanych przez Firebase, sprawdzając źródłowy adres IP pod kątem naszych zakresów adresów IP.
Czy Test Lab działa z VPC-SC?
Usługa Test Lab nie działa z VPC-SC, co blokuje kopiowanie aplikacji i innych artefaktów testowych między pamięcią wewnętrzną Test Lab a zasobnikami wyników użytkowników.
Jak wykryć testy z niepewnym wynikiem w Test Lab?
Aby wykryć niepewne wyniki 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 normalne wykonania testów.
Pamiętaj:
Po wykryciu błędu całe wykonanie testu jest uruchamiane ponownie. Nie ma możliwości ponownego uruchamiania tylko nieudanych elementów testowania.
Ponowne uruchomienia w celu usunięcia niestabilności są planowane na ten sam czas, ale nie ma gwarancji, że będą wykonywane równolegle, np. gdy ruch przekracza liczbę dostępnych urządzeń.
Najczęstsze pytania dotyczące systemu iOS
Czy Test Lab obsługuje Appium, Flutter/FlutterDriver, ReactNative/Jest lub Cucumber?
Niektóre z tych elementów są w naszych planach, ale obecnie nie możemy zagwarantować, że będziemy obsługiwać te platformy do testowania i tworzenia aplikacji.
Gdzie znajdę szczegółowe informacje o urządzeniu,
takie jak rozdzielczość?
Szczegółowe informacje o urządzeniu są dostępne przez interfejs API i można je uzyskać z klienta gcloud za pomocą polecenia describe:
gcloud firebase test ios models describe MODEL
Czy mogę używać fragmentowania w testach na iOS?
Fragmentowanie nie jest natywnie obsługiwane w Test Lab na iOS. Możesz jednak użyć klienta Flank do fragmentowania elementów testowania na iOS.
W tym celu ustaw klucz i wartości OnlyTestIdentifiers w pliku .xctestrun.
Więcej informacji znajdziesz na stronie man dotyczącej xcodebuild.xctestrun.
Dlaczego w wynikach testu na iOS brakuje filmów?
W przypadku systemu iOS 18 lub nowszego nie możemy obsługiwać filmów w wynikach.
Najczęstsze pytania dotyczące Androida
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 urządzeniach Test Lab 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. Możesz przeprowadzać testy na samodzielnych urządzeniach fizycznych.
Więcej informacji o urządzeniach Test Lab znajdziesz w artykule Testowanie na dostępnych urządzeniach.
Jak wykryć uruchomiony 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 w Firebase. W tym celu sprawdź właściwość systemową firebase.test.lab w pliku MainActivity. Następnie możesz wykonać dodatkowe instrukcje na podstawie wartości logicznej zmiennej testLabSetting. Więcej informacji znajdziesz w artykule o zmodyfikowanych zachowaniach testowych.
Czy Test Lab obsługuje Appium, Flutter/FlutterDriver, ReactNative/Jest lub Cucumber?
Niektóre z tych elementów są w naszych planach, ale obecnie nie możemy zagwarantować, że będziemy obsługiwać te platformy do testowania i tworzenia aplikacji. Jeśli jednak aplikacja została utworzona za pomocą platformy obsługującej Espresso (np. Flutter), możesz napisać test z instrumentacją za pomocą Espresso, a następnie uruchomić go w Test Lab.
Czy Test Lab obsługuje testowanie aplikacji zaciemnionych, np. za pomocą ProGuard lub R8?
Test Lab nie obsługuje bezpośrednio zaciemniania kodu ani usuwania zaciemnienia kodu. Aplikacja prawdopodobnie będzie działać, ale wszystkie zaciemnione dane aplikacji, takie jak zrzuty stosu, będą widoczne w dziennikach jako zaciemnione.
Czy podczas testowania na platformie 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, takich jak FLAT (całkowicie otwarte) lub HALF_OPENED (pomiędzy całkowicie otwartym a całkowicie zamkniętym).
Z kolei pozycje składają się z określonej orientacji urządzenia i stanu złożenia. Na przykład tryb stołu, który jest stanem HALF_OPENED w orientacji poziomej, lub tryb książki, który jest stanem HALF_OPENED w orientacji pionowej.
Czy mogę wypróbować Test Lab, jeśli nie mam aplikacji?
W odróżnieniu od innych usług Firebase nie musisz dodawać pakietu SDK Firebase, aby korzystać z usługi Test Lab. 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 AndroidX na GitHubie.
Pamiętaj, że do przeprowadzenia testu Robo potrzebujesz tylko pliku APK aplikacji, natomiast test z instrumentacją wymaga zarówno aplikacji, jak i testowego pliku APK utworzonego na podstawie kodu źródłowego. Więcej informacji znajdziesz w artykule o testach instrumentowanych.
Jakie urządzenia najlepiej nadają się do testowania różnic między zrzutami ekranu?
Testowanie różnic między zrzutami ekranu polega na porównywaniu obrazów ekranu uzyskanych podczas testu z obrazami wzorcowymi, które przedstawiają oczekiwane działanie. Takie testy mogą być bardziej zawodne na niektórych typach urządzeń. W przypadku tego rodzaju testów zalecamy kierowanie na emulatory urządzeń z procesorami Arm (*.arm). Urządzenia z emulatorem ARM używają obrazów, które są bardzo podobne lub identyczne z „ogólnymi” emulatorami Android 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 zostaną wprowadzone te zmiany:
Aktualizacje dotychczasowych obrazów
Wycofanie wcześniejszych poziomów interfejsu API
Dodano nowe poziomy interfejsu API Androida
Jak włączyć raporty o zasięgu?
Aby włączyć raporty o pokryciu, 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ółowe informacje o urządzeniu, takie jak rozdzielczość, obsługiwane interfejsy ABI itp.?
Szczegółowe informacje o urządzeniu są dostępne przez interfejs API i można je uzyskać z klienta gcloud za pomocą polecenia describe:
gcloud firebase test android models describe MODEL
Jak zalogować się w aplikacji na Wear bez telefonu?
Jeśli Twoja aplikacja obsługuje logowanie przez Google, powinno to działać automatycznie z kontem testowym. Jeśli aplikacja zwykle wymaga telefonu do logowania, możesz utworzyć wariant kompilacji, który pomija logowanie i używa tokena umieszczonego w kompilacji testowej lub odczytanego z plików na dysku, zwykle przesyłanych za pomocą --other-files option. Więcej informacji znajdziesz w artykule Niestandardowe logowanie i wprowadzanie tekstu w testach Robo.
Znane problemy
Testy CAPTCHA podczas logowania
Test Robo nie może pominąć ekranów logowania, które wymagają dodatkowego działania użytkownika poza wpisaniem danych logowania, np. wypełnienia testu CAPTCHA.
Znane problemy dotyczące iOS
Logowanie automatyczne
Automatyczne logowanie się za pomocą konta Google nie jest obsługiwane w testach Robo na iOS+ (beta).
Znane problemy występujące na Androidzie
Obsługa platformy UI
Test Robo działa najlepiej w przypadku aplikacji, które używają 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, które używają silnika gry Unity, test może zakończyć się bez przechodzenia poza pierwszy ekran.