Sauce Labs mit XCUITest

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Mit Axe DevTools Mobile können Sie Barrierefreiheitsprobleme mit Ihren UI-Tests finden. Integrieren Sie Ihren Test in Sauce Labs und gewinnen Sie Einblicke in das Benutzererlebnis Ihrer App - noch bevor sie es gesehen haben! Sauce Labs ist die größte cloudbasierte Testplattform und bietet eine Vielzahl von Geräte- und Simulator-Konfigurationen, um Ihr digitales Vertrauen zu stärken. Konfigurieren Sie Ihre Tests, um in Ihrer aktuellen Build-Automatisierung auf Sauce ausgeführt zu werden, und entdecken Sie Probleme, bevor sie in die Produktion gelangen.

Unten finden Sie eine Anleitung zum Ausführen Ihrer UI-Tests, die mit Axe DevTools Mobile und Sauce Labs integriert sind.

Voraussetzungen

  1. Bereiten Sie Ihre App für die Distribution vor. Da Tests auf Sauce Labs mit echten Geräten durchgeführt werden, sorgt die Bereitstellung der App- und UITest-Ziele vor der Einsendung an ihren Service für eine reibungslosere Verarbeitung.
  2. Installieren Sie die saucectl Befehlszeilenschnittstelle und richten Sie Ihre Sauce Labs-Anmeldedaten ein. Folgen Sie den Anweisungen von Sauce Labs.
tip

Suchen Sie nach einem Beispiel? Unser Sample-iOS-Projekt hat eine Integration, die bereit ist, getestet zu werden.

  1. Stellen Sie sicher, dass Sie die Voraussetzungen erfüllen.
  2. Laden Sie das Beispielprojekt von Github herunter
  3. Öffnen Sie ein Terminalfenster, geben Sie cd ein und ziehen Sie dann axe-devtools-ios-sample-app aus dem Finder in das Terminalfenster. Drücken Sie die Eingabetaste.
  4. Geben Sie im selben Fenster sh prepareForSauceRealDevice.sh ODER sh prepareForSauceVirtualDevice.sh ein. Drücken Sie die Eingabetaste.

Tests auf realen Geräten ausführen

Sauce Labs-Konfiguration hinzufügen

Sauce Labs verwendet eine yaml Datei, die sich im Projektstammverzeichnis befindet, .sauce/config.yml. Siehe das Beispiel-Konfigurationsdatei unten für Tests auf realen Geräten.

apiVersion: v1alpha
kind: xcuitest
sauce:
  region: us-west-1
  concurrency: 1

xcuitest: 
  # file names for real devices have the `.ipa` extension
  app: "<app_name>.ipa"
  testApp: "<app_name>UITests-Runner.ipa"


suites:
  - name: "<app_name>UITests"
    devices:
      - name: "iPhone.*"
        platformVersion: "17.2"

Build-Setup

Vom Stammverzeichnis Ihres Projekts im Terminal aus führen Sie den folgenden Befehl aus, um Geräte-Builds zu erstellen, ohne ein Gerät an Ihren Computer anschließen zu müssen:

xcodebuild build-for-testing -configuration Debug \
                             -scheme "$APP_SCHEME" \
                             -target "$APP_UITEST_TARGET" \
                             -sdk iphoneos \
                             -derivedDataPath "./DerivedData"

Dieser Befehl erzeugt zwei App-Dateien, die sich unter ./DerivedData/Build/Products/Debug-iphoneos/ befinden: Ihre iOS-Anwendung und Ihre UI-Tests (endend mit UITests-Runner).

Konvertieren Sie als Nächstes beide Anwendungsdateien in .ipa Dateien. Folgen Sie den Anweisungen von Sauce Labs zur Erstellung von .ipa Dateien.

Sobald die .ipa Dateien erstellt sind, erstellen Sie einen Apps-Ordner im Projektverzeichnis und fügen Sie beide .ipa Dateien hinzu.

Führen Sie den folgenden Befehl aus, um die .ipa Dateien an Sauce Labs zu übertragen und mit den Tests zu beginnen:

saucectl run
note

Verwenden Sie zusätzliche Tools zur kontinuierlichen Integration? Sauce Labs unterstützt Tests in Ihrer aktuellen Umgebung. Erfahren Sie mehr über die Integration in Ihre CI-Pipeline und Sauce Labs.

Automatisierung

Sobald Sie bestätigt haben, dass Ihre Konfigurationen korrekt eingerichtet sind, sind Sie bereit, diesen Prozess zu automatisieren! Wir haben unten ein Skript eingefügt, um .ipa Dateien automatisch für Geräte zu erstellen, sie an Sauce Labs hochzuladen und Ihre XCUITests auszuführen. Ihr Team kann dieses Skript auch verwenden, um einen Testrun auf Sauce Labs manuell auszulösen.

APP_LOCATION="DerivedData/Build/Products/Debug-iphoneos"
APP_NAME="<app_name>"

rm -rf *.ipa

xcodebuild build-for-testing -configuration Debug \
       -scheme "<scheme_name>" \
       -target "<UITests target>" \
       -sdk iphoneos \
       -derivedDataPath "./DerivedData" \
       -quiet

mkdir Payload

mv $APP_LOCATION/$APP_NAME.app Payload
zip -r -qq "$APP_NAME.ipa" Payload
rm -rf Payload/*

mv $APP_LOCATION/${APP_NAME}UITests-Runner.app Payload
zip -r -qq "${APP_NAME}UITests-Runner.ipa" Payload

saucectl run

rm -rf Payload
rm -rf DerivedData

Tests auf virtuellen Geräten ausführen

Sie können automatisierte XCUITest-Tests mit virtuellen Geräten auf Sauce Labs ausführen! Folgen Sie den unten stehenden Schritten, um loszulegen.

Sauce Labs-Konfiguration hinzufügen

Beim Testen mit Simulatoren befindet sich Ihre Konfiguration im Projektstammverzeichnis, .sauce/config.yml. Wenn Sie zuvor Tests mit echten Geräten durchgeführt haben, sollten Sie beachten, dass die Konfiguration für Simulatoren sich von der Konfiguration unterscheidet, die Sie für echte Geräte verwenden. Die .zip Erweiterung wird in den Dateinamen für app und testApp verwendet, und suites listet ‚Simulatoren‘ statt ‚Geräte‘ auf.

apiVersion: v1alpha
kind: xcuitest
sauce:
  region: us-west-1
  concurrency: 1

xcuitest:
  # file names for simulators use the `.zip` extension
  app: "<app_name>.zip"
  testApp: "<app_name>UITests-Runner.zip"

suites:
  - name: "<app_name>UITests"
    simulators:
      - name: "iPhone 12 Simulator"
        platformVersions:
          - "16.2"
note

Wenn Sie sowohl reale Geräte als auch Simulatoren verwenden möchten, sollten Sie zwei separate suites Konfigurationen erstellen und bereitstellen app und testApp Konfiguration für each suite.

Build-Setup

Sie werden die App und den Testrunner speziell für Simulatoren bauen, wobei Sie das folgende Snippet als Leitfaden verwenden. Wenn Sie zuvor Tests mit realen Geräten durchgeführt haben, werden Sie hier einige Unterschiede bemerken- -sdk iphonesimulator, EXCLUDED_ARCHS="" und CODE_SIGN_IDENTITY....

xcodebuild build-for-testing -configuration Debug \
  -scheme "$APP_SCHEME" \
  -target "$APP_UITEST_TARGET" \
  -sdk iphonesimulator \ 
  -derivedDataPath "./DerivedData" \
  EXCLUDED_ARCHS="" \
  CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO

Packen Sie nun die .app Dateien, um sie für den Upload auf Sauce Labs vorzubereiten.

  zip -r testApp.zip testApp.app
  zip -r testRunner.zip testRunner.app

Führen Sie abschließend den folgenden Befehl aus, um Ihre .zip Dateien hochzuladen und mit den Tests zu beginnen.

  saucectl run

Automatisierung

Sobald Sie die Konfiguration zum Testen auf Simulatoren eingerichtet haben, können Sie diesen Prozess automatisieren! Verwenden Sie das unten stehende Skript, um .app Dateien für Simulatoren automatisch zu erstellen, sie zu packen, an Sauce Labs hochzuladen und Ihre XCUITests auszuführen.

APP_LOCATION="DerivedData/Build/Products/Debug-iphonesimulator"
APP_NAME="<app_name>"
RUNNER_NAME="<testApp_name>"

rm -rf $APP_NAME.zip $RUNNER_NAME.zip

xcodebuild build-for-testing -configuration Debug \
  -scheme "<scheme_name>" \
  -target "<UITests target>" \
  -sdk iphonesimulator \
  -derivedDataPath "./DerivedData" \
  -quiet \
  EXCLUDED_ARCHS="" \
  CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO

zip -r -qq $APP_NAME.zip $APP_LOCATION/$APP_NAME.app
zip -r -qq $RUNNER_NAME.zip $APP_LOCATION/$RUNNER_NAME.app

saucectl run

rm -rf DerivedData