Agent testowania aplikacji (Android)

Agent testowania aplikacji to agent do generowania, zarządzania i wykonywania przypadków testowych oparty na Gemini w Firebase. Cele testów określasz w języku naturalnym, a agent wykorzystuje AI do rozpoznawania i obsługi aplikacji, symulowania interakcji użytkowników oraz dostarczania szczegółowych wyników testów.

Jak agent testowania aplikacji wykorzystuje Twoje dane

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

Zanim zaczniesz

Jeśli nie zostało to jeszcze zrobione, zarejestruj aplikację w Firebase.

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

Tworzenie elementu testowania

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

Każdy przypadek testowy 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ę. Podczas jednego kroku agent może wykonać wiele działań.

Przypadek testowy możesz utworzyć na 2 sposoby: za pomocą pliku YAML lub konsoli Firebase. Pliki YAML umożliwiają samodzielne zarządzanie przypadkami testowymi, zwykle w repozytorium kodu źródłowego z kontrolą wersji. Możesz też przechowywać przypadki testowe zdalnie w konsoli Firebase wraz z danymi App Distribution.

Korzystanie z plików YAML

Poniższy przykład przedstawia plik YAML, który definiuje 2 przypadki testowe:

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 uporządkować grupy testów w jednym pliku i rozdzielić te zestawy testów w wielu plikach. Możesz dodać przypadek testowy wymagany wstępnie, 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ć przypadki testowe i nimi zarządzać w konsoli Firebase. Aby utworzyć przypadek testowy, otwórz stronę App DistributionFirebasekonsoli i wykonaj te czynności:

  1. Na karcie Test Cases (Przypadki testowe) kliknij New test case (Nowy przypadek testowy). Jeśli nie chcesz tworzyć własnego przypadku testowego, możesz zmodyfikować lub użyć podanego przykładowego przypadku testowego.
  2. W oknie Dodaj element testowania nadaj elementowi testowania nazwę. Służy do identyfikowania testu, ale jest ignorowany przez agenta.
  3. (Opcjonalnie) Wybierz przypadek testowy wymagany, 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 niezaliczony. 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 testujący aplikację powinien zrobić w danym kroku.
  6. (Opcjonalnie) Dodaj wskazówkę, aby przekazać dodatkowe informacje, które pomogą testerowi aplikacji zrozumieć i obsługiwać aplikację na tym etapie.
  7. Dodaj asercję ekranu końcowego, aby pomóc agentowi testowania aplikacji określić, kiedy krok został wykonany. To stwierdzenie powinno odnosić się tylko do tego, co jest widoczne na ekranie.
  8. Gdy skończysz dostosowywać test, kliknij Zapisz.

Przykładowy element testowania

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

Tytuł testowy

Wczytania strony głównej

Cel

Wczytywanie strony głównej

Podpowiedź

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

Potwierdzenie na ekranie końcowym

Główna strona aplikacji jest widoczna na ekranie, wszystkie obrazy są załadowane i nie wyświetlają się żadne błędy.

Uruchom test

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

Korzystanie z plików YAML

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

  1. Zainstaluj najnowszą wersję wiersza poleceń Firebase lub zaktualizuj go do tej wersji. Zalecamy pobranie samodzielnego pliku binarnego interfejsu CLI odpowiedniego dla Twojego systemu operacyjnego.
  2. Zaloguj się i sprawdź, czy masz dostęp do projektów. Pamiętaj, że jeśli używasz wiersza poleceń Firebase w środowisku CI, możesz też uwierzytelnić się za pomocą konta usługi lub używając 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 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 z przypadkami testowymi. Polecenie będzie wyszukiwać rekursywnie 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 testowe, na które chcesz dystrybuować kompilacje, muszą mieć włączoną funkcję agenta testowania aplikacji.

Urządzenia testowe możesz podać jako listę urządzeń testowych 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 tekstowego zawierającego listę urządzeń testowych rozdzielonych średnikami:

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

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

--test-non-blocking

Jeśli ta opcja jest ustawiona, polecenie rozpocznie testy, a następnie natychmiast zwróci wynik, zamiast czekać na ich zakończenie.

--test-file-pattern

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

--test-name-pattern

wzorzec wyrażenia regularnego; Wykonane zostaną tylko testy o wyświetlanych nazwach pasujących do tego wzorca.

/path/to/app/binary

Opcjonalnie: ścieżka do pliku binarnego aplikacji. Jeśli ten parametr zostanie pominięty, agent użyje ostatniej wersji przesłanej do App Distribution w przypadku określonej aplikacji.

Korzystanie z konsoli App Distribution

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

Importowanie i eksportowanie przypadków testowych za pomocą plików YAML

Importowanie przypadków testowych z plików YAML jest przydatne, gdy chcesz zarządzać przypadkami testowymi poza konsolą Firebase. Eksportowanie przypadków testowych może być też przydatne do przenoszenia ich między projektami. Możesz użyć LLM do ulepszania istniejących przypadków testowych lub tworzenia nowych. Możesz importować i eksportować przypadki testowe ze strony Przypadki testowe w Firebase konsoli lub automatycznie za pomocą interfejsu wiersza poleceń Firebase. Przykładowy test w formacie YAML znajdziesz w artykule Tworzenie testu w formacie YAML.

Wyświetlanie wyników testu

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

Jeśli test obejmuje odtworzone działania, możesz wyświetlić oryginalny test przeprowadzony z pomocą AI lub wyczyścić pamięć podręczną.

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

Ikona Nazwa Opis
spark Działanie AI Oznacza, że agent testowania aplikacji użył Gemini, aby podjąć działanie lub zakończyć krok.
replay Powtórzone działanie Wskazuje, że agent testowania aplikacji odtworzył działanie z poprzedniego udanego uruchomienia testu.
spark Asercja AI Oznacza, że agent testowania aplikacji użył Gemini do sprawdzenia asercji na ekranie końcowym 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, korzystając z przełącznika Pokaż widok agenta w sekcji Wyświetl szczegóły na stronie Wyniki testu. Widok agenta pokazuje elementy na ekranie, które agent testujący aplikację wykrył podczas korzystania 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ż kliknąć przycisk Wyświetl artefakty na stronie Wyniki testu, aby zobaczyć wszystkie filmy, logi i inne artefakty Cloud związane z wynikami testu.

Znane problemy i ograniczenia

Wersja podglądowa agenta testowania aplikacji ma pewne znane ograniczenia:

  • Agent testowania aplikacji używa generatywnej AI do testowania aplikacji, więc 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 w górę/dół/lewo/prawo, długie naciśnięcie, przeciągnięcie i upuszczenie, powrót i oczekiwanie.
  • Agent testowania aplikacji ma problemy z przeprowadzaniem testów zawierających tylko jeden 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. Dzieje się tak częściej, gdy nie ma wizualnego wskaźnika możliwości przewijania. Aby obejść ten problem, możesz użyć pola „hints” (wskazówki), aby zasugerować przewijanie.
  • Agent testowania aplikacji ma czasami problemy z liczeniem, np. z wykonywaniem 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 zobaczy tylko pusty ekran.

Limity testowania

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

Pamiętaj, że jeśli zdecydujesz się uruchomić kilka przypadków testowych lub ten sam przypadek testowy na kilku urządzeniach, będzie to traktowane jako kilka testów. Jeśli na przykład uruchomisz 2 przypadki testowe na 2 urządzeniach, będzie to łącznie 4 testy.

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