Z tego przewodnika dowiesz się, jak przygotować i przeprowadzić test instrumentacji za pomocą Firebase Test Lab. Aby skorzystać z tego przewodnika, musisz mieć test instrumentacji (napisanych przez Ciebie lub Twój zespół), która wykorzystuje Espresso lub UI Automator Platformy do testowania Androida. Testy instrumentacji mogą przeprowadzać maksymalnie 45 60 minut na urządzeniach fizycznych i do 60 minut na urządzeniach wirtualnych.
Później musisz przesłać plik APK aplikacji i pliku APK z testu do Firebase.
(Opcjonalnie) Dodawanie biblioteki zrzutów ekranu do aplikacji
Firebase Test Lab zawiera bibliotekę (testlab-instr-lib),
aby przetworzyć zrzuty ekranu zrobione na AndroidzieX.
Zrzut ekranu
podczas wykonywania testów z instrumentacją, takich jak testy napisane przy użyciu
Platforma testowa Espresso.
W tej sekcji dowiesz się, jak tworzyć obiekty ScreenCapture
za pomocą AndroidaX.
i sposobach ich przetwarzania przy użyciu testlab-instr-lib.
Po zakończeniu testu instrumentacji możesz wyświetlić zrzuty ekranu w konsoli Firebase.
Wypróbuj przykładową aplikację
Pobierz przykładową aplikację NotePad. aby wypróbować tę funkcję. Możliwość robienia zrzutów ekranu jest już dostępna włączone do projektu NotePad.
Krok 1. Dodawanie biblioteki zrzutów ekranu do projektu
w pliku Gradle w ustawieniach na poziomie głównym projektu testowego; (
settings.gradle.kts
lubsettings.gradle
), dodaj repozytorium Google Maven do każdej sekcjirepositories
:pluginManagement { repositories { // Add the following line: google() // Google's Maven repository mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { // Add the following line: google() // Google's Maven repository mavenCentral() } } // ...
W pliku Gradle modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
) dodaj zależność z biblioteką Test Lab do tworzenia zrzutów ekranu.dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2") // ...
W pliku
AndroidManifest.xml
testu zarejestrujFirebaseScreenCaptureProcessor
w tagu metadanych w tagu<instrumentation>
. Możesz też określić procesor jako w AndroidJUnitRunner (zobacz Dokumentacja AndroidJUnitRunner ).<instrumentation // Check that you have the following line (if not, add it): android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner android:targetPackage="com.your.package.name"> // Add the following: <meta-data android:name="screenCaptureProcessors" android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" /> </instrumentation> ...
W pliku
AndroidManifest.xml
aplikacji dodaj te wiersze w polu Element<manifest>
:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
W pliku
AndroidManifest.xml
określ uprawnienia systemowe aplikacji dodając te wiersze w tagu<manifest>
. Jeśli testujesz na Androidzie 10 (poziom interfejsu API 29) lub nowszym, pomińWRITE_EXTERNAL_STORAGE
(aplikacja nie wymaga tych uprawnień do odczytywania zapisywanie zrzutów ekranu na urządzeniu).<manifest ... > <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
Krok 2. Robienie zrzutów ekranu podczas testu
W dowolnym momencie testu, w którym chcesz zrobić zrzut ekranu, wywołaj
Screenshot.capture()
z biblioteki AndroidaX. Powoduje to
ScreenCapture
obiekt.
Gdy wywołujesz funkcję process()
w obiekcie ScreenCapture
, jest ona przetwarzana
użycie programu ScreenCaptureProcessor.
zarejestrowana w AndroidManifest.xml
. Pamiętaj, że parametr
Jeśli nie zarejestrowano żadnych procesorów, jest używany interfejs BasicScreenCaptureProcessor
.
Ponieważ zarejestrowałeś/zarejestrowałaś FirebaseScreenCaptureProcessor
, Twoje zrzuty ekranu będą przetwarzane za pomocą FirebaseScreenCaptureProcessor
i będą dostępne wraz z Twoimi wynikami, gdy wykonasz test za pomocą Firebase Test Lab.
Przykładowe przypadki użycia funkcji ScreenCapture
:
Wykonaj pełny zrzut ekranu w kompilacji API.VERSION_CODES.JELLY_BEAN_MR2 i powyżej:
Screenshot.capture()
Wykonaj
ScreenCapture
aktywności na dowolnym poziomie interfejsu API. Pamiętaj, że jest to tylko w przypadku urządzeń poniżej kompilacji.VERSION_CODES.JELLY_BEAN_MR2.@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
Przykłady użycia zrzutu ekranu
Przetwarzanie
ScreenCapture
w usłudzeFirebaseScreenCaptureProcessor
:Screenshot.capture().process();
Przetwarzanie:
ScreenCapture
za pomocą określonej metodyScreenCaptureProcessor
(pozwala to pominąć rejestrację procesora):Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
Ustaw nazwę i format obiektu
ScreenCapture
i przetwórz go za pomocą zarejestrowany podmiot przetwarzający:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
Krok 3. Tworzenie i przeprowadzanie testu
Utwórz aplikację i przetestuj pliki APK (aby uzyskać instrukcje, zapoznaj się z artykułem Testowanie aplikacji).
Prześlij pliki APK do panelu Test Lab konsoli Firebase.
Na koniec przeprowadź test.
Krok 4. Wyświetlanie testowych zrzutów ekranu
Po zakończeniu testu możesz wyświetlić wszystkie wykonane zrzuty ekranu w konsoli Firebase.
Na karcie Testy wybierz ukończony test. Kliknij kartę Wyniki.
Ponownie wybierz test i kliknij kartę Zrzuty ekranu, która się wyświetli.
(Opcjonalnie) Włącz dodatkowe funkcje testowe
Przed uruchomieniem testu za pomocą Test Lab możesz włączyć w nim te funkcje:
Włącz narzędzie Symphony
Android Test Assistant, to narzędzie, które niezależnie przeprowadza testy instrumentacji aplikacji. Test Lab zawsze używa najnowszej wersji narzędzia Symphony.
Aby włączyć narzędzie Assistanttor dla usługi Test Lab, w teście instrumentu konfiguracji, kliknij Dodatkowe opcje > Uruchom z narzędziem Artisttor.
Używanie narzędzia Academytor zapewnia następujące korzyści:
- Brak udostępnionego stanu. Każdy test działa oddzielnie z instancji instrumentacji, dzięki czemu wspólny stan nie kumuluje się w ramach testów.
- Pojedyncze awarie. Jeśli test ulegnie awarii, instrumentacja zostanie zakończona, ale inne testy w pakiecie będą nadal działać.
Pamiętaj, że gdy korzystasz z narzędzia Assistanttor, każdy test uruchamia się w jego ramach. instancję instrumentacji, co oznacza, że proces aplikacji jest uruchamiany ponownie po dla każdego przypadku testowego. Wydłużone czasy trwania mogą mieć wpływ wykorzystaniem limitu lub czasem rozliczania i mogą powoduje przekroczenie limitu limity czasu. Jeśli zmniejszysz czas uruchamiania, narzut się skróci.
Aby ustawić dodatkowe opcje narzędzia Sessiontor, określ je za pomocą:
Pole environmentVariables
. Aby na przykład użyć atrybutu clearPackageData
, użyj tego
w gcloud:
--environment-variables clearPackageData=true
Włącz fragmentację
Fragmentacja testowa dzieli zbiór testów na podgrupy (fragmenty), w których działają z osobna. Funkcja Test Lab automatycznie uruchamia równolegle każdy fragment na wielu urządzeniach i w krótszym czasie można przeprowadzić cały zestaw testów.
Jeśli na przykład utworzysz N fragmentów, to dla każdego wybranego urządzenia Test Lab uruchomi N na identycznych urządzeniach i na każdym z nich przeprowadzamy podzbiór testów. Oznacza to, że w których przypadku pofragmentowane przypadki testowe mogą powodować wiele wykonań testów na jednym urządzeniu. Przypadki testowe niepodzielone na fragmenty skutkują jednak jednym wykonaniem testu na urządzenia. Aby poznać Test Lab pojęcia, zobacz Kluczowe pojęcia.
Aby włączyć fragmentację testową w konsoli Firebase, wykonaj te czynności:
W konfiguracji testu instrumentu kliknij Dodatkowe opcje.
W sekcji Fragmentacja wpisz liczbę fragmentów, które chcesz uruchomić.
Płatności za fragmenty testowe
Test Lab implementuje fragmenty przy użyciu wbudowanych funkcji AndroidJUnitRunner przez mechanizm fragmentacji. Aby uniknąć opłat za utworzenie pustych fragmentów (bez przypisanych fragmentów) przypadków testowych), liczba fragmentów, które powinna być mniejsza od łącznej liczby przypadków testowych. W zależności od sposobu czas potrzebny na przeprowadzenie każdego testu, zwykle dobrze jest przypisać 2–10 testów, przypadków na fragment.
Więcej informacji o rozliczeniach znajdziesz w artykule Wykorzystanie, limity i rozliczenia.