

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.

# Test-Frameworks und integrierte Tests in AWS Device Farm
<a name="test-types"></a>

In diesem Abschnitt wird die Device Farm Farm-Unterstützung für Test-Frameworks und integrierte Testtypen beschrieben.

Device Farm führt automatisierte Tests durch, indem Sie Ihre App und Tests in einen sicheren Amazon S3 S3-Bucket hochladen, der vom Service verwaltet wird. Nach dem Hochladen wird die zugrunde liegende Infrastruktur, einschließlich der vom Service verwalteten [Testhosts](custom-test-environments-hosts.md), hochgefahren und die Tests werden parallel auf mehreren Geräten ausgeführt. Die Testergebnisse werden in einem vom Service verwalteten S3-Bucket gespeichert. Diese Architektur wird als **serviceseitige Ausführung** bezeichnet und ist eine schnelle und effiziente Möglichkeit, Tests auf Hosts auszuführen, die sich physisch in der Nähe des Geräts befinden, ohne die Testhostinfrastruktur selbst verwalten zu müssen. Dieser Ansatz eignet sich gut für Tests auf vielen Geräten unabhängig voneinander sowie für Tests im Kontext einer CI/CD Pipeline.

Weitere Informationen darüber, wie Device Farm Tests durchführt, finden Sie unter[Testumgebungen in AWS Device Farm](test-environments.md).

**Anmerkung**  
Für Appium-Tester ziehen Sie es möglicherweise vor, Ihre Appium-Tests in Ihrer lokalen Umgebung auszuführen. Mit einer [Fernzugriffssitzung](remote-access.md) können Sie **clientseitige** Appium-Tests ausführen. Weitere Informationen finden Sie unter [clientseitige](appium-endpoint.md) Appium-Tests.

## Frameworks testen
<a name="test-types-framework"></a>

Device Farm unterstützt die folgenden Frameworks für mobile Automatisierungstests:

### Frameworks zum Testen von Android-Anwendungen
<a name="test-types-framework-android-list"></a>
+ [Automatische Appium-TestsIntegration mit Appium-Tests](test-types-appium.md)
+ [Instrumentierung](test-types-android-instrumentation.md)

### Frameworks zum Testen von iOS-Anwendungen
<a name="test-types-framework-ios-list"></a>
+ [Automatische Appium-TestsIntegration mit Appium-Tests](test-types-appium.md)
+ [XCTest](test-types-ios-xctest.md)
+ [XCTest Benutzeroberfläche](test-types-ios-xctest-ui.md)

### Frameworks zum Testen von Webanwendungen
<a name="test-types-framework-web-app-list"></a>

Webanwendungen werden durch Appium unterstützt. Weitere Informationen dazu, wie Sie Ihre Tests mit Appium verwenden, finden Sie unter [Automatisches Ausführen von Appium-Tests in Device FarmIntegration von Appium-Tests mit Device Farm](test-types-appium.md).

### Frameworks in einer benutzerdefinierten Testumgebung
<a name="test-types-framework-custom-support"></a>

Device Farm bietet keine Unterstützung für die Anpassung der Testumgebung für das XCTest Framework. Weitere Informationen finden Sie unter [Benutzerdefinierte Testumgebungen in AWS Device Farm](custom-test-environments.md).

### Unterstützung für Appium-Versionen
<a name="test-types-framework-appium"></a>

Für Tests, die in einer benutzerdefinierten Umgebung ausgeführt werden, unterstützt Device Farm Appium Version 1. Weitere Informationen finden Sie unter [Testumgebungen in AWS Device Farm](test-environments.md).

## Integrierte Testtypen
<a name="test-types-built-in"></a>

Mit integrierten Tests können Sie Ihre Anwendung auf mehreren Geräten testen, ohne Testautomatisierungsskripts schreiben und verwalten zu müssen. Device Farm bietet einen integrierten Testtyp:
+ [Eingebaut: Fuzz (Android und iOS)](test-types-built-in-fuzz.md)

# Automatisches Ausführen von Appium-Tests in Device Farm
<a name="test-types-appium"></a><a name="test-types-ios-appium-java-testng"></a><a name="test-types-ios-appium-java-junit"></a><a name="test-types-ios-appium-python"></a><a name="test-types-ios-appium-ruby"></a><a name="test-types-ios-appium-node"></a><a name="test-types-android-appium-java-testng"></a><a name="test-types-android-appium-java-junit"></a><a name="test-types-android-appium-python"></a><a name="test-types-android-appium-ruby"></a><a name="test-types-android-appium-node"></a><a name="test-types-web-app-appium-java-testng"></a><a name="test-types-web-app-appium-java-junit"></a><a name="test-types-web-app-appium-python"></a><a name="test-types-web-app-appium-ruby"></a><a name="test-types-web-app-appium-node"></a>

**Anmerkung**  
Diese Seite behandelt die Ausführung von Appium-Tests in der verwalteten **serverseitigen** Ausführungsumgebung von Device Farm. [Informationen zum Ausführen von Appium-Tests in Ihrer lokalen **clientseitigen** Umgebung während einer Fernzugriffssitzung finden Sie unter Clientseitige Appium-Tests.](appium-endpoint.md)

In diesem Abschnitt wird beschrieben, wie Sie Ihre Appium-Tests für die Ausführung in der verwalteten serverseitigen Umgebung von Device Farm konfigurieren, verpacken und hochladen. Appium ist ein Open-Source-Tool zur Automatisierung nativer und mobiler Webanwendungen. Weitere Informationen finden Sie unter [Einführung in Appium](http://appium.io/docs/en/latest/intro) auf der Appium-Website.

Eine Beispiel-App und Links zu funktionierenden Tests finden Sie unter [Device Farm Farm-Beispiel-App für Android](https://github.com/aws-samples/aws-device-farm-sample-app-for-android) und [Device Farm Farm-Beispiel-App für iOS](https://github.com/aws-samples/aws-device-farm-sample-app-for-ios) auf GitHub.

Weitere Informationen zum Testen in Device Farm und zur serverseitigen Funktionsweise finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

## Eine Appium-Version auswählen
<a name="w2aac24c15c41"></a>

**Anmerkung**  
 Die Support bestimmter Appium-Versionen, Appium-Treiber oder Programmierung SDKs hängt vom Gerät und dem Testhost ab, die für den Testlauf ausgewählt wurden. 

 Device Farm Farm-Testhosts ist Appium vorinstalliert, um eine schnellere Einrichtung von Tests für einfachere Anwendungsfälle zu ermöglichen. Die Verwendung der Testspezifikationsdatei ermöglicht es Ihnen jedoch, bei Bedarf unterschiedliche Versionen von Appium zu installieren. 

### Szenario 1: Vorkonfigurierte Appium-Version
<a name="w2aac24c15c41b7b1"></a>

 Device Farm ist mit verschiedenen Appium-Serverversionen vorkonfiguriert, die auf dem Testhost basieren. Der Host wird mit Tools geliefert, die die vorkonfigurierte Version mit dem Standardtreiber der Geräteplattform (UiAutomator2 für Android und XCUITest für iOS) aktivieren. 

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2
      - devicefarm-cli use appium $APPIUM_VERSION
```

 Eine Liste der unterstützten Software finden Sie im Thema unter. [Unterstützte Software in benutzerdefinierten Testumgebungen](custom-test-environments-hosts-software.md) 

### Szenario 2: Benutzerdefinierte Appium-Version
<a name="w2aac24c15c41b7b3"></a>

 Um eine benutzerdefinierte Version von Appium auszuwählen, verwenden Sie den `npm` Befehl, um sie zu installieren. Das folgende Beispiel zeigt, wie Sie die neueste Version von Appium 2 installieren. 

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2
      - npm install -g appium@$APPIUM_VERSION
```

### Szenario 3: Appium auf älteren iOS-Hosts
<a name="w2aac24c15c41b7b5"></a>

 Auf dem [Legacy-iOS-Testhost](custom-test-environments-hosts-ios.md#legacy-ios-host) können Sie bestimmte Appium-Versionen mit auswählen. `avm` Um beispielsweise den `avm` Befehl zu verwenden, um die Appium-Serverversion auf einzustellen`2.1.2`, fügen Sie diese Befehle zu Ihrer YAML-Datei mit Testspezifikationen hinzu. 

```
phases:
  install:
    commands:
      - export APPIUM_VERSION=2.1.2
      - avm $APPIUM_VERSION
```

## Auswahl einer WebDriverAgent Version für iOS-Tests
<a name="test-types-appium-select-wda"></a>

 Um Appium-Tests auf iOS-Geräten ausführen zu können, WebDriverAgent ist die Verwendung von erforderlich. Diese Anwendung muss signiert sein, um auf iOS-Geräten installiert werden zu können. Device Farm bietet vorsignierte Versionen davon WebDriverAgent , die während der Ausführung benutzerdefinierter Testumgebungen verfügbar sind. 

 Der folgende Codeausschnitt kann verwendet werden, um eine WebDriverAgent Version auf Device Farm in Ihrer Testspezifikationsdatei auszuwählen, die mit Ihrer XCTest UI-Treiberversion kompatibel ist. 

```
phases:
  pre_test:
    commands:
      - |-
        APPIUM_DRIVER_VERSION=$(appium driver list --installed --json | jq -r ".xcuitest.version" | cut -d "." -f 1);
        CORRESPONDING_APPIUM_WDA=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V${APPIUM_DRIVER_VERSION}")
        if [[ ! -z "$APPIUM_DRIVER_VERSION" ]] && [[ ! -z "$CORRESPONDING_APPIUM_WDA" ]]; then
          echo "Using Device Farm's prebuilt WDA version ${APPIUM_DRIVER_VERSION}.x, which corresponds with your driver";
          DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $CORRESPONDING_APPIUM_WDA | cut -d "=" -f2)
        else
          LATEST_SUPPORTED_WDA_VERSION=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V" | sort -V -r | head -n 1)
          echo "Unknown driver version $APPIUM_DRIVER_VERSION; falling back to the Device Farm default version of $LATEST_SUPPORTED_WDA_VERSION";
          DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $LATEST_SUPPORTED_WDA_VERSION | cut -d "=" -f2)
        fi;
```

 [Weitere Informationen zu finden Sie in der Dokumentation WebDriverAgent von Appium.](https://appium.github.io/appium-xcuitest-driver/9.10/guides/run-prebuilt-wda/) 

# Integration von Appium-Tests mit Device Farm
<a name="test-types-appium-integrate"></a>

Verwenden Sie die folgenden Anweisungen, um Appium-Tests in AWS Device Farm zu integrieren. Weitere Informationen zur Verwendung von Appium-Tests in Device Farm finden Sie unter[Automatisches Ausführen von Appium-Tests in Device FarmIntegration von Appium-Tests mit Device Farm](test-types-appium.md).

## Konfigurieren Sie Ihr Appium-Testpaket
<a name="test-types-appium-prepare"></a>

Anhand der folgenden Anweisungen können Sie Ihr Testpaket konfigurieren.

------
#### [ Java (JUnit) ]

1. Ändern Sie`pom.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>
   ```

1. Ändern Sie `pom.xml` so, dass als Zielplattform für den Build Ihrer Tests in einer JAR-Datei `maven-jar-plugin` verwendet wird.

   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>
   ```

1. Ändern Sie `pom.xml` so, dass die Option `maven-dependency-plugin` verwendet wird, um die Abhängigkeiten als JAR-Dateien zu erzeugen.

   Das folgende Plugin kopiert deine 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>
   ```

1. Speichern Sie die folgende XML-Assembly-Struktur nach `src/main/assembly/zip.xml`.

   Das folgende XML ist eine Assemblydefinition, die, wenn sie konfiguriert 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>
   ```

1. Ä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>
   ```

**Anmerkung**  
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) ]

1. Ändern Sie`pom.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>
   ```

1. Ändern Sie `pom.xml` so, dass als Zielplattform für den Build Ihrer Tests in einer JAR-Datei `maven-jar-plugin` verwendet wird.

   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>
   ```

1. Ändern Sie `pom.xml` so, dass die Option `maven-dependency-plugin` verwendet wird, um die Abhängigkeiten als JAR-Dateien zu erzeugen.

   Das folgende Plugin kopiert deine 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>
   ```

1. Speichern Sie die folgende XML-Assembly-Struktur nach `src/main/assembly/zip.xml`.

   Das folgende XML ist eine Assemblydefinition, die, wenn sie konfiguriert 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>
   ```

1. Ä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>
   ```

**Anmerkung**  
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)](https://github.com/nvm-sh/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)

1. Stellen Sie sicher, dass nvm vorhanden ist.

   ```
   command -v nvm
   ```

   Sie sollten als Ausgabe `nvm` sehen.

   Weitere Informationen finden Sie unter [nvm on](https://github.com/nvm-sh/nvm). GitHub

1. 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
   ```

1. Stellen Sie sicher, dass die richtige Version von Node verwendet wird:

   ```
   node -v
   ```

1. Installieren Sie **npm-bundle** global:

   ```
   npm install -g npm-bundle
   ```

------
#### [ Python ]

1. Es wird ausdrücklich empfohlen, das [Python-Tool virtualenv](https://pypi.python.org/pypi/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
   ```
**Tipp**  
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.

1. Installieren Sie **py.test** in Ihrer virtuellen Umgebung.

   ```
   $ pip install pytest
   ```

1. Installieren Sie den Appium Python-Client in Ihrer virtuellen Umgebung.

   ```
   $ pip install Appium-Python-Client
   ```

1. Sofern Sie im benutzerdefinierten Modus keinen anderen Pfad angeben, erwartet Device Farm, dass Ihre Tests in gespeichert werden`tests/`. 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
   ```

1. 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.

1. 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 {} +
   ```

1. 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 Version Manager (RVM)](https://rvm.io/rvm/install)

  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.)

1. Installieren Sie die erforderlichen Schlüssel, RVM und Ruby. Anweisungen finden Sie unter [Installing RVM](https://rvm.io/rvm/install) auf der RVM-Website.

   Nachdem die Installation abgeschlossen wurde, laden Sie Ihr Terminal erneut, indem Sie sich abmelden und dann erneut wieder anmelden.
**Anmerkung**  
RVM wird als Funktion nur für die bash-Shell geladen.

1. Stellen Sie sicher, dass **rvm** korrekt installiert ist.

   ```
   command -v rvm
   ```

   Sie sollten als Ausgabe `rvm` sehen.

1. Wenn Sie beispielsweise eine bestimmte Version von Ruby installieren möchten*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
   ```

1. Konfigurieren Sie den Bundler so, dass er Pakete für Ihre gewünschten Testplattformen kompiliert:

   ```
   bundle config specific_platform true
   ```

1. 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
     ```

1. 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
<a name="test-types-appium-create-a-zip"></a>

**Warnung**  
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 ]

1. Überprüfen Sie Ihr Projekt.

   Stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Projekts befinden. Sie sehen `package.json` im Stammverzeichnis.

1. 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.
**Anmerkung**  
Zu diesem Zeitpunkt sollten Sie in der Lage sein, Ihre Tests lokal auszuführen.

1. Führen Sie diesen Befehl aus, um aus den Dateien in Ihrem aktuellen Ordner ein Testpaket in Form einer \$1.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.

1. Führen Sie diesen Befehl aus, um den im vorherigen Schritt erstellten Tarball (\$1.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 ]

1. 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
   ```

1. Führen Sie diesen Befehl aus, um die Umgebung, die Sie gerade erstellt haben, zu verwenden:

   ```
   rvm gemset use myGemset
   ```

1. Überprüfen Sie den Quellcode.

   Stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Projekts befinden. Sie sehen `Gemfile` im Stammverzeichnis.

1. Führen Sie diesen Befehl aus, um Ihre lokalen Abhängigkeiten und alle Gems aus der `Gemfile` zu installieren:

   ```
   bundle install
   ```
**Anmerkung**  
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
   ```

1. 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
   ```

1. 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
<a name="test-types-appium-upload"></a>

Sie können die Device Farm Farm-Konsole verwenden, um Ihre Tests hochzuladen.

1. Melden Sie sich bei der Device Farm Farm-Konsole unter [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) an.

1. Wählen Sie im Navigationsbereich Device Farm die Option **Mobile Device Testing** und dann **Projects** aus.

1. 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.

1. Öffnen Sie Ihr Projekt und wählen Sie dann **Create run aus**.

1. Geben Sie Ihrem Test unter **Ausführungseinstellungen** einen passenden Namen. Dieser kann eine beliebige Kombination aus Leerzeichen oder Satzzeichen enthalten.

1.   
Für native Android- und iOS-Tests  
Wählen Sie unter **Einstellungen ausführen** die Option **Android-App** aus, wenn Sie eine Android-Anwendung (.apk) testen, oder wählen Sie **iOS-App**, wenn Sie eine iOS-Anwendung (.ipa) testen. Wählen Sie dann unter **App auswählen die Option Eigene App** **hochladen** 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 unter Einstellungen ausführen** die Option **Web-App** aus.

1. Wählen **Sie unter Test konfigurieren** im Abschnitt **Testframework auswählen** das Appium-Framework aus, mit dem Sie testen, und **laden Sie dann Ihr eigenes Testpaket** hoch.

1. 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](#test-types-appium-prepare) beschrieben wird.

1. Folgen Sie den Anweisungen, um Geräte auszuwählen und den Testlauf zu starten. Weitere Informationen finden Sie unter [Einen Testlauf in Device Farm erstellen](how-to-create-test-run.md).

**Anmerkung**  
Device Farm ändert Appium-Tests nicht.

## Machen Sie Screenshots Ihrer Tests (optional)
<a name="test-types-appium-screenshots"></a>

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 [Take Screenshot (Screenshot erstellen)](http://appium.io/docs/en/commands/session/screenshot/) in der Appium-API-Dokumentation. 

# Android-Tests in der AWS Device Farm
<a name="test-types-android-tests"></a>

Device Farm bietet Unterstützung für verschiedene Automatisierungstesttypen für Android-Geräte sowie zwei integrierte Tests. 

Weitere Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

## Frameworks zum Testen von Android-Anwendungen
<a name="test-types-framework-android"></a>

Die folgenden benutzerdefinierten Tests stehen für Android-Geräte zur Verfügung.
+ [Automatische Appium-TestsIntegration mit Appium-Tests](test-types-appium.md)
+ [Instrumentierung](test-types-android-instrumentation.md)

## Integrierte Testtypen für Android
<a name="test-types-built-in-android"></a>

Für Android-Geräte ist ein integrierter Testtyp verfügbar:
+ [Eingebaut: Fuzz (Android und iOS)](test-types-built-in-fuzz.md)

# Instrumentierung für Android und AWS Device Farm
<a name="test-types-android-instrumentation"></a>

Device Farm bietet Unterstützung für Instrumentation (JUnit, Espresso, Robotium oder andere instrumentationsbasierte Tests) für Android.

Device Farm bietet auch eine Android-Beispielanwendung und Links zu Arbeitstests in drei Android-Automatisierungsframeworks, darunter Instrumentation (Espresso). Die [Device Farm Farm-Beispiel-App für Android steht unter](https://github.com/awslabs/aws-device-farm-sample-app-for-android) zum Download bereit GitHub.

Weitere Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

**Topics**
+ [Was ist Instrumentierung?](#test-types-android-instrumentation-what-is)
+ [Überlegungen zu Android-Instrumentierungstests](#test-types-android-instrumentation-settings)
+ [Testanalyse im Standardmodus](#test-types-android-standard-mode-test-parse)
+ [Integrieren von Android Instrumentation in Device Farm](test-types-android-instrumentation-integrate.md)

## Was ist Instrumentierung?
<a name="test-types-android-instrumentation-what-is"></a>

Mit der Android-Instrumentierung können Sie Rückrufmethoden in Ihrem Testcode aufrufen. So können Sie den Lebenszyklus einer Komponente schrittweise durchlaufen, so als ob Sie die Komponente debuggen. Weitere Informationen finden Sie unter [Instrumentierte Tests](https://developer.android.com/studio/test/test-in-android-studio#test_types_and_locations) im Abschnitt *Testtypen und -orte* der Dokumentation zu den *Android Developer Tools*.

## Überlegungen zu Android-Instrumentierungstests
<a name="test-types-android-instrumentation-settings"></a>

Beachten Sie bei der Verwendung der Android-Instrumentierung die folgenden Empfehlungen und Hinweise.

**Überprüfen Sie die Kompatibilität mit dem Android-Betriebssystem**  
 Überprüfen Sie in der [Android-Dokumentation](https://developer.android.com/jetpack/androidx/releases/test#orchestrator-1.5.0), ob Instrumentation mit Ihrer Android-Betriebssystemversion kompatibel ist. 

**Wird von der Befehlszeile aus ausgeführt**  
 Um Instrumentierungstests über die Befehlszeile auszuführen, folgen Sie bitte der [Android-Dokumentation.](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#enable-command) 

**System Animations (Systemanimationen)**  
 Gemäß der [Android-Dokumentation für Espresso-Tests](https://developer.android.com/training/testing/espresso) wird empfohlen, die Systemanimationen beim Testen auf echten Geräten auszuschalten. Device Farm deaktiviert automatisch die Einstellungen **Window Animation Scale, Transition Animation Scale** **und **Animator Duration** Scale**, wenn es mit dem Test-Runner [android.support.test.runner.Android JUnit](http://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html) Runner Instrumentation Test Runner ausgeführt wird.

**Test Recorders (Test-Aufzeichnungen)**  
Device Farm unterstützt Frameworks wie Robotium, die über record-and-playback Skripttools verfügen.

## Testanalyse im Standardmodus
<a name="test-types-android-standard-mode-test-parse"></a>

Im Standardmodus einer Ausführung analysiert Device Farm Ihre Testsuite und identifiziert die eindeutigen Testklassen und Methoden, die ausgeführt werden sollen. Dies erfolgt über ein Tool namens [Dex Test Parser](https://github.com/linkedin/dex-test-parser). 

Wenn eine APK-Datei mit Android-Instrumentierung als Eingabe angegeben wird, gibt der Parser die vollständig qualifizierten Methodennamen der Tests zurück, die den Konventionen JUnit 3 und JUnit 4 entsprechen. 

Um dies in einer lokalen Umgebung zu testen: 

1. Laden Sie die [https://github.com/linkedin/dex-test-parser](https://github.com/linkedin/dex-test-parser)Binärdatei herunter.

1. Führen Sie den folgenden Befehl aus, um die Liste der Testmethoden abzurufen, die auf Device Farm ausgeführt werden:

   ```
   java -jar parser.jar path/to/apk path/for/output
   ```

# Integrieren von Android Instrumentation in Device Farm
<a name="test-types-android-instrumentation-integrate"></a>

**Anmerkung**  
Verwenden Sie die folgenden Anweisungen, um Android-Instrumentierungstests in AWS Device Farm zu integrieren. Weitere Informationen zur Verwendung von Instrumentierungstests in Device Farm finden Sie unter[Instrumentierung für Android und AWS Device Farm](test-types-android-instrumentation.md). 

## Laden Sie Ihre Android-Instrumentierungstests hoch
<a name="test-types-android-instrumentation-upload"></a>

Verwenden Sie die Device Farm Farm-Konsole, um Ihre Tests hochzuladen.

1. Melden Sie sich bei der Device Farm Farm-Konsole unter [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) an.

1. Wählen Sie im Navigationsbereich Device Farm die Option **Mobile Device Testing** und dann **Projects** aus.

1. Wählen Sie in der Projektliste das Projekt aus, in das Sie Ihre Tests hochladen möchten.
**Tipp**  
Sie können die Suchleiste verwenden, um die Projektliste nach Namen zu filtern.  
Befolgen Sie die Anweisungen unter [Ein Projekt in AWS Device Farm erstellen](how-to-create-project.md), um ein neues Projekt zu erstellen.

1. Wählen Sie **Lauf erstellen aus**.

1. **Wählen Sie unter App auswählen** im Abschnitt **App-Auswahloptionen** die Option **Eigene App hochladen** aus.

1. Navigieren Sie zu der Datei mit Ihrer Android-Anwendung, und wählen Sie diese aus. Es muss sich dabei um eine APK-Datei handeln.

1. **Wählen **Sie unter Test konfigurieren** im Abschnitt Testframework** auswählen die Option **Instrumentation** und dann **Datei auswählen** aus.

1. Navigieren Sie zu der APK-Datei, die Ihre Tests enthält, und wählen Sie diese aus.

1. Folgen Sie den verbleibenden Anweisungen, um Geräte auszuwählen und den Testlauf zu starten.

## (Optional) Machen Sie Screenshots von Android-Instrumentierungstests
<a name="test-types-android-instrumentation-screenshots"></a>

Sie können im Rahmen Ihrer Android-Instrumentierungstests Screenshots erstellen.

Rufen Sie eine der folgenden Methoden auf, um Screenshots zu erstellen:
+ Rufen Sie für Robotium die Methode `takeScreenShot` auf (z. B. `solo.takeScreenShot();`).
+ Rufen Sie für Spoon die Methode `screenshot` auf, z. B.:

  ```
  Spoon.screenshot(activity, "initial_state");
  /* Normal test code... */
  Spoon.screenshot(activity, "after_login");
  ```

Während eines Testlaufs ruft Device Farm Screenshots von den folgenden Speicherorten auf den Geräten ab, sofern sie vorhanden sind, und fügt sie dann den Testberichten hinzu:
+ `/sdcard/robotium-screenshots`
+ `/sdcard/test-screenshots`
+ `/sdcard/Download/spoon-screenshots/test-class-name/test-method-name`
+ `/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name`

# iOS-Tests in der AWS Device Farm
<a name="test-types-ios-tests"></a>

Device Farm bietet Unterstützung für verschiedene Automatisierungstesttypen für iOS-Geräte sowie einen integrierten Test.

Weitere Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

## Frameworks zum Testen von iOS-Anwendungen
<a name="test-types-framework-ios"></a>

Die folgenden Tests stehen für iOS-Geräte zur Verfügung.
+ [Automatische Appium-TestsIntegration mit Appium-Tests](test-types-appium.md)
+ [XCTest](test-types-ios-xctest.md)
+ [XCTest Benutzeroberfläche](test-types-ios-xctest-ui.md)

## Integrierte Testtypen für iOS
<a name="test-types-built-in-ios"></a>

Es ist derzeit nur eine integrierte Testart für iOS-Geräte verfügbar.
+ [Eingebaut: Fuzz (Android und iOS)](test-types-built-in-fuzz.md)

# Integrieren von Device Farm mit XCTest für iOS
<a name="test-types-ios-xctest"></a>

Mit Device Farm können Sie das XCTest Framework verwenden, um Ihre App auf echten Geräten zu testen. Weitere Informationen dazu finden Sie XCTest unter [Grundlagen des Testens](https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/03-testing_basics.html) beim *Testen mit Xcode.*

Um einen Test auszuführen, erstellen Sie die Pakete für Ihren Testlauf und laden diese Pakete auf Device Farm hoch.

Weitere Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

**Topics**
+ [Erstellen Sie die Pakete für Ihren XCTest Lauf](#test-types-ios-xctest-create-packages)
+ [Laden Sie die Pakete für Ihren XCTest Lauf auf Device Farm hoch](#test-types-ios-xctest-upload)

## Erstellen Sie die Pakete für Ihren XCTest Lauf
<a name="test-types-ios-xctest-create-packages"></a>

Um Ihre App mithilfe des XCTest Frameworks zu testen, benötigt Device Farm Folgendes:
+ Ihr App-Paket verfügt über eine `.ipa`-Datei.
+ Ihr XCTest Paket als `.zip` Datei.

Sie erstellen diese Pakete mithilfe der von Xcode generierten Build-Ausgabe. Gehen Sie wie folgt vor, um die Pakete zu erstellen, damit Sie sie auf Device Farm hochladen können.

**So generieren Sie die Build-Ausgabe für Ihre App:**

1. Öffnen Sie Ihr App-Projekt in Xcode.

1. Wählen Sie im Schema-Dropdownmenü auf der Xcode-Toolleiste **Generisches iOS-Gerät** als Ziel.

1. Wählen Sie im Menü **Product (Produkt)** **Build For (Build für)** und dann **Testing (Test)**.

**So erstellen Sie das App-Paket:**

1. Öffnen Sie im Projektnavigator in Xcode unter **Products (Produkte)** das Kontextmenü für die Datei mit dem Namen `app-project-name.app`. Wählen Sie dann **Show in Finder (im Finder anzeigen)**. Der Finder öffnet einen Ordner mit dem Namen `Debug-iphoneos`, der die Ausgabe enthält, die Xcode für Ihren test-Build generiert hat. Dieser Ordner enthält Ihre `.app`-Datei.

1. Erstellen Sie im Finder einen neuen Ordner, und benennen Sie ihn `Payload`.

1. Kopieren Sie die `app-project-name.app`-Datei, und fügen Sie sie in den Ordner `Payload` ein.

1. Öffnen Sie das Kontextmenü für den Ordner `Payload` und wählen Sie **Compress „Payload“ („Payload“ komprimieren)**. Eine Datei mit dem Namen `Payload.zip` wird erstellt.

1. Ändern Sie den Namen der Datei und ihre Erweiterung `Payload.zip` zu `app-project-name.ipa`.

   In einem späteren Schritt stellen Sie diese Datei Device Farm zur Verfügung. Um die Datei leichter auffindbar zu machen, sollten Sie sie zu einem anderen ort verschieben, etwa auf Ihr Desktop.

1. Optional können Sie den Ordner `Payload` und die Datei `.app` darin löschen.

**Um das XCTest Paket zu erstellen**

1. Öffnen Sie im Finder im Verzeichnis `Debug-iphoneos` das Kontextmenü für die Datei `app-project-name.app`. Wählen Sie dann **Show Package Contents (Paketinhalte anzeigen)**.

1. Öffnen Sie in den Paketinhalten den Ordner `Plugins`. Dieser Ordner enthält eine Datei mit dem Namen `app-project-name.xctest`.

1. Öffnen Sie das Kontextmenü für diese Datei und wählen Sie **„Komprimieren“ `app-project-name.xctest`**. Eine Datei mit dem Namen `app-project-name.xctest.zip` wird erstellt.

   In einem späteren Schritt stellen Sie diese Datei Device Farm zur Verfügung. Um die Datei leichter auffindbar zu machen, sollten Sie sie zu einem anderen ort verschieben, etwa auf Ihr Desktop.

## Laden Sie die Pakete für Ihren XCTest Lauf auf Device Farm hoch
<a name="test-types-ios-xctest-upload"></a>

Verwenden Sie die Device Farm Farm-Konsole, um die Pakete für Ihren Test hochzuladen.

1. Melden Sie sich bei der Device Farm Farm-Konsole unter [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) an.

1. Wenn Sie noch kein Projekt haben, erstellen Sie eines. Die Schritte zum Erstellen eines Projekts finden Sie unter [Ein Projekt in AWS Device Farm erstellen](how-to-create-project.md).

   Andernfalls wählen Sie im Navigationsbereich der Device Farm die Option **Mobile Device Testing** und dann **Projects** aus.

1. Wählen Sie das Projekt aus, mit dem Sie den Test ausführen möchten.

1. Wählen Sie **Testlauf erstellen aus**.

1. Wählen **Sie unter Ausführungseinstellungen** im Abschnitt **Ausführungstyp** die Option **iOS-App** aus.

1. **Wählen Sie unter App auswählen** im Abschnitt **App-Auswahloptionen** die Option **Eigene App hochladen** aus. **Wählen Sie dann unter **App hochladen** die Option Datei auswählen** aus.

1. Navigieren Sie zur `.ipa`-Datei für Ihre App und laden Sie sie hoch.
**Anmerkung**  
Ihr `.ipa`-Paket muss für Tests erstellt sein.

1. **Wählen **Sie unter Test konfigurieren** im Abschnitt Testframework** auswählen die Option **XCTest**. **Wählen Sie dann unter **App hochladen** die Option Datei auswählen** aus.

1. Suchen Sie nach der `.zip` Datei, die das XCTest Paket für Ihre App enthält, und laden Sie es hoch.

1. Führen Sie die restlichen Schritte der Projekterstellung durch. Sie wählen die Geräte für den Test und geben den gerätezustand an.

1. Wählen Sie **Create run aus**. Device Farm führt Ihren Test aus und zeigt die Ergebnisse in der Konsole an.

# Integrieren der XCTest Benutzeroberfläche für iOS mit Device Farm
<a name="test-types-ios-xctest-ui"></a>

Device Farm bietet Unterstützung für das XCTest UI-Testframework. [Insbesondere unterstützt Device Farm XCTest UI-Tests, die sowohl in Objective-C als auch in Swift geschrieben wurden.](https://developer.apple.com/swift/) 

 Das XCTest UI-Framework ermöglicht UI-Tests in der iOS-Entwicklung, aufbauend auf XCTest. Weitere Informationen finden Sie unter [User Interface Testing](https://developer.apple.com/library/prerelease/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html#//apple_ref/doc/uid/TP40014132-CH13-SW1) in der iOS Developer Library.

Allgemeine Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

Verwenden Sie die folgenden Anweisungen, um Device Farm in das XCTest UI-Testframework für iOS zu integrieren.

**Topics**
+ [Bereiten Sie Ihre XCTest iOS-UI-Tests vor](#test-types-ios-xctest-ui-prepare)
+ [Option 1: Erstellen eines XCTest UI-Packages (.ipa)](#how-to-use-create-XCTestUI-ipa-package)
+ [Option 2: Erstellen eines XCTest UI-Pakets im ZIP-Format](#how-to-use-create-XCTestUI-zip-package)
+ [Laden Sie Ihre XCTest iOS-UI-Tests hoch](#test-types-ios-xctest-ui-upload)

## Bereiten Sie Ihre XCTest iOS-UI-Tests vor
<a name="test-types-ios-xctest-ui-prepare"></a>

Sie können entweder eine `.ipa` Datei oder eine `.zip` Datei für Ihr XCTEST\$1UI-Testpaket hochladen.

Eine `.ipa` Datei ist ein Anwendungsarchiv, das die iOS Runner-App im Bundle-Format enthält. *Zusätzliche Dateien können nicht in die `.ipa` Datei aufgenommen werden.*

Wenn Sie eine `.zip` Datei hochladen, kann sie entweder direkt die iOS Runner-App oder eine `.ipa` Datei enthalten. Sie können der `.zip` Datei auch andere Dateien hinzufügen, wenn Sie sie während der Tests verwenden möchten. Sie können beispielsweise Dateien wie `.xcworkspace` oder `.xcodeproj` in eine `.zip` Datei einfügen`.xctestrun`, um XCUI-Testpläne auf der Gerätefarm auszuführen. Detaillierte Anweisungen zur Ausführung von Testplänen finden Sie in der Standardtestspezifikationsdatei für den XCUI-Testtyp. 

## Option 1: Erstellen eines XCTest UI-Packages (.ipa)
<a name="how-to-use-create-XCTestUI-ipa-package"></a>

Das Bundle *yourAppName*UITest-Runner.app wird von Xcode erstellt, wenn Sie Ihr Projekt zum Testen erstellen. Es ist im Verzeichnis "Products" für das Projekt zu finden.

Um eine IPA-Datei zu erstellen:

1. Erstellen Sie ein Verzeichnis mit dem Namen. *Payload*

1. Fügen Sie Ihr App-Verzeichnis dem Payload-Verzeichnis hinzu.

1. Archivieren Sie das Payload-Verzeichnis in einer `.zip` Datei und ändern Sie dann die Dateierweiterung in. `.ipa`

 Die folgende Ordnerstruktur zeigt, wie eine Beispiel-App mit dem Namen als `.ipa` Datei verpackt werden *my-project-nameUITest-Runner.app* würde: 

```
.
└── my-project-nameUITest.ipa
    └── Payload (directory)
        └── my-project-nameUITest-Runner.app
```

## Option 2: Erstellen eines XCTest UI-Pakets im ZIP-Format
<a name="how-to-use-create-XCTestUI-zip-package"></a>

Device Farm generiert automatisch eine `.xctestrun` Datei für Sie, mit der Sie Ihre vollständige XCTest UI-Testsuite ausführen können. Wenn Sie Ihre eigene `.xctestrun` Datei auf Device Farm verwenden möchten, können Sie Ihre `.xctestrun` Dateien und das App-Verzeichnis in eine `.zip` Datei komprimieren. Wenn Sie bereits eine `.ipa` Datei für Ihr Testpaket haben, können Sie diese stattdessen hier einfügen*\$1-Runner.app*.

```
.
└── swift-sample-UI.zip (directory)
   ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa
   ├── SampleTestPlan_2.xctestrun
   ├── SampleTestPlan_1.xctestrun
   └── (any other files)
```

 Wenn Sie einen Xcode-Testplan für Ihre XCUI-Tests auf Device Farm ausführen möchten, können Sie eine ZIP-Datei erstellen, die Ihre *my-project-nameUITest-Runner.app **- oder my-project-name** UITest .ipa-Datei* *und die Xcode-Quellcodedateien enthält, die für die Ausführung von XCTEST\$1UI mit Testplänen erforderlich sind, einschließlich einer* OR-Datei. `.xcworkspace` `.xcodeproj`

Hier `.xcodeproj` ist ein Beispiel für eine ZIP-Datei, die eine Datei verwendet: 

```
.
└── swift-sample-UI.zip (directory)
   ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa
   ├── (any directory)
   └── SampleXcodeProject.xcodeproj
        ├── Testplan_1.xctestplan
        ├── Testplan_2.xctestplan
        └── (any other source code files created by xcode with .xcodeproj)
```

Hier ist ein Beispiel für eine Zip-Datei, die eine `.xcworkspace` Datei verwendet: 

```
.
└──swift-sample-UI.zip (directory)
   ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa
   └── (any directory)
   │   ├── SampleXcodeProject.xcodeproj
   │   ├── Testplan_1.xctestplan
   │   ├── Testplan_2.xctestplan
   |   └── (any other source code files created by xcode with .xcodeproj)
   └── SampleWorkspace.xcworkspace
       └── contents.xcworkspacedata
```

**Anmerkung**  
Bitte stellen Sie sicher, dass Ihr XCTest UI−.zip-Paket kein Verzeichnis mit dem Namen „Payload“ enthält. 

## Laden Sie Ihre XCTest iOS-UI-Tests hoch
<a name="test-types-ios-xctest-ui-upload"></a>

Verwenden Sie die Device Farm Farm-Konsole, um Ihre Tests hochzuladen.

1. Melden Sie sich bei der Device Farm Farm-Konsole unter [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) an.

1. Wählen Sie im Navigationsbereich Device Farm die Option **Mobile Device Testing** und dann **Projects** aus.

1. Wählen Sie in der Projektliste das Projekt aus, in das Sie Ihre Tests hochladen möchten.
**Tipp**  
Sie können die Suchleiste verwenden, um die Projektliste nach Namen zu filtern.  
Um ein Projekt zu erstellen, folgen Sie den Anweisungen unter [Ein Projekt in AWS Device Farm erstellen](how-to-create-project.md)

1. Wählen Sie **Lauf erstellen**.

1. Wählen **Sie unter Ausführungseinstellungen** im Abschnitt **Ausführungstyp** die Option **iOS-App** aus.

1. **Wählen Sie unter App auswählen** im Abschnitt **App-Auswahloptionen** die Option **Eigene App hochladen** aus. **Wählen Sie dann unter **App hochladen** die Option Datei auswählen** aus.

1. Navigieren Sie zu der Datei mit Ihrer iOS-Anwendung und wählen Sie diese aus. Es muss sich dabei um eine IPA-Datei handeln.
**Anmerkung**  
Stellen Sie sicher, dass Ihre IPA-Datei für ein iOS-Gerät und nicht für einen Simulator erstellt wurde.

1. Wählen **Sie unter Test konfigurieren** im Abschnitt **Testframework auswählen** die Option **XCTest UI** aus. **Wählen Sie dann unter **App hochladen** die Option Datei auswählen** aus.

1. Suchen Sie die IPA- oder ZIP-Datei, die Ihren XCTest iOS-UI-Test-Runner enthält, und wählen Sie sie aus. 

1. Schließen Sie die verbleibenden Schritte bei der Erstellung des Laufs ab. Sie wählen die Geräte aus, auf denen Sie testen möchten, und geben optional eine zusätzliche Konfiguration an.

1. Wählen Sie **Create Run aus**. Device Farm führt Ihren Test aus und zeigt die Ergebnisse in der Konsole an.

# Web-App-Tests in AWS Device Farm
<a name="test-types-web-app-tests"></a>

Device Farm bietet Tests mit Appium für Webanwendungen. Weitere Informationen zum Einrichten Ihrer Appium-Tests auf Device Farm finden Sie unter[Automatisches Ausführen von Appium-Tests in Device Farm](test-types-appium.md).

Weitere Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

## Regeln für Geräte mit und ohne Messgerät
<a name="web-app-tests-metered-unmetered-devices-rules"></a>

Der Begriff der Zählerüberwachung bezieht sich auf die Abrechnung pro Gerät. Standardmäßig werden Device Farm Farm-Geräte gemessen und Ihnen wird pro Minute berechnet, nachdem die kostenlosen Testminuten aufgebraucht sind. Sie können auch nicht zählerüberwachte Geräte erwerben und für eine feste monatliche Gebühr unbegrenzt Tests durchführen. Weitere Informationen zur Preisgestaltung finden Sie unter [Preise für AWS Device Farm](https://aws.amazon.com/device-farm/).

Wenn Sie einen Lauf für einen Geräte-Pool starten möchten, in dem sowohl iOS als auch Android-Geräte enthalten Sind, werden bestimmte Regeln für zählerüberwachte und nicht zählerüberwachte Geräte angewendet. Wenn Sie z. B. über fünf nicht zählerüberwachte Android-Geräte und fünf nicht zählerüberwachte iOS-Geräte verfügen, werden für Ihre Web-Testlauf Ihre nicht zählerüberwachte Geräte verwendet.

 Ein anderes Beispiel: Nehmen wir an, Sie verfügen über fünf nicht zählerüberwachte Android-Geräte und 0 nicht zählerüberwachte iOS-Geräte. Wenn Sie nur die Android-Geräte für den Web-Testlauf auswählen, werden Ihre nicht zählerüberwachten Geräte verwendet. Wenn Sie sowohl Android- als auch iOS-Geräte für den Web-Testlauf auswählen, wird die zählerüberwachte Abrechnungsmethode angewendet, und Ihre nicht zählerüberwachten Geräte werden nicht verwendet.

# Integrierte Tests in AWS Device Farm
<a name="test-types-built-in-tests"></a>

Device Farm bietet Unterstützung für integrierte Testtypen für Android- und iOS-Geräte. 

Mit integrierten Tests können Sie Ihre Anwendung auf mehreren Geräten testen, ohne Testautomatisierungsskripts schreiben und verwalten zu müssen. Dies kann Ihnen Zeit und Mühe sparen, insbesondere wenn Sie mit Device Farm beginnen. Device Farm bietet den folgenden integrierten Testtyp:
+ [Eingebaut: Fuzz (Android und iOS)](test-types-built-in-fuzz.md)— Der Fuzz-Test sendet zufällig Benutzeroberflächenereignisse an Geräte und meldet dann Ergebnisse.

Weitere Informationen zu Tests und Testframeworks in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).



# Ausführen des integrierten Fuzz-Tests von Device Farm (Android und iOS)
<a name="test-types-built-in-fuzz"></a>

Der integrierte Fuzz-Test von Device Farm sendet nach dem Zufallsprinzip Benutzeroberflächenereignisse an Geräte und meldet dann Ergebnisse.

Weitere Informationen zum Testen in Device Farm finden Sie unter[Test-Frameworks und integrierte Tests in AWS Device Farm](test-types.md).

**So führen Sie den integrierten Fuzz-Test aus**

1. Melden Sie sich bei der Device Farm Farm-Konsole unter [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm) an.

1. Wählen Sie im Navigationsbereich Device Farm die Option **Mobile Device Testing** und dann **Projects** aus.

1. Wählen Sie in der Projektliste das Projekt aus, in dem Sie den integrierten Fuzz-Test ausführen möchten.
**Tipp**  
Sie können die Suchleiste verwenden, um die Projektliste nach Namen zu filtern.  
Befolgen Sie die Anweisungen unter [Ein Projekt in AWS Device Farm erstellen](how-to-create-project.md), um ein neues Projekt zu erstellen.

1. Wählen Sie **Lauf erstellen**.

1. Wählen Sie unter **Laufeinstellungen** im Abschnitt Ausführungstyp Ihren **Ausführungstyp aus**. Wählen Sie **Android-App** aus, wenn Sie noch keine App zum Testen bereit haben oder wenn Sie eine Android-App (.apk) testen. Wählen Sie **iOS-App**, wenn Sie eine iOS-App (.ipa) testen.

1. **Wählen Sie unter App** **auswählen die Option Von Device Farm bereitgestellte Beispiel-App** auswählen aus, wenn Sie keine App zum Testen zur Verfügung haben. Wenn Sie Ihre eigene App mitbringen, wählen Sie **Eigene App hochladen** und wählen Sie Ihre Anwendungsdatei aus.

1. Wählen **Sie unter Test konfigurieren** im Abschnitt **Testframework auswählen die Option** **Integriert: Fuzz** aus.

1. Wenn eine oder mehrere der folgenden Einstellungen angezeigt wird, können Sie entweder die Standardwerte übernehmen oder eigene Werte angeben:
   + **Event count (Ereignisanzahl)**: Geben Sie eine Zahl zwischen 1 und 10.000 ein, welche die Anzahl der Benutzeroberflächen-Ereignisse angibt, die für den auszuführenden Fuzz-Test generiert werden soll.
   + **Event-Throttling**: Geben Sie eine Zahl zwischen 0 und 1.000 an, die angibt, wie viele Millisekunden der Fuzz-Test warten muss, bevor das nächste Benutzeroberflächenereignis ausgeführt wird.
   + **Randomizer seed (Randomisierungs-Seed)**: Geben Sie eine Zahl an, die vom auszuführenden Fuzz-Test als Startwert für die Randomisierung von Benutzeroberflächen-Ereignissen verwendet werden soll. Die Verwendung desselben Werts für aufeinander folgende Fuzz-Tests gewährleistet identische Ereignissequenzen.

1. Folgen Sie den verbleibenden Anweisungen, um Geräte auszuwählen und den Rechenlauf zu starten.