Udostępnij za pośrednictwem


Przygotowywanie testów appium do przekazania

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Kroki przygotowywania aplikacji i jej zestawu testów do przekazywania różnią się w zależności od struktury testowej. W tym przewodniku przedstawiono sposób przygotowywania testów appium przy użyciu języka Java z narzędziem JUnit do przekazywania do centrum aplikacji. Aby uzyskać wskazówki dotyczące tworzenia testów appium, zobacz dokumentację aplikacji Appium.

Zwróć uwagę na następujące ograniczenia dotyczące obsługi aplikacji Appium:

Uwaga

Kontekst elementu WebView, testowanie przeglądarki Chrome i przeglądarki Chrome z browserName możliwością są obsługiwane!

  • Brak obsługi testNG (obsługiwane są tylko testy JUnit).
  • Brak obsługi systemu Android 4.2 lub wcześniejszego. Brak obsługi przestarzałego sterownika UIAutomator.
  • Brak obsługi systemu iOS 9.2.1 lub wcześniejszego. Brak obsługi przestarzałego sterownika UIAutomation dla systemu iOS.
  • Brak obsługi programu JUnit @Category attribute. (Zamiast tego może używać opcji Dołączanie/wykluczanie )
  • Wersja narzędzia Maven musi być co najmniej 3.3.9.
  • Bieżąca wersja appium to 1.22.0. Jest on regularnie aktualizowany wraz z nowymi wersjami.
  • Obsługiwana jest wersja JUnit 4.9 — 4.12; Nie obsługujemy JUnit 5.
  • Testy muszą dotyczyć dokładnie jednej aplikacji. (MobileCapabilityType.FULL_RESET jest obsługiwany)

Uwaga

W niektórych przypadkach testy mogą nadal działać w usłudze App Center, jeśli są używane nieobsługiwane narzędzia lub funkcje. Jednak ta nieobsługiwana funkcja nie jest dostępna w przyszłych aktualizacjach i może zostać przerwana bez ostrzeżenia.

Wymagania wstępne

Testy będą uruchamiane przy użyciu narzędzia Maven Surefire, co wymaga, aby testy przestrzegały określonych konwencji nazewnictwa:

"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".

Przed podjęciem próby przekazania do testu usługi App Center upewnij się, że uruchamianie testów lokalnie na maszynie przy użyciu narzędzia Maven działa:

➜  AppiumTest git:(main) ✗ mvn verify
...
Running MainTest
started: SimpleTest (MainTest)
Setting up capabilities
failed
finished
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
SimpleTest(MainTest)  Time elapsed: 0.594 sec  <<< ERROR!
...

Jeśli nie możesz uruchomić testów przy użyciu wiersza polecenia lokalnie, testy również nie będą działać w usłudze App Center Test.

1. Zmiany w systemie kompilacji

Krok 1. Dodawanie zależności

Musisz dodać zależność dla rozszerzeń testowych appium:

<dependency>
    <groupId>com.microsoft.appcenter</groupId>
    <artifactId>appium-test-extension</artifactId>
    <version>1.6</version>
</dependency>

Ten kod zapewni, że ulepszone sterowniki systemu Android i iOS są dostępne w czasie kompilacji. Ulepszone sterowniki są udostępniane głównie w celu włączenia label tej funkcji. Aby uzyskać więcej informacji na temat label funkcji, zobacz Krok 4.

Krok 2. Dodawanie profilu przekazywania

Skopiuj ten fragment kodu do elementu pom.xml w tagu <profiles> . Jeśli nie <profiles> ma sekcji w swoim pom, utwórz je. Po aktywowaniu profil spakuje klasy testowe i wszystkie zależności do target/upload folderu, które będą gotowe do przekazania do testu.

2. Zmiany w testach

Krok 1. Dodawanie importu

Zaimportuj te pakiety do klas testowych:

import com.microsoft.appcenter.appium.Factory;
import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
import org.junit.rules.TestWatcher;
import org.junit.Rule;

Krok 2. Utworzenie wystąpienia elementu TestWatcher

Wstaw tę deklarację w każdej z klas testów:

    @Rule
    public TestWatcher watcher = Factory.createWatcher();

Krok 3. Aktualizowanie deklaracji sterownika

Zastąp deklarację ciągiem AndroidDriver<MobileElement> lub IOSDriver<MobileElement> ciągiem EnhancedAndroidDriver<MobileElement>EnhancedIOSDriver<MobileElement>

    private static EnhancedAndroidDriver<MobileElement> driver;

Krok 4. Aktualizowanie wystąpień sterownika

Zastąp sposób tworzenia wystąpienia sterownika, tak aby wiersze w postaci:

    driver = new AndroidDriver<MobileElement>(url, capabilities);

... są zmieniane na:

    driver = Factory.createAndroidDriver(url, capabilities);

Użycie tych sterowników pozwoli nadal uruchamiać testy lokalnie bez dodatkowych modyfikacji, ale umożliwia "etykietowanie" kroków testowych w wykonaniu testu przy użyciu polecenia driver.label("text"). Tekst i zrzut ekranu z urządzenia będą widoczne w raporcie testowym w centrum aplikacji.

Zalecane jest wywołanie driver.label metody @After , która tworzy zrzut ekranu przedstawiający stan końcowy aplikacji. Przykładowa @After metoda testu może wyglądać następująco:

    @After
    public void TearDown(){
        driver.label("Stopping App");
        driver.quit();
    }

3. Przekazywanie do testu centrum aplikacji

Kroki przekazywania testu:

  1. Wygeneruj polecenie przekazywania testowego w usłudze App Center, korzystając z instrukcji podczas uruchamiania przebiegu testu.

  2. Spakuj klasy testowe i wszystkie zależności do target/upload folderu:

    mvn -DskipTests -P prepare-for-upload package
    
  3. Uruchom polecenie przekazywania:

    appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk  --test-series "main" --locale "en_US" --build-dir target/upload
    

4. Rozwiązywanie problemów z wydajnością

Testy na urządzeniach w usłudze App Center będą wykonywane nieco wolniej niż na urządzeniu lokalnym. Zwykle wolniejsze wykonywanie jest przeważane przez posiadanie większej liczby dostępnych urządzeń, co pozwala na równoległe przebiegi testów.

Istnieją trzy główne źródła wolniejszych przebiegów testów: ponowne podpisywanie, ponowne instalowanie i zadania sieciowe.

Ponowne podpisywanie (w systemie iOS)

Przed zainstalowaniem na urządzeniu z systemem iOS aplikacja przechodzi przez proces o nazwie ponowne podpisywanie. Ten proces jest niezbędny do dopasowania profilu aprowizacji do urządzenia w chmurze. Ponowne podpisywanie trwa trochę czasu, zazwyczaj ok. 1–2 minuty. Rzadko ponowne podpisywanie powoduje również obniżenie wydajności, ponieważ ponownie podpisane aplikacje są buforowane. Czasochłonny proces będzie uruchamiany tylko raz na plik binarny.

Jeśli konfiguracja ciągłego dostarczania aktualizuje wersję ipA przed kompilowaniem i testowaniem, dane binarne będą inne dla każdego testu, a kara za ponowne podpisywanie będzie występować częściej.

Ponownej instalacji

W chmurze udostępnionej urządzenia ważne jest, aby zagwarantować, że urządzenia są czyszczone między poszczególnymi testami. Następny klient korzystający z urządzenia może być osobą z innej organizacji. W aplikacji App Center Test aplikacja zostanie automatycznie odinstalowana po zakończeniu przebiegu testu.

Istnieje możliwość pominięcia MobileCapabilityType.FULL_RESET i ustawienia MobileCapabilityType.NO_RESET w celu true przyspieszenia wykonywania testów. Aby uzyskać szczegółowe informacje, zobacz Strategie resetowania .

Zadania sieciowe

Zadania sieci lokalnej są szybsze, ponieważ serwer jest bliżej i bardziej dedykowany do hosta zdalnego.