Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Arbeiten mit Appium und AWS Device Farm
In diesem Abschnitt wird beschrieben, wie Sie Ihre Appium-Tests konfigurieren, verpacken und auf Device Farm hochladen. Appium ist ein Open-Source-Tool zur Automatisierung nativer und mobiler Webanwendungen. Weitere Informationen finden Sie unter Einführung in Appium auf der Appium-Website.
Eine Beispiel-App und Links zu funktionierenden Tests finden Sie unter Device Farm Farm-Beispiel-App für Android und Device Farm Farm-Beispiel-App für iOS auf GitHub.
Versionsunterstützung
Der Support verschiedener Frameworks und Programmiersprachen hängt von der verwendeten Sprache ab.
Device Farm unterstützt alle Appium 1.x- und 2.x-Serverversionen. Für Android können Sie eine beliebige Appium-Hauptversion mit wählen. devicefarm-cli
Um beispielsweise Appium Server Version 2 zu verwenden, fügen Sie Ihrer YAML Testspezifikationsdatei die folgenden Befehle hinzu:
phases:
install:
commands:
# To install a newer version of Appium such as version 2:
- export APPIUM_VERSION=2
- devicefarm-cli use appium $APPIUM_VERSION
Für iOS können Sie mit den npm
Befehlen avm
oder bestimmte Appium-Versionen auswählen. Um beispielsweise den avm
Befehl zu verwenden, um die Appium-Serverversion auf 2.1.2 zu setzen, fügen Sie die folgenden Befehle zu Ihrer Testspezifikationsdatei hinzu: YAML
phases:
install:
commands:
# To install a newer version of Appium such as version 2.1.2:
- export APPIUM_VERSION=2.1.2
- avm $APPIUM_VERSION
Verwenden Sie den npm
Befehl, um die neueste Version von Appium 2 zu verwenden, und fügen Sie diese Befehle zu Ihrer Testspezifikationsdatei hinzu: YAML
phases:
install:
commands:
- export APPIUM_VERSION=2
- npm install -g appium@$APPIUM_VERSION
Weitere Informationen zu devicefarm-cli
oder anderen CLI Befehlen finden Sie in der AWS CLI Referenz.
Um alle Funktionen des Frameworks wie Anmerkungen zu nutzen, wählen Sie eine benutzerdefinierte Testumgebung aus und laden Sie mithilfe der Konsole AWS CLI oder der Device Farm
Konsole eine benutzerdefinierte Testspezifikation hoch.
Konfigurieren Sie Ihr Appium-Testpaket
Anhand der folgenden Anweisungen können Sie Ihr Testpaket konfigurieren.
- Java (JUnit)
-
-
Ändern Siepom.xml
, um die Paketierung auf eine JAR Datei festzulegen:
<groupId>com.acme</groupId>
<artifactId>acme-myApp-appium</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
-
Ändernpom.xml
, um es maven-jar-plugin
zu verwenden, um Ihre Tests in eine JAR Datei zu integrieren.
Das folgende Plugin baut Ihren Testquellcode (alles im src/test
Verzeichnis) in eine JAR Datei ein:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
-
Ändern Sie pom.xml
esmaven-dependency-plugin
, um Abhängigkeiten als JAR Dateien zu erstellen.
Das folgende Plugin kopiert Ihre Abhängigkeiten in das dependency-jars
Verzeichnis:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
-
Speichern Sie die folgende XML Assembly untersrc/main/assembly/zip.xml
.
Im Folgenden finden Sie eine Assemblydefinition, die, wenn sie konfiguriert XML ist, Maven anweist, eine ZIP-Datei zu erstellen, die alles enthält, was sich im Stammverzeichnis Ihres Build-Ausgabeverzeichnisses und im Verzeichnis befindet: dependency-jars
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>/dependency-jars/</include>
</includes>
</fileSet>
</fileSets>
</assembly>
-
Ändern Sie pom.xml
so, dass maven-assembly-plugin
die Tests und alle Abhängigkeiten zusammen in einer ZIP-Datei paketiert.
Das folgende Plug-in verwendet die Assembly-Struktur oben, um jedes Mal, wenn der Befehl mvn package ausgeführt wird, eine ZIP-Datei mit dem Namen zip-with-dependencies
im Build-Ausgabeverzeichnis zu erstellen:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>zip-with-dependencies</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
Wenn Sie eine Fehlermeldung erhalten, dass in Version 1.3 Anmerkungen nicht unterstützt werden, fügen Sie Folgendes in pom.xml
ein:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
- Java (TestNG)
-
-
Ändernpom.xml
, um die Paketierung auf eine Datei festzulegen: JAR
<groupId>com.acme</groupId>
<artifactId>acme-myApp-appium</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
-
Ändernpom.xml
, um es maven-jar-plugin
zu verwenden, um Ihre Tests in eine JAR Datei zu integrieren.
Das folgende Plugin baut Ihren Testquellcode (alles im src/test
Verzeichnis) in eine JAR Datei ein:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
-
Ändern Sie pom.xml
esmaven-dependency-plugin
, um Abhängigkeiten als JAR Dateien zu erstellen.
Das folgende Plugin kopiert Ihre Abhängigkeiten in das dependency-jars
Verzeichnis:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
-
Speichern Sie die folgende XML Assembly untersrc/main/assembly/zip.xml
.
Im Folgenden finden Sie eine Assemblydefinition, die, wenn sie konfiguriert XML ist, Maven anweist, eine ZIP-Datei zu erstellen, die alles enthält, was sich im Stammverzeichnis Ihres Build-Ausgabeverzeichnisses und im Verzeichnis befindet: dependency-jars
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>/dependency-jars/</include>
</includes>
</fileSet>
</fileSets>
</assembly>
-
Ändern Sie pom.xml
so, dass maven-assembly-plugin
die Tests und alle Abhängigkeiten zusammen in einer ZIP-Datei paketiert.
Das folgende Plug-in verwendet die Assembly-Struktur oben, um jedes Mal, wenn der Befehl mvn package ausgeführt wird, eine ZIP-Datei mit dem Namen zip-with-dependencies
im Build-Ausgabeverzeichnis zu erstellen:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>zip-with-dependencies</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
Wenn Sie eine Fehlermeldung erhalten, dass in Version 1.3 Anmerkungen nicht unterstützt werden, fügen Sie Folgendes in pom.xml
ein:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
- Node.JS
-
Um Ihre Appium Node.js Tests zu packen und auf Device Farm hochzuladen, müssen Sie Folgendes auf Ihrem lokalen Computer installieren:
-
Node Version Manager (nvm)
Verwenden Sie dieses Tool, wenn Sie Ihre Tests entwickeln und Testpakete erstellen, damit keine unnötigen Abhängigkeiten in Ihr Testpaket eingeschlossen werden.
-
Node.js
-
npm-bundle (global installiert)
-
Stellen Sie sicher, dass nvm vorhanden ist.
command -v nvm
Sie sollten als Ausgabe nvm
sehen.
Weitere Informationen finden Sie unter nvm on. GitHub
-
Führen Sie diesen Befehl aus, um Node.js zu installieren:
nvm install node
Sie können eine bestimmte Version von Node.js angeben:
nvm install 11.4.0
-
Stellen Sie sicher, dass die richtige Version von Node verwendet wird:
node -v
-
Installieren Sie npm-bundle global:
npm install -g npm-bundle
- Python
-
-
Es wird ausdrücklich empfohlen, das Python-Tool virtualenv für die Entwicklung und Erstellen von Testpaketen einzurichten und zu verwenden, um zu vermeiden, dass unnötige Abhängigkeiten in Ihr App-Paket aufgenommen werden.
$
virtualenv workspace
$
cd workspace
$
source bin/activate
-
Erstellen Sie keine virtuelle Python-Umgebung mit der Option --system-site-packages
, da in diesem Fall Pakete aus Ihrem globalen Verzeichnis „site-packages“ vererbt werden. Dies kann dazu führen, dass Abhängigkeiten in Ihre virtuelle Umgebung eingeschlossen werden, die von Ihren Tests nicht benötigt werden.
-
Sie sollten auch sicherstellen, dass Ihre Tests keine Abhängigkeiten von nativen Bibliotheken verwenden, da nicht sicher ist, ob diese nativen Bibliotheken in der Instance vorhanden sind, in der die Tests ausgeführt werden.
-
Installieren Sie py.test in Ihrer virtuellen Umgebung.
$
pip install pytest
-
Installieren Sie den Appium Python-Client in Ihrer virtuellen Umgebung.
$
pip install Appium-Python-Client
-
Sofern Sie im benutzerdefinierten Modus keinen anderen Pfad angeben, erwartet Device Farm, dass Ihre Tests in gespeichert werdentests/
. Sie können find
verwenden, um alle Dateien in einem Ordner anzuzeigen:
$
find tests/
Stellen Sie sicher, dass diese Dateien Testsuiten enthalten, die Sie auf Device Farm ausführen möchten
tests/
tests/my-first-tests.py
tests/my-second-tests/py
-
Führen Sie diesen Befehl vom Workspace-Ordner in Ihrer virtuellen Umgebung aus, um eine Liste Ihrer Tests anzuzeigen, ohne sie auszuführen.
$
py.test --collect-only tests/
Vergewissern Sie sich, dass in der Ausgabe die Tests angezeigt werden, die Sie auf Device Farm ausführen möchten.
-
Bereinigen Sie alle zwischengespeicherten Dateien unter Ihrem „tests/“-Ordner:
$
find . -name '__pycache__' -type d -exec rm -r {} +
$
find . -name '*.pyc' -exec rm -f {} +
$
find . -name '*.pyo' -exec rm -f {} +
$
find . -name '*~' -exec rm -f {} +
-
Führen Sie in Ihrem Workspace den folgenden Befehl zum Generieren der requirements.txt-Datei aus:
$
pip freeze > requirements.txt
- Ruby
-
Um Ihre Appium Ruby-Tests zu packen und auf Device Farm hochzuladen, müssen Sie Folgendes auf Ihrem lokalen Computer installieren:
-
Ruby-Versionsmanager () RVM
Verwenden Sie dieses Befehlszeilen-Tool, wenn Sie Ihre Tests entwickeln und Testpakete erstellen, um zu vermeiden, dass unnötige Abhängigkeiten in Ihr Testpaket eingeschlossen werden.
-
Ruby
-
Bundler (Dieses Gem wird in der Regel mit Ruby installiert.)
-
Installieren Sie die erforderlichen SchlüsselRVM, und Ruby. Anweisungen finden Sie unter Installation RVM auf der RVM Website.
Nachdem die Installation abgeschlossen wurde, laden Sie Ihr Terminal erneut, indem Sie sich abmelden und dann erneut wieder anmelden.
RVMwird nur als Funktion für die Bash-Shell geladen.
-
Stellen Sie sicher, dass rvm korrekt installiert ist.
command -v rvm
Sie sollten als Ausgabe rvm
sehen.
-
Wenn Sie eine bestimmte Version von Ruby installieren möchten, z. B. 2.5.3
, führen Sie den folgenden Befehl aus:
rvm install ruby 2.5.3 --autolibs=0
Stellen Sie sicher, dass Sie die angeforderte Version von Ruby verwenden:
ruby -v
-
Konfigurieren Sie den Bundler so, dass er Pakete für Ihre gewünschten Testplattformen kompiliert:
bundle config specific_platform true
-
Aktualisieren Sie Ihre .lock-Datei, um die Plattformen hinzuzufügen, die für die Ausführung von Tests benötigt werden.
-
Wenn Sie Tests für die Ausführung auf Android-Geräten kompilieren, führen Sie diesen Befehl aus, um das Gemfile so zu konfigurieren, dass es Abhängigkeiten für den Android-Testhost verwendet:
bundle lock --add-platform x86_64-linux
-
Wenn Sie Tests für die Ausführung auf iOS-Geräten kompilieren, führen Sie diesen Befehl aus, um das Gemfile so zu konfigurieren, dass es Abhängigkeiten für den iOS-Testhost verwendet:
bundle lock --add-platform x86_64-darwin
-
Das Gem bundler ist normalerweise standardmäßig installiert. Wenn dies nicht der Fall ist, installieren Sie es:
gem install bundler -v 2.3.26
Erstellen Sie eine komprimierte Testpaketdatei
In Device Farm ist die Ordnerstruktur der Dateien in Ihrem komprimierten Testpaket wichtig, und einige Archivierungstools ändern die Struktur Ihrer ZIP Datei implizit. Wir empfehlen, dass Sie die unten angegebenen Befehlszeilenprogramme verwenden, anstatt die in den Dateimanager Ihres lokalen Desktops integrierten Archivierungsprogramme (wie Finder oder Windows Explorer) zu verwenden.
Bündeln Sie nun Ihre Tests für die Device Farm.
- Java (JUnit)
-
Erstellen und verpacken Sie Ihre Tests:
$ mvn clean package -DskipTests=true
Als Ergebnis wird die Datei zip-with-dependencies.zip
erstellt. Dies ist Ihr Testpaket.
- Java (TestNG)
-
Erstellen und verpacken Sie Ihre Tests:
$ mvn clean package -DskipTests=true
Als Ergebnis wird die Datei zip-with-dependencies.zip
erstellt. Dies ist Ihr Testpaket.
- Node.JS
-
-
Überprüfen Sie Ihr Projekt.
Stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Projekts befinden. Sie sehen package.json
im Stammverzeichnis.
-
Führen Sie diesen Befehl aus, um Ihre lokalen Abhängigkeiten zu installieren.
npm install
Dieser Befehl erstellt außerdem den Ordner node_modules
in Ihrem aktuellen Verzeichnis.
Zu diesem Zeitpunkt sollten Sie in der Lage sein, Ihre Tests lokal auszuführen.
-
Führen Sie diesen Befehl aus, um aus den Dateien in Ihrem aktuellen Ordner ein Testpaket in Form einer *.tgz-Datei zu erstellen. Die Datei wird unter Verwendung der Eigenschaft name
in Ihrer package.json
-Datei benannt.
npm-bundle
Diese Tarball-Datei (.tgz) enthält Ihren gesamten Code und alle Abhängigkeiten.
-
Führen Sie diesen Befehl aus, um den im vorherigen Schritt erstellten Tarball (*.tgz-Datei) in einem einzigen ZIP-Archiv zu bündeln:
zip -r MyTests.zip
*.tgz
Dies ist die MyTests.zip
Datei, die Sie im folgenden Verfahren auf Device Farm hochladen.
- Python
-
- Python 2
-
Generieren Sie mit pip ein Archiv der erforderlichen Python-Pakete (als „Wheelhouse“ bezeichnet):
$
pip wheel --wheel-dir wheelhouse -r requirements.txt
Packen Sie Ihr Wheelhouse, Ihre Tests und Ihre Pip-Anforderungen in ein Zip-Archiv für Device Farm:
$
zip -r test_bundle.zip
tests/ wheelhouse/ requirements.txt
- Python 3
-
Packen Sie Ihre Tests und Pip-Anforderungen in eine ZIP-Datei:
$
zip -r test_bundle.zip
tests/ requirements.txt
- Ruby
-
-
Führen Sie diesen Befehl aus, um eine virtuelle Ruby-Umgebung zu erstellen:
# myGemset is the name of your virtual Ruby environment
rvm gemset create myGemset
-
Führen Sie diesen Befehl aus, um die Umgebung, die Sie gerade erstellt haben, zu verwenden:
rvm gemset use myGemset
-
Überprüfen Sie den Quellcode.
Stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Projekts befinden. Sie sehen Gemfile
im Stammverzeichnis.
-
Führen Sie diesen Befehl aus, um Ihre lokalen Abhängigkeiten und alle Gems aus der Gemfile
zu installieren:
bundle install
Zu diesem Zeitpunkt sollten Sie in der Lage sein, Ihre Tests lokal auszuführen. Mit diesem Befehl können Sie einen lokalen Test ausführen:
bundle exec $test_command
-
Verpacken Sie Ihre Gems im Ordner vendor/cache
.
# This will copy all the .gem files needed to run your tests into the vendor/cache directory
bundle package --all-platforms
-
Führen Sie den folgenden Befehl aus, um Ihren Quellcode zusammen mit allen Ihren Abhängigkeiten in einem einzigen ZIP-Archiv zu bündeln:
zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)
Dies ist die MyTests.zip
Datei, die Sie im folgenden Verfahren auf Device Farm hochladen.
Laden Sie Ihr Testpaket auf Device Farm hoch
Sie können die Device Farm Farm-Konsole verwenden, um Ihre Tests hochzuladen.
Melden Sie sich bei der Device Farm Farm-Konsole unter https://console.aws.amazon.com/devicefarm an.
-
Wählen Sie im Navigationsbereich Device Farm die Option Mobile Device Testing und dann Projects aus.
-
Wenn Sie ein neuer Benutzer sind, wählen Sie „Neues Projekt“, geben Sie einen Namen für das Projekt ein und wählen Sie dann „Senden“.
Wenn Sie bereits ein Projekt haben, können Sie es auswählen, um Ihre Tests darauf hochzuladen.
-
Öffnen Sie Ihr Projekt und wählen Sie Create a new run (Neuen Lauf erstellen).
-
- Für native Android- und iOS-Tests
-
Wählen Sie auf der Seite „Anwendung auswählen“ die Option „Mobile App“ und anschließend „Datei auswählen“ aus, um das verteilbare Paket Ihrer Anwendung hochzuladen.
Die Datei muss entweder eine Android .apk
- oder eine iOS .ipa
-Datei sein. iOS-Anwendungen müssen für echte Geräte erstellt werden, nicht für den Simulator.
- Für Tests von mobilen Webanwendungen
Wählen Sie auf der Seite „Anwendung auswählen“ die Option Web-App aus.
-
Geben Sie Ihrem Test einen entsprechenden Namen. Dieser kann eine beliebige Kombination aus Leerzeichen oder Satzzeichen enthalten.
-
Wählen Sie Weiter aus.
-
Wählen Sie auf der Seite Konfigurieren im Abschnitt Setup Test Framework die Option Appium aus language
, und wählen Sie dann Datei.
-
Navigieren Sie zu der ZIP-Datei, die Ihre Tests enthält, und wählen Sie diese aus. Die ZIP-Datei muss dem Format entsprechen, das unter Konfigurieren Sie Ihr Appium-Testpaket beschrieben wird.
-
Wählen Sie Test in einer benutzerdefinierten Umgebung ausführen aus. Diese Ausführungsumgebung ermöglicht die vollständige Kontrolle über die Einrichtung, den Teardown und den Aufruf von Tests sowie die Auswahl bestimmter Versionen von Laufzeiten und des Appium-Servers. Sie können Ihre benutzerdefinierte Umgebung über die Testspezifikationsdatei konfigurieren. Weitere Informationen finden Sie unter Arbeiten mit benutzerdefinierten Testumgebungen in AWS Device Farm.
-
Wählen Sie Weiter und folgen Sie dann den Anweisungen, um Geräte auszuwählen und den Testlauf zu starten. Weitere Informationen finden Sie unter Erstellen Sie einen Testlauf in Device Farm.
Device Farm ändert Appium-Tests nicht.
Machen Sie Screenshots Ihrer Tests (optional)
Sie können im Rahmen Ihrer Tests Screenshots erstellen.
Device Farm setzt das DEVICEFARM_SCREENSHOT_PATH
-Attribut auf einen vollqualifizierten Pfad auf dem lokalen Dateisystem. Device Farm erwartet, dass Appium-Screenshots unter diesem Pfad gespeichert werden. Das testspezifische Verzeichnis, in dem die Screenshots gespeichert werden, wird zur Laufzeit definiert. Die Screenshots werden automatisch in Ihre Device Farm-Berichte eingebunden. Sie können die Screenshots in der Device Farm-Konsole im Bereich Screenshots anzeigen.
Weitere Informationen zum Erstellen von Screenshots in Appium-Tests finden Sie unter Screenshot erstellen in der Appium-DokumentationAPI.