Agent testowania aplikacji (Android)

Agent testowania aplikacji to agent do generowania, zarządzania i wykonywania elementów testowania oparty na Gemini w Firebase. Cele testów definiujesz w języku naturalnym, a agent używa AI, aby zrozumieć aplikację i poruszać się po niej, symulować interakcje użytkowników i podawać szczegółowe wyniki testów.

Jak agent testowania aplikacji wykorzystuje Twoje dane

Agent testowania aplikacji jest udostępniany przez Gemini w Firebase i podlega tym samym warunkom. Więcej informacji o tym, jak Gemini w Firebase korzysta z Twoich danych, znajdziesz w artykule Jak Gemini w Firebase korzysta z Twoich danych.

Zanim zaczniesz

Zarejestruj aplikację w Firebase, jeśli nie zostało to jeszcze zrobione.

Jeśli nie używasz żadnych innych usług Firebase, musisz tylko utworzyć projekt i zarejestrować aplikację. Nie musisz dodawać do niej żadnych pakietów SDK. Jeśli jednak zdecydujesz się w przyszłości korzystać z dodatkowych usług, wykonaj wszystkie czynności opisane w artykule Dodawanie Firebase za pomocą konsoli Firebase.

Tworzenie elementu testowania

Aby przeprowadzać testy oparte na AI, agent testowania aplikacji używa elementów testowania w języku naturalnym do wykonywania testów w aplikacji.

Każdy element testowania jest podzielony na kroki, które będą wykonywane po kolei. Kroki umożliwiają podzielenie elementu testowania na fazy, z których każda ma własną asercję. Agent może wykonać wiele działań w ramach jednego kroku.

Element testowania możesz utworzyć na 2 sposoby: za pomocą pliku YAML lub konsoli Firebase. Pliki YAML umożliwiają samodzielne zarządzanie elementami testowania, zwykle w repozytorium kodu źródłowego z wersjami. Możesz też przechowywać elementy testowania zdalnie w konsoli Firebase razem z danymi Rozpowszechniania aplikacji.

Używanie plików YAML

Poniższy przykład pokazuje plik YAML, który definiuje 2 elementy testowania:

tests:
- displayName: Login as guest
  id: login-as-guest
  steps:
  - goal: Log in as a guest
    finalScreenAssertion: The home screen is visible
- displayName: View biography card birth date
  prerequisiteTestCaseId: login-as-guest
  steps:
  - goal: Open the article on "Bob Dylan"
    hint: Use the search function to find it
    finalScreenAssertion: >-
      The article is opened and the title "Bob Dylan" is visible.
  - goal: Find Bob Dylan's birthday in the article
    hint: >-
      Look for the "Born" section in the infobox on the right side of the page.
    finalScreenAssertion: >-
      The text "May 24, 1941" is visible on the screen.

Możesz organizować grupy testów w jednym pliku i rozdzielać te zestawy testów na wiele plików. Możesz dodać wymagany element testowania, dodając identyfikator do testu, a następnie odwołując się do tego identyfikatora za pomocą prerequisiteTestCaseId.

Korzystanie z konsoli App Distribution

Możesz też tworzyć elementy testowania i zarządzać nimi w konsoli Firebase. Aby utworzyć element testowania, otwórz stronę App Distribution w konsoli Firebase i wykonaj te czynności:

  1. Na karcie Elementy testowania kliknij Nowy element testowania. Jeśli nie chcesz tworzyć własnego elementu testowania, możesz zmodyfikować lub użyć podanego przykładowego elementu testowania.
  2. W oknie Dodaj element testowania nadaj elementowi testowania nazwę. Służy do identyfikacji testu, ale jest ignorowany przez agenta.
  3. (Opcjonalnie) Wybierz Wymagany element testowania, który zawiera kroki konfiguracji do wykonania przed głównym testem. Jeśli test wstępny zakończy się niepowodzeniem, cały test zostanie oznaczony jako nieudany. Kroki i wyniki testów wstępnych i głównych będą wyświetlane razem w wynikach testu.
  4. Rozważ podzielenie testu na kilka kroków, klikając przycisk Dodaj kolejny krok.
  5. Każdemu krokowi przypisz cel, który opisuje, co agent testowania aplikacji powinien zrobić na danym etapie.
  6. (Opcjonalnie) Dodaj wskazówkę, aby podać dodatkowe informacje, które pomogą agentowi testowania aplikacji zrozumieć aplikację i poruszać się po niej na tym etapie.
  7. Dodaj Twierdzenie dotyczące ekranu końcowego, aby pomóc agentowi testowania aplikacji określić, kiedy krok został pomyślnie ukończony. To stwierdzenie powinno dotyczyć tylko tego, co jest widoczne na ekranie.
  8. Po zakończeniu dostosowywania testu kliknij Zapisz.

Przykładowy element testowania

Poniżej znajdziesz przykład tworzenia elementu testowania za pomocą agenta testowania aplikacji:

Tytuł testowy

Wczytania strony głównej

Cel

Wczytaj stronę główną

Podpowiedz

Przejdź przez ekrany wprowadzające. Zamknij wszystkie wyskakujące okienka. Nie loguj się.

Asercja ekranu końcowego

Strona główna aplikacji jest widoczna na ekranie, wszystkie obrazy zostały załadowane i nie wyświetlają się żadne błędy.

Uruchom test

Sposób przeprowadzania testów zależy od tego, jak tworzysz elementy testowania i nimi zarządzasz. Jeśli definiujesz elementy testowania za pomocą plików YAML, uruchomisz te testy za pomocą interfejsu wiersza poleceń Firebase. Jeśli utworzysz elementy testowania w konsoli Rozpowszechniania aplikacji, będziesz je uruchamiać z poziomu konsoli lub za pomocą jednego z narzędzi interfejsu wiersza poleceń Rozpowszechniania aplikacji.

Używanie plików YAML

Elementy testowania zdefiniowane w plikach YAML można wykonywać za pomocą wiersza poleceń Firebase.

  1. Zainstaluj interfejs wiersza poleceń Firebase lub zaktualizuj go do najnowszej wersji. Zalecamy pobranie samodzielnego pliku binarnego interfejsu wiersza poleceń dla Twojego systemu operacyjnego.
  2. Zaloguj się i sprawdź, czy masz dostęp do swoich projektów. Pamiętaj, że jeśli używasz interfejsu wiersza poleceń Firebase w środowisku CI, możesz też uwierzytelniać się za pomocą konta usługi lub polecenia login:ci.
  3. Uruchom polecenie apptesting:execute. Przykład:

    firebase apptesting:execute \
      --app=1:1234567890:android:0a1b2c3d4e5f67890 \
      --test-dir=./mytests \
      ./app/build/outputs/apk/debug/app-debug.apk
    
apptesting:execute [opcje] [/ścieżka/do/pliku/binarnego/aplikacji]
--app

Wymagany: identyfikator aplikacji w Firebase. Identyfikator aplikacji znajdziesz w konsoli Firebase na stronie Ustawienia ogólne.

--app 1:1234567890:android:0a1b2c3d4e5f67890

--test-dir

Ścieżka do katalogu zawierającego pliki YAML elementów testowania. Polecenie będzie wyszukiwać cyklicznie w tym katalogu, więc pliki można opcjonalnie uporządkować w podkatalogach. Jeśli nie zostanie ustawiona, domyślnie używana jest wartość „./tests”.

--test-devices lub
--test-devices-file

Urządzenia, na których mają zostać przeprowadzone testy.

Urządzenia testowe możesz określić jako listę specyfikacji urządzeń rozdzielonych średnikami:

--test-devices "model=tokay,version=36,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

Możesz też podać ścieżkę do pliku zwykłego tekstu zawierającego listę specyfikacji urządzeń rozdzielonych średnikami:

--test-devices-file "/path/to/test-devices.txt"

Dostępne modele urządzeń możesz sprawdzić za pomocą gcloud CLI.

--test-username

Nazwa użytkownika do automatycznego logowania, która będzie używana podczas testów.

--test-password lub
--test-password-file

Hasło do automatycznego logowania, które będzie używane podczas testów.

Możesz też podać ścieżkę do pliku zwykłego tekstu zawierającego hasło:

--test-password-file: "/path/to/test-password.txt"
--test-non-blocking

Jeśli ta opcja jest ustawiona, polecenie uruchomi testy, a następnie natychmiast zwróci wynik, zamiast czekać na ich zakończenie. Aby zobaczyć wyniki testu, otwórz konsolę Firebase. Jeśli ta flaga nie jest ustawiona, polecenie będzie blokowane do momentu zakończenia testów i zakończy się kodem błędu, jeśli którykolwiek z testów się nie powiedzie.

--results-bucket

Niestandardowy zasobnik Google Cloud Storage (GCS), w którym są przechowywane wyniki testów. Jeśli pozostawisz to pole puste, zostanie użyty domyślny zasobnik. Zasobnik musi należeć do projektu z włączonymi płatnościami, a określenie zasobnika powoduje naliczenie opłat za wykorzystane miejsce na dane.

--test-file-pattern

Wzorzec wyrażenia regularnego. Zostaną wykonane tylko testy zawarte w plikach pasujących do tego wzorca.

--test-name-pattern

Wzorzec wyrażenia regularnego. Wykonane zostaną tylko testy z wyświetlanymi nazwami pasującymi do tego wzorca.

/path/to/app/binary

Opcjonalnie: ścieżka do pliku binarnego aplikacji. Jeśli pominiesz tę opcję, agent użyje ostatniej wersji przesłanej do App Distribution dla określonej aplikacji.

Korzystanie z konsoli App Distribution

Aby uruchomić elementy testowania przechowywane w Rozpowszechnianiu aplikacji, możesz użyć konsoli Firebase, interfejsu wiersza poleceń Firebase lub wtyczek Gradle lub fastlane usługi App Distribution.

Importowanie i eksportowanie elementów testowania za pomocą plików YAML

Importowanie elementów testowania z plików YAML jest przydatne, gdy chcesz zarządzać elementami testowania poza konsolą Firebase. Eksportowanie elementów testowania może być też przydatne do przenoszenia ich między projektami. Możesz użyć LLM, aby ulepszyć istniejące elementy testowania lub utworzyć nowe. Elementy testowania możesz importować i eksportować na stronie Elementy testowania w konsoli Firebase lub automatycznie za pomocą interfejsu wiersza poleceń Firebase. Przykład elementu testowania YAML znajdziesz w artykule Tworzenie elementu testowania YAML.

Wyświetlanie wyników testu

Wyniki testów możesz wyświetlić na stronie Wersje na karcie Agent testowania aplikacji danej wersji. Przycisk Wyświetl szczegóły otwiera okno Wyniki testu, w którym możesz zobaczyć problemy, zrzuty ekranu aplikacji i działania, które Gemini wykonał podczas testu.

Jeśli test obejmuje odtworzone działania, możesz wyświetlić pierwotny test oparty na AI lub wyczyścić pamięć podręczną.

Więcej informacji o wynikach testu znajdziesz w tej tabeli:

Ikona Nazwa Opis
spark Działanie AI Wskazuje, że agent testowania aplikacji użył Gemini, aby podjąć decyzję o wykonaniu działania lub zakończeniu kroku.
replay Działanie zostało odtworzone ponownie Wskazuje, że agent testowania aplikacji odtworzył działanie z poprzedniego udanego uruchomienia testu.
spark Asercja AI Wskazuje, że agent testowania aplikacji użył Gemini do zweryfikowania asercji ekranu końcowego po odtworzeniu działań z poprzedniego udanego uruchomienia tego samego testu.

Debugowanie wyników testu

Jeśli wyniki testu różnią się od oczekiwanych, możesz debugować test, używając przełącznika Pokaż widok agenta w sekcji Wyświetl szczegóły na stronie Wyniki testu. Widok agenta pokazuje elementy na ekranie, które agent testowania aplikacji był w stanie wykryć, korzystając z informacji o ułatwieniach dostępu w aplikacji. Jeśli chcesz dokładniej przyjrzeć się temu, co widział agent, możesz pobrać te informacje z rozszerzonego menu działań.

Możesz też użyć przycisku Wyświetl artefakty na stronie Wyniki testu, aby wyświetlić wszystkie filmy, logi i inne artefakty Cloud dotyczące wyników testu.

Znane problemy i ograniczenia

Wersja testowa agenta testowania aplikacji ma pewne znane ograniczenia:

  • Testy oparte na AI mają limit czasu wynoszący 5 minut. Po rozpoczęciu testu musi on zakończyć się powodzeniem w tym czasie, w przeciwnym razie zostanie zakończony wcześniej i uznany za nieudany.
  • Agent testowania aplikacji używa generatywnej AI do testowania aplikacji, dlatego czasami podejmuje różne działania, ale nadal postępuje zgodnie z tymi samymi instrukcjami.
  • Agent testowania aplikacji obsługuje tylko te działania: kliknięcie, wpisanie tekstu, przesunięcie palcem w górę/w dół/w lewo/w prawo, przytrzymanie, przeciągnięcie i upuszczenie, cofnięcie i oczekiwanie.
  • Agent testowania aplikacji ma problemy z wykonywaniem testów zawierających tylko 1 krok, który wymaga wykonania wielu działań. Działa lepiej, gdy złożone zadania są podzielone na kilka krótszych etapów.
  • Agent testowania aplikacji czasami nie przewija ekranu, aby wyświetlić inne elementy poza ekranem. Dzieje się tak częściej, gdy nie ma wizualnego wskazania, że można przewijać. Aby obejść ten problem, możesz użyć pola „hints”, aby zasugerować przewijanie.
  • Agent testowania aplikacji ma czasem problemy z liczeniem, np. z wykonaniem działania określoną liczbę razy.
  • Agent testowania aplikacji nie może poruszać się po aplikacji, jeśli włączona jest funkcja FLAG_SECURE. Zamiast zrzutów ekranu aplikacji będzie widzieć tylko pusty ekran.

Testowanie limitów

W okresie testowym testy oparte na AI będą oferowane bezpłatnie w ramach limitu. Domyślny limit to 200 testów miesięcznie na projekt Firebase.

Pamiętaj, że jeśli zdecydujesz się uruchomić kilka elementów testowania lub ten sam element testowania na kilku urządzeniach, będzie to liczone jako kilka testów. Jeśli na przykład uruchomisz 2 elementy testowania na 2 urządzeniach, będzie to liczone jako 4 testy.

Aby zwiększyć limit powyżej domyślnego, skontaktuj się z zespołem pomocy Firebase i opisz swój przypadek użycia.