<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://doc.expecco.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ff</id>
	<title>expecco Wiki (Version 25.x) - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://doc.expecco.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ff"/>
	<link rel="alternate" type="text/html" href="https://doc.expecco.de/wiki/Spezial:Beitr%C3%A4ge/Ff"/>
	<updated>2026-04-26T01:48:21Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Mobile_Testing_Plugin&amp;diff=8179</id>
		<title>Mobile Testing Plugin</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Mobile_Testing_Plugin&amp;diff=8179"/>
		<updated>2017-02-24T16:10:42Z</updated>

		<summary type="html">&lt;p&gt;Ff: /* Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
Mit dem Mobile Testing Plugin können Anwendungen auf Android- und iOS-Geräten getestet werden. Dabei ist es egal, ob reale mobile Endgeräte oder emulierte Geräte verwendet werden. Das Plugin kann (und wird üblicherweise) zusammen mit dem [[Expecco_GUI_Tests_Extension_Reference|GUI-Browser]] verwendet werden, der das Erstellen von Tests unterstützt. Zudem ist damit das Aufzeichnen von Testabläufen möglich.&lt;br /&gt;
&lt;br /&gt;
Zur Verbindung mit den Geräten wird [http://appium.io/ Appium] verwendet. Appium ist ein freies Open-Source-Framework zum Testen und Automatisieren von mobilen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Dieses Dokument bezieht sich auf das Mobile Testing Plugin ab der expecco-Version 2.10. Die Dokumentation für Version 2.9 finden Sie unter [[Appium Plugin Reference]].&lt;br /&gt;
&lt;br /&gt;
Zur Einarbeitung in das Mobile Plugin empfehlen wir das [[#Tutorial|Tutorial]] zu bearbeiten. Dieses führt anhand eines Beispiels Schritt für Schritt durch die Erstellung eines Testfalls und erklärt die nötigen Grundlagen.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= Voraussetzungen =&lt;br /&gt;
*Appium-Server 1.4.16&lt;br /&gt;
Android-Geräte ab der Version 2.3.3 bis Version 6.0&lt;br /&gt;
*Java jdk Version 7 oder 8&lt;br /&gt;
*Android sdk&lt;br /&gt;
iOS-Geräte bis Version 9.3&lt;br /&gt;
*ideviceinstaller&lt;br /&gt;
*libimobiledevice&lt;br /&gt;
*Xcode 7.3.x--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation und Aufbau =&lt;br /&gt;
Zur Verwendung des Mobile Testing Plugins müssen Sie expecco inkl. Plugins installiert haben und Sie benötigen die entsprechenden Lizenzen. expecco kommuniziert mit den Mobilgeräten über einen Appium-Server, der entweder auf dem Rechner läuft, auf dem auch expecco ausgeführt wird, oder auf einem zweiten Rechner. Dieser muss für expecco erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installationsübersicht mit expecco 2.11:&#039;&#039;&#039;&lt;br /&gt;
* Appium-Server 1.6.4&lt;br /&gt;
für Android-Geräte ab der Version 4.3:&lt;br /&gt;
* Java JDK Version 7 oder 8&lt;br /&gt;
* Android SDK&lt;br /&gt;
für iOS-Geräte ab Version 9.3:&lt;br /&gt;
* Xcode 8.2.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installationsübersicht mit expecco 2.10:&#039;&#039;&#039;&lt;br /&gt;
* Appium-Server 1.4.16&lt;br /&gt;
für Android-Geräte ab der Version 2.3.3 bis Version 6.0:&lt;br /&gt;
* Java JDK Version 7 oder 8&lt;br /&gt;
* Android SDK&lt;br /&gt;
für iOS-Geräte bis Version 9.3:&lt;br /&gt;
* Xcode 7.3.x&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass aufgrund der Voraussetzungen iOS-Geräte nur von einem Mac aus angesteuert werden können. expecco kann dann über das Netzwerk mit dem Appium-Server auf dem Mac kommunizieren, um auf den dort angeschlossenen iOS-Geräten zu testen. Im Folgenden wird die Installation von Appium und anderer nötiger Programme für Windows und Mac OS erklärt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAufbau.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
Am einfachsten installieren Sie alles mit unserem Mobile Testing Supplement:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;expecco 2.11&#039;&#039;&#039;: [http://download.exept.de/transfer/h-expecco-2.11.0-pre/MobileTestingSupplement_1.6_Setup.exe Mobile Testing Supplement 1.6.0.0] &lt;br /&gt;
:Dieses installiert ein Java JDK der Version 8, android-sdk und Appium in der Version 1.6.4. Außerdem bietet das Supplement auch einen universellen adb-Treiber ([http://download.clockworkmod.com/test/UniversalAdbDriverSetup.msi ClockworkMod]) an. Dieser vereint Treiber für ein breites Spektrum an Android-Geräten, sodass Sie nicht für jedes Gerät einen eigenen Treiber suchen und installieren müssen.&lt;br /&gt;
*expecco 2.10: [http://download.exept.de/transfer/h-expecco-2.10.0/Mobile_Testing_Supplement_1.5.0.0_Setup.exe Mobile Testing Supplement 1.5.0.0]&lt;br /&gt;
:Dieses installiert ein Java JDK der Version 8, android-sdk und Appium in der Version 1.4.16. Während der Installation wird die grafische Oberfläche von Appium gestartet, dieses Fenster können Sie sofort wieder schließen. Außerdem bietet das Supplement auch einen universellen adb-Treiber ([http://download.clockworkmod.com/test/UniversalAdbDriverSetup.msi ClockworkMod]) an. Dieser vereint Treiber für ein breites Spektrum an Android-Geräten, sodass Sie nicht für jedes Gerät einen eigenen Treiber suchen und installieren müssen.&lt;br /&gt;
&lt;br /&gt;
Beim Starten von Appium kann es vorkommen, dass die Windows-Firewall den Node-Server blockiert. In diesem Fall kann expecco keinen Appium-Server starten. Starten Sie daher nach der Installation am besten die Datei &#039;&#039;appium.cmd&#039;&#039; im Ordner &#039;&#039;appium&#039;&#039; des Mobile Testing Supplements. Wenn sich der Appium-Server starten lässt, sollte es auch von expecco aus funktionieren. Meldet sich hingegen die Windows-Firewall, lassen Sie den Zugriff zu.&lt;br /&gt;
&lt;br /&gt;
== Mac OS ==&lt;br /&gt;
=== expecco 2.11 ===&lt;br /&gt;
Auf dem verwendeten Mac sollte als Betriebssystemversion OS X 10.11.5 (El Capitan) oder neuer laufen. Zur Automatisierung von iOS-Geräten ab Version 10 ist eine Installation von einem vergleichbar neuen Xcode 8 nötig (für iOS 10.1 mind. Xcode 8.1, für iOS 10.2 mind. Xcode 8.2, usw.), die auf älteren Betriebssystemen nicht läuft (siehe auch [https://en.wikipedia.org/wiki/Xcode#Version_comparison_table Xcode-Versionen]). Installieren Sie Xcode aus dem App Store. Außerdem benötigt Appium eine Java-Installation. Installieren Sie dazu ein JDK in Version 7 oder 8. Mithilfe unseres [http://download.exept.de/transfer/h-expecco-2.11.0-pre/Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2 Mobile Testing Supplements für Mac OS] können Sie nun noch Appium 1.6.4 installieren. Nachdem Sie es heruntergeladen haben, können Sie es in ein Verzeichnis Ihrer Wahl (z. B. Ihr Home-Verzeichnis) verschieben und dort entpacken. Ein geeigneter Befehl in einer Shell könnte so aussehen:&lt;br /&gt;
 tar -xvpf Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2&lt;br /&gt;
Wenn Xcode 8.2 Ihre Standard-Xcode-Installation ist, können Sie Appium direkt starten:&lt;br /&gt;
 Mobile_Testing_Supplement/bin/start-appium-1.6.4&lt;br /&gt;
Falls Xcode 8.2 nicht als Standard-Xcode konfiguriert ist, müssen Sie Appium den entsprechenden Pfad über die Umgebungsvariable &#039;&#039;DEVELOPER_DIR&#039;&#039; angeben. Wenn Sie Xcode z. B. in &#039;&#039;/Applications/Xcode-8.2.app&#039;&#039; installiert haben, können Sie Appium so starten:&lt;br /&gt;
 DEVELOPER_DIR=&amp;quot;/Applications/Xcode-8.2.app/Contents/Developer&amp;quot; Mobile_Testing_Supplement/bin/start-appium-1.6.4&lt;br /&gt;
Was in Ihrem System als Standard-Xcode-Installation gesetzt ist, können Sie mit diesem Befehl herausfinden:&lt;br /&gt;
 xcode-select -p&lt;br /&gt;
Wenn Appium Ihre Xcode-Installation nicht findet, erscheint beim Verbinden eine Fehlermeldung in der Art:&lt;br /&gt;
&#039;&#039;&amp;lt;blockquote&amp;gt;org.openqa.selenium.SessionNotCreatedException - A new session could not be created. (Original error: Could not find path to Xcode, environment variable DEVELOPER_DIR set to: /Applications/Xcode.app but no Xcode found)&amp;lt;/blockquote&amp;gt;&#039;&#039;&lt;br /&gt;
Starten Sie in einem solchen Fall Appium erneut unter Angabe eines gültigen &#039;&#039;DEVELOPER_DIR&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um eine App starten zu können, muss ein Entwicklerzertifikat mit dem dazugehörigen privaten Schlüssel in der Schlüsselbundverwaltung des verwendeten Macs enthalten und der Zugriff darauf freigegeben sein. Wenn sich kein solches Zertifikat auf Ihrem Mac befindet, können Sie eines importieren; das Dateiformat hierfür ist p12. Öffnen Sie dazu die Schlüsselbundverwaltung und wählen Sie den Schlüsselbund &#039;&#039;Anmeldung&#039;&#039; aus. Importieren Sie die Datei über das Menü &#039;&#039;Ablage&#039;&#039; &amp;gt; &#039;&#039;Objekte importieren&#039;&#039;. Selektieren Sie nun das Zertifikat und wählen Sie im Rechtsklick-Menü den Punkt &#039;&#039;Informationen&#039;&#039; aus. Unter den Details des Zertifikats finden Sie die Team-ID, die hier als Organisationseinheit bezeichnet wird. Merken Sie sich diese zehnstellige ID. Geben Sie bei den Verbindungseinstellungen zusätzlich die Capability &#039;&#039;xcodeOrgId&#039;&#039; an und setzen Sie als Wert diese ID. Lesen Sie dazu den [[#Erweiterte_Ansicht | Abschnitt zur erweiterten Ansicht des Verbindungsdialogs]].&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.10 ===&lt;br /&gt;
Auf dem verwendeten Mac sollte als Betriebssystemversion OS X 10.11.5 (El Capitan) oder neuer laufen. Zur Automatisierung mit iOS-Geräten bis Version 9.3 ist eine Installation von Xcode 7.3 nötig, die auf älteren Betriebssystemen nicht läuft (siehe auch [https://en.wikipedia.org/wiki/Xcode#Version_comparison_table Xcode-Versionen]). Installieren Sie Xcode aus dem App Store. Außerdem benötigt Appium eine Java-Installation. Installieren Sie dazu ein JDK in Version 7 oder 8. Mithilfe unseres [http://download.exept.de/transfer/h-expecco-2.10.0/Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2 Mobile Testing Supplements für Mac OS] können Sie nun noch Appium 1.4.16 installieren. Nachdem Sie es heruntergeladen haben, können Sie es in ein Verzeichnis Ihrer Wahl (z. B. Ihr Home-Verzeichnis) verschieben und dort entpacken. Ein geeigneter Befehl in einer Shell könnte so aussehen:&lt;br /&gt;
 tar -xvpf Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2&lt;br /&gt;
Wenn Xcode 7.3 Ihre Standard-Xcode-Installation ist, können Sie Appium direkt starten:&lt;br /&gt;
 Mobile_Testing_Supplement/bin/start-appium-1.4.16&lt;br /&gt;
Falls Xcode 7.3 nicht als Standard-Xcode konfiguriert ist, müssen Sie Appium den entsprechenden Pfad über die Umgebungsvariable &#039;&#039;DEVELOPER_DIR&#039;&#039; angeben. Wenn Sie Xcode z. B. in &#039;&#039;/Applications/Xcode-7.3.app&#039;&#039; installiert haben, können Sie Appium so starten:&lt;br /&gt;
 DEVELOPER_DIR=&amp;quot;/Applications/Xcode-7.3.app/Contents/Developer&amp;quot; Mobile_Testing_Supplement/bin/start-appium-1.4.16&lt;br /&gt;
Was in Ihrem System als Standard-Xcode-Installation gesetzt ist, können Sie mit diesem Befehl herausfinden:&lt;br /&gt;
 xcode-select -p&lt;br /&gt;
Wenn Appium Ihre Xcode-Installation nicht findet, erscheint beim Verbinden eine Fehlermeldung in der Art:&lt;br /&gt;
&#039;&#039;&amp;lt;blockquote&amp;gt;org.openqa.selenium.SessionNotCreatedException - A new session could not be created. (Original error: Could not find path to Xcode, environment variable DEVELOPER_DIR set to: /Applications/Xcode.app but no Xcode found)&amp;lt;/blockquote&amp;gt;&#039;&#039;&lt;br /&gt;
Starten Sie in einem solchen Fall Appium erneut unter Angabe eines gültigen &#039;&#039;DEVELOPER_DIR&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Plugins ==&lt;br /&gt;
Bevor Sie loslegen, sollten Sie die Einstellungen des Mobile Testing Plugins überprüfen und ggf. anpassen. Öffnen Sie im Menü den Punkt &#039;&#039;Extras&#039;&#039; &amp;gt; &#039;&#039;Einstellungen&#039;&#039; und dort unter &#039;&#039;Erweiterungen&#039;&#039; den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (s. Abb.). Standardmäßig werden diese Pfade automatisch gefunden (1). Um einen Pfad manuell anzupassen, deaktivieren sie den entsprechenden Haken rechts davon. Sie erhalten in einer Drop-down-Liste einige Pfade zur Auswahl. Ist ein eingetragener Pfad falsch oder kann er nicht gefunden werden, wird das Feld rot markiert und es erscheint ein diesbezüglicher Hinweis. Stellen Sie sicher, dass alle Pfade richtig angegeben sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungen.png | thumb | 400px | Konfiguration des Plugins]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;appium&#039;&#039;&#039;: Geben Sie hier den Pfad zur ausführbaren Datei an mit der Appium in der Kommandozeile gestartet werden kann. Unter Windows wird diese Datei in der Regel &#039;&#039;appium.cmd&#039;&#039; heißen. Dieser Pfad wird benutzt, wenn expecco einen Appium-Server startet.&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039;: Geben Sie hier den Pfad zur ausführbaren Datei an, die Node startet. Dieser Pfad wird beim Starten eines Servers an Appium weitergegeben, damit Appium ihn unabhängig von der PATH-Variablen findet. Unter Windows heißt diese Datei in der Regel &#039;&#039;node.exe&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;JAVA_HOME&#039;&#039;&#039;: Geben Sie hier den Pfad zu einem JDK an. Dieser Pfad wird an jeden Appium-Server weitergegeben. Lassen Sie das Feld frei, um den Wert aus der Umgebungsvariablen zu verwenden. Um einzustellen, welches Java von expecco verwendet werden soll, setzen Sie diesen Pfad in den Einstellungen für die Java-Bridge.&lt;br /&gt;
*&#039;&#039;&#039;ANDROID_HOME&#039;&#039;&#039;: Geben Sie hier den Pfad zu einem SDK von Android an. Dieser Pfad wird an jeden Appium-Server weitergegeben. Lassen Sie das Feld frei, um den Wert aus der Umgebungsvariablen zu verwenden.&lt;br /&gt;
*&#039;&#039;&#039;adb&#039;&#039;&#039;: Hier steht der Pfad zum adb-Befehl. Unter Windows heißt die Datei adb.exe. Diese wird von expecco beispielsweise verwendet, um die Liste der angeschlossenen Geräte zu erhalten. Diesen Pfad sollten Sie automatisch wählen lassen, da dann der Befehl im ANDROID_HOME-Verzeichnis verwendet wird. Dieser wird auch von Appium verwendet. Falls expecco und Appium jedoch verschiedene Versionen von adb verwenden kann es zu Konflikten kommen.&lt;br /&gt;
*&#039;&#039;&#039;android.bat&#039;&#039;&#039;: Diese Datei wird nur benötigt, um damit den AVD und den SDK Manager zu starten. Automatisch wird hier die Datei im ANDROID_HOME-Verzeichnis gesucht.&lt;br /&gt;
*&#039;&#039;&#039;aapt&#039;&#039;&#039;: Geben Sie hier den Pfad zum aapt-Befehl an. Unter Windows heißt diese Datei &#039;&#039;aapt.exe&#039;&#039;. expecco verwendet aapt nur im Verbindungseditor, um das Paket und die Activities einer apk-Datei zu lesen. Automatisch wird hier die Datei im ANDROID_HOME-Verzeichnis gesucht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingJavaBridgeEinstellungen.png | thumb | 400px | Konfiguration des JDKs]]&lt;br /&gt;
&lt;br /&gt;
Die Einstellung zur Serveradresse unten auf der Seite bezieht sich auf das Verhalten des Verbindungseditors. Dieser prüft am Ende, ob die Serveradresse auf &#039;&#039;/wd/hub&#039;&#039; endet, da dies die übliche Form ist. Falls nicht, wird in einem Dialog gefragt, wie darauf reagiert werden soll. Das festgelegte Verhalten kann hier eingesehen und verändert werden.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie ebenfalls zum Eintrag &#039;&#039;Java Bridge&#039;&#039; (s. Abb.). Hier muss der Pfad zu Ihrer Java-Installation angegeben werden, die von expecco benutzt wird. Tragen Sie hier ein JDK ein. Falls Sie unter Windows das aus dem Mobile Testing Supplement verwenden möchten, lautet der Pfad&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;C:\Program Files (x86)\exept\Mobile Testing Supplement\jdk&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Sie können auch die Systemeinstellungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Android-Gerät vorbereiten ==&lt;br /&gt;
Wenn Sie ein Android-Gerät unter Windows anschließen benötigen Sie möglicherweise noch einen adb-Treiber für das Gerät. Einen passenden Treiber finden Sie üblicherweise auf der jeweiligen Webseite des Herstellers. Haben Sie den Universal-Treiber aus dem Mobile Testing Supplement installiert, sollte bereits alles funktionieren und das Gerät korrekt erkannt werden.&lt;br /&gt;
&lt;br /&gt;
Bevor Sie ein Mobilgerät mit dem Appium-Plugin ansteuern können, müssen Sie für dieses Debugging erlauben. Für Android-Geräte finden Sie diese Option in den Einstellungen unter &#039;&#039;[https://www.droidwiki.de/wiki/Entwickleroptionen Entwickleroptionen]&#039;&#039; mit dem Namen &#039;&#039;[https://www.droidwiki.de/USB-Debugging USB-Debugging]&#039;&#039;. Falls die Entwickleroptionen nicht angezeigt werden, können Sie diese freischalten, indem Sie unter &#039;&#039;Über das Telefon&#039;&#039; siebenmal auf &#039;&#039;Build-Nummer&#039;&#039; tippen. Aktivieren Sie auch die Funktion &#039;&#039;Wach bleiben&#039;&#039;, damit das Gerät nicht während der Testerstellung oder -ausführung den Bildschirm abschaltet. Aus Sicherheitsgründen muss USB-Debugging für jeden Computer einzeln zugelassen werden. Beim Verbinden des Geräts mit dem PC über USB müssen Sie dabei am Gerät der Verbindung zustimmen. Falls Sie dies für Ihren Computer noch nicht getan haben, aber auf dem Gerät kein entsprechender Dialog erscheint, kann es helfen, das Gerät aus- und wieder einzustecken. Das kann insbesondere dann passieren, wenn Sie den ADB-Treiber installiert haben während das Gerät bereits über USB angeschlossen war.&lt;br /&gt;
&lt;br /&gt;
Sie können auch auf einem Emulator testen. Dieser muss nicht mehr gesondert vorbereitet werden, da er bereits für USB-Debugging ausgelegt ist. Es ist sogar möglich, einen Emulator bei Testbeginn zu starten.&lt;br /&gt;
&lt;br /&gt;
Um zu überprüfen, ob ein Gerät, das Sie an Ihren Rechner angeschlossen haben, verwendet werden kann, öffnen Sie den [[#Verbindungseditor|Verbindungseditor]]. Das Gerät sollte dort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Verbindung über WLAN ===&lt;br /&gt;
Es ist auch möglich, Android-Geräte über WLAN zu verbinden. Dazu müssen Sie zunächst das Gerät über USB mit dem Rechner verbinden. Öffnen Sie dann die Eingabeaufforderung und geben Sie dort&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb tcpip 5555&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Damit lauscht das Gerät auf eine TCP/IP-Verbindung an Port 5555. Sollten Sie mehrere Geräte angeschlossen oder Emulatoren laufen haben, müssen Sie genauer angeben, welches Gerät Sie meinen. Geben Sie in diesem Fall&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb devices -l&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Sie erhalten eine Liste aller Geräte, wobei die erste Spalte deren Kennung ist. Schreiben Sie dann stattdessen&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb -s &amp;lt;Gerätekennung&amp;gt; tcpip 5555&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
mit der Gerätekennung des gewünschten Geräts. Sie können die USB-Verbindung nun trennen. Jetzt müssen Sie die IP-Adresse Ihres Gerätes in Erfahrung bringen. Sie finden diese üblicherweise irgendwo in den Einstellungen des Geräts, beispielsweise beim Status oder in den WLAN-Einstellungen. Geben Sie dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb connect &amp;lt;IP-Adresse des Geräts&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Damit sollte das Gerät nun über WLAN verbunden sein und kann genauso verwendet werden, wie mit USB-Verbindung. Sie können dies überprüfen, indem Sie wieder &amp;lt;tt&amp;gt;adb devices -l&amp;lt;/tt&amp;gt; eingeben oder in expecco den Verbindungsdialog öffnen. In der Liste taucht das Gerät mit seiner IP-Adresse und dem Port auf.&lt;br /&gt;
&lt;br /&gt;
== iOS-Gerät und App vorbereiten ==&lt;br /&gt;
Das Ansteuern von iOS-Geräten ist nur über einen Mac möglich. Lesen Sie daher auch den Abschnitt zur [[#Mac_OS|Installation unter Mac OS]].&lt;br /&gt;
&lt;br /&gt;
Bevor Sie ein Mobilgerät mit dem Mobile Testing Plugin ansteuern können, müssen Sie für iOS-Geräte ab iOS 8 Debugging erlauben. Aktivieren Sie dazu die Option &#039;&#039;Enable UI Automation&#039;&#039; unter dem Menüpunkt &#039;&#039;Entwickler&#039;&#039; in den Einstellungen des Geräts. Falls Sie den Eintrag &#039;&#039;Entwickler&#039;&#039; in den Einstellungen nicht finden, gehen Sie wie folgt vor: Schließen Sie das Gerät über USB an den Mac an. Dabei müssen Sie ggf. am Gerät noch der Verbindung zustimmen. Starten Sie Xcode und wählen Sie dann in der Menüleiste am oberen Bildschirmrand im Menü &#039;&#039;Window&#039;&#039; den Eintrag &#039;&#039;Devices&#039;&#039;. Es öffnet sich ein Fenster, in dem eine Liste der angeschlossenen Geräte angezeigt wird. Wählen Sie dort Ihr Gerät aus. Danach sollte der Eintrag &#039;&#039;Entwickler&#039;&#039; in den Einstellungen auf dem Gerät auftauchen. Dazu müssen Sie möglicherweise die Einstellungen beenden und neu starten.&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.11 ===&lt;br /&gt;
Mit expecco 2.11 brauchen Sie keine Anpassungen an der App. Sie brauchen nur ein Entwicklerzertifikat in der Schlüsselbundverwaltung des Macs. Lesen Sie dazu den entsprechenden Abschnitt im Kapitel [[#Mac_OS | Installation und Aufbau für Mac OS]]. Geben Sie bei den Verbindungseinstellungen zusätzlich die Capability &#039;&#039;xcodeOrgId&#039;&#039; an und setzen Sie als Wert die Team-ID des Zertifikats. Lesen Sie dazu den [[#Erweiterte_Ansicht | Abschnitt zur erweiterten Ansicht des Verbindungsdialogs]].&lt;br /&gt;
=== expecco 2.10 ===&lt;br /&gt;
Die App, die Sie verwenden wollen, muss als Development-Build vorliegen. Außerdem muss die UDID des Geräts in der App hinterlegt sein.&lt;br /&gt;
&lt;br /&gt;
* Evaluierung mit Demo-App von eXept:&lt;br /&gt;
:Gerne stellen wir Ihnen eine Demo-App zur Verfügung, die als Development-Build vorliegt und die wir für Ihr Gerät signieren können. Senden Sie dazu bitte Ihrem eXept-Ansprechpartner die UDID Ihres Gerätes zu. Wie Sie die UDID Ihres Gerätes ermitteln können, ist im folgenden Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
* Eigene App für Ihr Testgerät verwenden:&lt;br /&gt;
:Wenn Sie von den App-Entwicklern einen Development-Build (IPA-Datei) erhalten, der für Ihr Testgerät zugelassen ist, können Sie diesen direkt verwenden. Dazu müssen Sie den Entwicklern die UDID Ihres Geräts mitteilen, damit sie diese eintragen können. &#039;&#039;&#039;Sie können die UDID eines Gerätes mithilfe von Xcode auslesen&#039;&#039;&#039;. Starten Sie dazu Xcode und wählen Sie in der Menüleiste am oberen Bildschirmrand im Menü &#039;&#039;Window&#039;&#039; den Eintrag &#039;&#039;Devices&#039;&#039;. Es öffnet sich ein Fenster, in dem eine Liste der angeschlossenen Geräte angezeigt wird. Wählen Sie Ihr Gerät aus und suchen Sie in Eigenschaften den Eintrag &#039;&#039;Identifier&#039;&#039;. Die UDID ist eine 40-stellige Hexadezimalzahl.&lt;br /&gt;
&lt;br /&gt;
* Extern entwickelte App für Ihr Testgerät umsignieren:&lt;br /&gt;
:Es können auch Apps umsigniert werden, damit Sie auf anderen Geräten lauffähig sind. Dieser Vorgang ist jedoch kompliziert und setzt insbesondere einen Zugang zu einem Apple-Developer-Account voraus. Eine Dokumentation zur Vorgehensweise ist derzeit in Vorbereitung.&lt;br /&gt;
&lt;br /&gt;
:Für die Evaluierung unterstützen wir Sie gerne beim Umsignieren Ihrer App.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Melden Sie sich beim [https://developer.apple.com/ Apple-Webinterface] an. Navigieren Sie zu &#039;&#039;Certificates, IDs &amp;amp; Profiles&#039;&#039;. Erzeugen Sie hier ggf. ein Developer-Zertifikat und ein Provisioning Profile für Ihr Gerät und laden Sie beide herunter. Sollten Sie noch keinen Developer Account haben, erstellen Sie hier einen: https://developer.apple.com/enroll/. Hierzu müssen Sie sich mit einer Apple-ID anmelden.&lt;br /&gt;
&lt;br /&gt;
# Team-ID herausfinden (&#039;&#039;Membership&#039;&#039; -&amp;gt; &#039;&#039;Team ID&#039;&#039;)&lt;br /&gt;
# Unter &#039;&#039;Certificates, IDs &amp;amp; Profiles&#039;&#039; Development-Zertifikat auswählen (unter &#039;&#039;+&#039;&#039; anlegen, falls nicht vorhanden) und herunterladen.&lt;br /&gt;
# Unter &#039;&#039;App ID&#039;&#039; Wildcard-App-ID erzeugen, falls nicht vorhanden. App-ID notieren (AppID = Prefix.ID)&lt;br /&gt;
# Gerät hinzufügen, dazu UDID (bzw. &#039;&#039;Identifier&#039;&#039;) des Geräts herausfinden (&#039;&#039;Xcode&#039;&#039; -&amp;gt; &#039;&#039;Window&#039;&#039; (oben in Menüleiste) -&amp;gt; &#039;&#039;Devices&#039;&#039;)&lt;br /&gt;
# Provisionen Profile erstellen: &#039;&#039;iOS App Development&#039;&#039; -&amp;gt; &#039;&#039;AppID&#039;&#039; auswählen -&amp;gt; Zertifikat wählen -&amp;gt; Gerät auswählen -&amp;gt; Profilname anlegen -&amp;gt; Provisioning Profile herunterladen.&lt;br /&gt;
# Das heruntergeladene Zertifikat importieren (&#039;&#039;Downloads&#039;&#039; -&amp;gt; Zertifikat (.cer) &lt;br /&gt;
# SHA1-Fingerabdruck kopieren. Dazu Rechtsklick auf Zertifikat  -&amp;gt; &#039;&#039;Information&#039;&#039;, anschließend bis zum Ende der Seite scrollen).&lt;br /&gt;
# Entitlements.plist erstellen (&#039;&#039;Terminal&#039; öffnen  -&amp;gt; &lt;br /&gt;
 Downloads/Mobile_Testing_Supplement/bin/gen-entitlements_plist &#039;Team-ID&#039; &#039;App ID&#039;  &lt;br /&gt;
 Downloads/Mobile_Testing_Supplement/bin/re-sign-ipa &amp;lt;Pfad zum ipa (z.B. Downloads/expeccoMobileDemo.ipa)&amp;gt; \&lt;br /&gt;
&amp;quot;&amp;lt;Zertifikat (SHA1-Fingerabdruck, z.B. 76 E8 4B E8 78 D5 D7 F9 2E 09 8B D7 E8 FB CE 30 0C F5 D0 EF)&amp;gt;&amp;quot; \&lt;br /&gt;
&amp;lt;Pfad zum Provisionen Profile (z.B. /Users/exept_test/Downloads/dut.mobileprovision)&amp;gt; \&lt;br /&gt;
&amp;lt;Pfad für das Ergebnis-ipa (z.B. Downloads/expeccoMobileDemo_re-signed.ipa)&amp;gt; \&lt;br /&gt;
 [Pfad zur entitlements.plist] (z.B. /Users/exept_test/entitlements.plist)&lt;br /&gt;
&lt;br /&gt;
Zum Umsignieren können Sie das entsprechende Script aus dem Mobile Testing Supplement für Mac OS oder jedes beliebige andere Tool (z.B. isign) verwenden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zur Verwendung von iOS-Geräten finden Sie auch in der [http://appium.io/slate/en/1.4/?java#appium-on-real-ios-devices Dokumentation von Appium].&lt;br /&gt;
&lt;br /&gt;
= Dialoge des Mobile Testing Plugins =&lt;br /&gt;
== Verbindungseditor ==&lt;br /&gt;
Mithilfe des Verbindungseditors können Sie schnell Verbindungen definieren, ändern oder aufbauen. Je nach Aufgabe weist der Dialog kleine Unterschiede auf und wird unterschiedlich geöffnet: &lt;br /&gt;
*Wenn Sie eine Verbindung aufbauen wollen, erreichen Sie den Dialog im GUI-Browser, indem Sie auf &#039;&#039;Verbinden&#039;&#039; klicken und dann &#039;&#039;Mobile Testing&#039;&#039; auswählen.&lt;br /&gt;
*Um eine bestehende Verbindung im GUI-Browser zu ändern oder zu kopieren, wählen Sie diese aus, machen einen Rechtsklick und wählen im Kontextmenü entsprechend &#039;&#039;Verbindung bearbeiten&#039;&#039; oder &#039;&#039;Verbindung kopieren&#039;&#039; aus.&lt;br /&gt;
*Wollen Sie Verbindungseinstellungen  nicht für den GUI-Browser sondern zur Verwendung in einem Test erstellen, wählen Sie im Menü des Mobile Testing Plugins den Punkt &#039;&#039;Verbindungseinstellungen erstellen...&#039;&#039;. Darüber können nur die Einstellungen für eine Verbindung erstellt werden, ohne dass eine Verbindung im GUI-Browser angelegt wird.&lt;br /&gt;
&lt;br /&gt;
Das Menü des Verbindungseditors weist verschiedenen Schaltflächen auf, von denen manche nur beim Erstellen von Verbindungseinstellungen sichtbar sind:&lt;br /&gt;
*&#039;&#039;Einstellungen löschen&#039;&#039;: Setzt alle Einträge zurück. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Einstellungen aus Datei laden&#039;&#039;: Erlaubt das Öffnen einer gespeicherten Einstellungsdatei (*.csf). Deren Einstellungen werden in den Dialog übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.&lt;br /&gt;
*&#039;&#039;Einstellungen aus Anhang laden&#039;&#039;: Erlaubt das Öffnen eines Anhangs mit Verbindungseinstellungen aus einem geöffneten Projekt. Diese Einstellungen werden in den Dialog übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.&lt;br /&gt;
*&#039;&#039;Einstellungen in Datei speichern&#039;&#039; und &#039;&#039;Einstellungen in Anhang speichern&#039;&#039;: Hier können Sie die eingetragenen Einstellungen in eine Datei (*.csf) speichern oder als Anhang in einem geöffneten Projekt anlegen. Beide Optionen besitzen ein verzögertes Menü, in dem Sie auswählen können, nur einen bestimmten Teil der Einstellungen zu speichern. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Erweiterte Ansicht&#039;&#039;: Damit können Sie in die erweiterte Ansicht wechseln, um zusätzliche Einstellungen vorzunehmen. Lesen Sie dazu mehr am Ende des Kapitels. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Hilfe&#039;&#039;: An der rechten Seite wird ein Hilfetext zum jeweiligen Schritt ein- oder ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Der Dialog ist in drei Schritte unterteilt. Im ersten Schritt wählen Sie das Gerät, das Sie verwenden möchten. Im oberen Teil erhalten Sie eine Liste aller angeschlossenen Geräte, die erkannt werden. Mit der Checkbox darunter können Sie die Geräte ausblenden, die zwar erkannt werden, aber nicht bereit sind. Falls Sie ein Gerät eintragen wollen, das nicht angeschlossen ist, können Sie dies mit dem entsprechenden Knopf &#039;&#039;Android-Gerät eingeben&#039;&#039; bzw. &#039;&#039;iOS-Gerät eingeben&#039;&#039; anlegen. Dazu müssen Sie jedoch die benötigten Eigenschaften Ihres Geräts kennen. Das Gerät wird dann in einer zweiten Geräteliste angelegt und kann dort ausgewählt werden. Wenn keine Liste mit angeschlossenen Elementen angezeigt werden kann, werden stattdessen verschiedene Meldungen angezeigt:&lt;br /&gt;
*Keine Geräte gefunden&lt;br /&gt;
*:expecco konnte keine Android-Geräte finden.&lt;br /&gt;
*:Um eine Verbindung zu einem Gerät automatisch zu konfigurieren, stellen Sie sicher, dass es&lt;br /&gt;
*:*angeschlossen ist&lt;br /&gt;
*:*eingeschaltet ist&lt;br /&gt;
*:*einen passenden adb-Treiber installiert hat&lt;br /&gt;
*:*für Debugging freigeschaltet ist.&lt;br /&gt;
*Keine verfügbaren Geräte gefunden&lt;br /&gt;
*:expecco konnte keine verfügbaren Android-Geräte finden. Es wurden aber nicht verfügbare gefunden, z.B. mit dem Status &amp;quot;unauthorized&amp;quot;.&lt;br /&gt;
*:Um eine Verbindung zu einem Gerät automatisch zu konfigurieren, stellen Sie sicher, dass es&lt;br /&gt;
*:*angeschlossen ist&lt;br /&gt;
*:*eingeschaltet ist&lt;br /&gt;
*:*einen passenden adb-Treiber installiert hat&lt;br /&gt;
*:*für Debugging freigeschaltet ist.&lt;br /&gt;
*:Um nicht verfügbare Geräte anzuzueigen, aktivieren Sie\unten diese Option.&lt;br /&gt;
*Verbindung verloren&lt;br /&gt;
*:expecco hat die Verbindung zum adb-Server verloren. Versuchen Sie die Verbindung wieder herzustellen, indem Sie auf den Button klicken.&lt;br /&gt;
*Verbindung fehlgeschlagen&lt;br /&gt;
*:expecco konnte sich nicht mit dem adb-Server\verbinden. Möglicherweise läuft er nicht oder der angegebene Pfad stimmt nicht.&lt;br /&gt;
*:Überprüfen Sie die adb-Konfiguration in den Einstellungen und versuchen Sie den adb-Server zu starten und eine Verbindung herzustellen indem Sie auf den Knopf klicken.&lt;br /&gt;
*Verbinden ...&lt;br /&gt;
*:expecco verbindet sich mit dem adb-Server. Dies kann einige Sekunden dauern.&lt;br /&gt;
*adb-Server starten ...&lt;br /&gt;
*:expecco startet den adb-Server. Dies kann einige Sekunden dauern.&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;Automatisierung durch&#039;&#039; können Sie angeben, welche Automation-Engine verwendet werden soll. Lassen Sie die Einstellung auf &#039;&#039;(Default)&#039;&#039; wird die entsprechende Capability gar nicht gesetzt. Ansonsten stehen Appium und Selendroid zur Verfügung. In der Regel wird Selendroid nur für Android-Geräte vor Version 4.1 gebraucht. Mit &#039;&#039;Weiter&#039;&#039; gelangen Sie zum nächsten Schritt. Wenn Sie Einstellungen für den GUI-Browser eingeben, ist das erst möglich, wenn ein Gerät ausgewählt wurde.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt können Sie Angaben zur App machen, die getestet werden soll. Dabei können Sie entscheiden, ob Sie eine App verwenden wollen, die bereits auf dem Gerät installiert ist, oder ob für den Test eine App installiert werden soll. Wählen Sie oben den entsprechenden Reiter aus. Je nachdem, ob Sie im vorigen Schritt ein Android- oder ein iOS-Gerät ausgewählt haben, ändert sich die erforderte Eingabe.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Android&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;App auf dem Gerät&#039;&#039;&lt;br /&gt;
**:Wenn Sie im ersten Schritt ein angeschlossenes Gerät ausgewählt haben, werden die Pakete aller installierten Apps automatisch abgerufen und Sie können die Auswahl aus den Drop-down-Listen treffen. Die installierten Apps sind in Fremdpakete und Systempakete unterteilt; wählen Sie die entsprechende Paketliste aus. Diese Auswahl gehört nicht zu den Einstellungen, sondern stellt nur die entsprechende Paketliste zur Verfügung. Sie können den Filter benutzen, um die Liste weiter einzuschränken und dann das gewünschte Paket auswählen. Die Activities des ausgwählten Pakets werden ebenfalls automatisch abgerufen und ebenfalls als Drop-down-Liste zur Verfügung gestellt. Wählen Sie die Activity aus, die gestartet werden soll. Falls es nur eine Activity gibt, wird diese sofort automatisch eingetragen. Falls Sie kein verbundenes Gerät verwenden, müssen Sie die Eingabe des Pakets und der Activity von Hand vornehmen.&lt;br /&gt;
**&#039;&#039;App installieren&#039;&#039;&lt;br /&gt;
**:Geben Sie bei &#039;&#039;App&#039;&#039; den Pfad zu einer App an. Der Pfad muss für den Appium-Server gültig sein, der verwendet wird. Sie können auch eine URL angeben. Benutzen Sie einen lokalen Appium-Server, können Sie den rechten Butten benutzen, um zu der Installationsdatei der App zu navigieren und diesen Pfad einzutragen. Wenn möglich werden dabei auch das entsprechende Paket und die Activity in den Feldern darunter eingetragen. Diese Angabe ist aber nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;iOS&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;App auf dem Gerät&#039;&#039;&lt;br /&gt;
**:Geben Sie die Bundle-ID einer installierten App an. Sie können die IDs der installierten Apps bspw. mithilfe von Xcode erfahren.&lt;br /&gt;
**&#039;&#039;App installieren&#039;&#039;&lt;br /&gt;
**:Geben Sie bei &#039;&#039;App&#039;&#039; den Pfad zu einer App an. Der Pfad muss für den Appium-Server gültig sein, der verwendet wird. Sie können auch eine URL angeben. Für reale Geräte muss diese App ein signierter Development-Build sein.&lt;br /&gt;
&lt;br /&gt;
Im unteren Teil können Sie festlegen, ob die App beim Verbindungsabbau zurückgesetzt bzw. deinstalliert werden soll, und ob sie initial zurückgesetzt werden soll. Auch hier wird die entsprechende Capability gar nicht gesetzt, wenn Sie &#039;&#039;(Default)&#039;&#039; auswählen. Mit &#039;&#039;Weiter&#039;&#039; gelangen Sie zum nächsten Schritt.&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt befindet sich zunächst im oberen Teil eine Liste aller Capabilities, die sich aus Ihren Angaben der vorigen Schritte ergeben. Wenn Sie sich mit Appium auskennen und noch zusätzliche Capabilities setzen möchten, die der Verbindungseditor nicht abdeckt, können Sie durch Klicken auf &#039;&#039;Bearbeiten&#039;&#039; in die erweiterte Ansicht gelangen. Lesen Sie dazu den Abschnitt weiter unten.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie Einstellungen für den GUI-Browser eingeben, können Sie den &#039;&#039;Verbindungsnamen&#039;&#039; eintragen, mit dem die Verbindung angezeigt wird. Dies ist auch der Name unter dem Bausteine diese Verbindung verwenden können, wenn sie aufgebaut ist. Wenn Sie das Feld frei lassen, wird ein Name generiert. Um die Adresse für den Appium-Server anzugeben, erhalten Sie die lokale Stadard-Adresse und bereits verwendete Adressen zur Auswahl. Wenn Sie den Haken für &#039;&#039;Bei Bedarf starten&#039;&#039; setzen, versucht expecco beim Verbinden einen Appium-Server an der angegebenen Adresse zu starten, wenn dort noch keiner läuft. Dieser Server wird dann beim Beenden der Verbindung ebenfalls heruntergefahren. Dies funktioniert nur für lokale Adressen. Achten Sie darauf, nur Portnummern zu verwenden, die auch frei sind. Verwenden Sie am besten nur ungerade Portnummern ab dem Standardport 4723. Beim Verbindungsaufbau wird ebenfalls die folgende Portnummer verwendet, wodurch es sonst zu Konflikten kommen könnte.&lt;br /&gt;
&lt;br /&gt;
Je nachdem, wie Sie den Dialog geöffnet haben, gibt es nun verschiedene Schaltflächen um ihn abzuschließen. In jedem Fall haben Sie die Option zu speichern. Dabei öffnet sich ein Dialog, indem Sie entweder ein geöffnet Projekt auswählen können, um die Einstellungen dort als Anhang zu speichern, oder auswählen es in einer Datei zu speichern, die Sie anschließend angeben können. Durch das Speichern wird der Dialog nicht beendet, wodurch Sie anschließend noch eine andere Option auswählen könnten.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Editor zum Verbindungsaufbau geöffnet haben, können Sie abschließend auf &#039;&#039;Verbinden&#039;&#039; oder &#039;&#039;Server starten und verbinden&#039;&#039; klicken, je nachdem, ob der Haken für den Serverstart gesetzt ist. Für das Ändern oder Kopieren einer Verbindung im GUI-Brower heißt diese Option &#039;&#039;Übernehmen&#039;&#039;, da in diesem Fall nur der Verbindungseintrag geändert bzw. neu angelegt wird, der Verbindungsaufbau aber nicht gestartet wird. Das können Sie bei Bedarf anschließend über das Kontextmenü tun. Falls Sie Capabilities einer bestehenden Verbindung geändert haben, fordert Sie anschließend ein Dialog auf zu entscheiden, ob diese Änderungen direkt übernommen werden sollen, indem die Verbindung abgebaut und mit den neuen Verbindungen aufgebaut wird, oder nicht. In diesem Fall werden die Änderungen erst wirksam, nachdem Sie die Verbindung neu aufbauen.&lt;br /&gt;
&lt;br /&gt;
Zur Verwendung des Verbindungseditors lesen Sie auch den entsprechenden Abschnitt im jeweiligen Tutorial in Schritt 1 (Android: [[#Schritt_1:_Demo_ausf.C3.BChren|Demo ausführen]], iOS: [[#Schritt_1:_Demo_ausf.C3.BChren_2|Demo ausführen]]).&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Ansicht ===&lt;br /&gt;
Die erweiterte Ansicht des Verbindungseditors erhalten Sie entweder durch Klicken auf &#039;&#039;Bearbeiten&#039;&#039; im dritten Schritt oder jederzeit über den entsprechenden Menüeintrag, wenn Sie den Editor über das Plugin-Menü gestartet haben. In dieser Ansicht erhalten Sie eine Liste aller eingestellten Appium-Capabilities. Zu dieser können Sie weitere hinzufügen, Einträge ändern oder entfernen. Um eine Capability hinzuzufügen, wählen Sie diese aus der Drop-down-Liste des Eingabefelds aus. In dieser befinden sich alle bekannten Capabilities sortiert in die Kategorien &#039;&#039;Common&#039;&#039;, &#039;&#039;Android&#039;&#039; und &#039;&#039;iOS&#039;&#039;. Haben Sie eine Capability ausgewählt, wird ein kurzer Informationstext dazu angezeigt. Sie können in das Feld auch von Hand eine Capability eingeben. Klicken Sie dann auf &#039;&#039;Hinzufügen&#039;&#039;, um die Capabilitiy in die Liste einzutragen. Dort können Sie in der rechten Spalte den Wert setzen. Um einen Entrag zu löschen, wählen Sie diesen aus und klicken Sie auf &#039;&#039;Entfernen&#039;&#039;. Mit &#039;&#039;Zurück&#039;&#039; verlassen Sie die erweiterte Ansicht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingErweiterteAnsicht.png]]&lt;br /&gt;
&lt;br /&gt;
== Laufende Appium-Server ==&lt;br /&gt;
Im Menü des Mobile Testing Plugins finden Sie den Eintrag &#039;&#039;Appium-Server...&#039;&#039;. Mit diesem öffnen Sie ein Fenster mit einer Übersicht aller Appium-Server, die von expecco gestartet wurden und auf welchem Port diese laufen. Durch Klicken auf das Icon in der Spalte &#039;&#039;Log anzeigen&#039;&#039; können Sie das Logfile des entsprechenden Servers anschauen. Dieses wird beim Beenden des Servers wieder gelöscht. Mit den icons in der Spalte &#039;&#039;Beenden&#039;&#039; kann der entsprechenden Server beendet werden. Allerdings wird dies verhindert, wenn expecco über diesen Server noch eine offene Verbindung hat.&lt;br /&gt;
&lt;br /&gt;
Außerdem können Sie hier auch Server starten. Verwenden Sie die Eingabefelder zur Konfiguration der Serveradresse. Sie können die Felder auch frei lassen, um die Standardwerte zu verwenden. Bitte beachten Sie, dass Server nur lokal gestartet werden können und der gewählte Port nicht belegt sein darf. Typischerweise werden die ungeraden Portnummern ab 4723 verwendet. Die folgende Portnummer wird beim Verbinden mit einem Gerät ebenfalls benötigt, wodurch es mit den geraden Nummern zu Konflikten kommen könnte.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppiumServer.png]]&lt;br /&gt;
&lt;br /&gt;
Im Menü des Mobile Testing Plugins finden Sie auch den Eintrag &#039;&#039;Alle Verbindungen und Server beenden&#039;&#039;. Dies ist für den Fall gedacht, dass Verbindungen oder Server auf andere Weise nicht beendet werden können. Beenden Sie Verbindungen wenn möglich immer im GUI-Browser oder durch Ausführen eines entsprechenden Bausteins. Server, die Sie in der Server-Übersicht gestartet haben, beenden Sie dort; Server, die mit einer Verbindung gestartet wurden, werden automatisch mit dieser beendet.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass in der Übersicht nur Server aufgelistet sind, die von expecco gestartet und verwaltet werden. Mögliche andere Appium-Server, die auf andere Art gestartet wurden, werden nicht erkannt.&lt;br /&gt;
&lt;br /&gt;
== Recorder ==&lt;br /&gt;
Besteht im GUI-Browser eine Verbindung zu einem Gerät, kann der integrierte Recorder verwendet werden, um mit diesem Gerät einen Testabschnitt aufzunehmen. Sie starten den Recorder, indem Sie im GUI-Browser die entsprechende Verbindung auswählen und dann auf den Aufname-Knopf klicken. Für den Recorder öffnet sich ein neues Fenster. Die aufgezeichneten Aktionen werden im Arbeitsbereich des GUI-Browsers angelegt. Daher ist es möglich, das Aufgenommene parallel zu editieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder.png|caption|]]&lt;br /&gt;
&lt;br /&gt;
;Komponenten des Recorderfensters&lt;br /&gt;
#&#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;: Holt das aktuelle Bild und den aktuellen Elementbaum vom Gerät. Dies wird nötig, wenn das Gerät zur Ausführung einer Aktion länger braucht oder sich etwas ohne das Anstoßen durch den Recorder ändert.&lt;br /&gt;
#&#039;&#039;&#039;Follow-Mouse&#039;&#039;&#039;: Das Element unter dem Mauszeiger wird im GUI-Browser markiert.&lt;br /&gt;
#&#039;&#039;&#039;Highlight-Selected&#039;&#039;&#039;: Das Elements unter dem Mauszeiger wird rot umrandet.&lt;br /&gt;
#&#039;&#039;&#039;Show-Bounds&#039;&#039;&#039;: Die Rahmen aller Elemente der Ansicht werden angezeigt.&lt;br /&gt;
#&#039;&#039;&#039;Werkzeuge&#039;&#039;&#039;: Auswahl, mit welchem Werkzeg aufgenommen werden soll. Die gewählte Aktion wird bei einem Klick auf die Anzeige ausgelöst. Dabei stehen folgende Aktionen zur Verfügung:&lt;br /&gt;
#*Aktionen auf Elemente:&lt;br /&gt;
#**Klicken: Kurzer Klick auf das Element über dem der Cursor steht. Zur genaueren Bestimmung, welches Element verwendet wird, benutzen Sie die Funktion Follow-Mouse oder Highlight-Selected.&lt;br /&gt;
#**Element antippen: Ähnlich zum Klicken, nur dass zusätzlich die Dauer des Klicks aufgezeichnet wird. Dadurch sind auch längere Klicks möglich.&lt;br /&gt;
#**Text anhängen: Ermöglicht das Hinzufügen eines Textes in Eingabefelder.&lt;br /&gt;
#**Text löschen: Löscht den Text eines Eingabefelds.&lt;br /&gt;
#*Aktionen auf das Gerät:&lt;br /&gt;
#**Antippen: Löst einen Klick auf die Bildschirmposition aus, bei dem auch die Dauer berücksichtigt wird.&lt;br /&gt;
#**Wischen: Wischen in einer geraden Linie vom Punkt des Drückens des Mausknopfes bis zum Loslassen. Die Dauer wird ebenfalls aufgezeichnet.&lt;br /&gt;
#:Beachten Sie bei diesen Aktionen, dass das Ergebnis sich auf verschiedenen Geräten unterscheiden kann, bspw. bei verschiedenen Bildschirmauflösungen.&lt;br /&gt;
#*Erstellen von Testablauf-Bausteinen&lt;br /&gt;
#**Attribut prüfen: Vergleicht den Wert eines festgelegten Attributs des Elements mit einem vorgegebenen Wert. Das Ergebnis triggert den entsprechenden Ausgang.&lt;br /&gt;
#**Attribut zusichern: Vergleicht den Wert eines festgelegten Attributs des Elements mit einem vorgegebenen Wert. Bei Ungleichheit schlägt der Test fehl.&lt;br /&gt;
#*Auto&lt;br /&gt;
#:Ist das Auto-Werkzeug ausgewählt, können alle Aktionen durch spezifische Eingabeweise benutzt werden: &#039;&#039;Klicken&#039;&#039;, &#039;&#039;Element antippen&#039;&#039; und &#039;&#039;Wischen&#039;&#039; funktionieren weiterhin durch Klicken, wobei sie anhand der Dauer und der Bewegung des Cursors unterschieden werden. Um ein &#039;&#039;Antippen&#039;&#039; auszulösen, halten Sie beim Klicken Strg gedrückt. Die übrigen Aktionen erhalten Sie durch einen Rechtsklick auf das Element in einem Kontextmenü.&lt;br /&gt;
#&#039;&#039;&#039;Softkeys&#039;&#039;&#039;: Nur unter Android. Simuliert das Drücken der Knöpfe Zurück, Home, Fensterliste und Power.&lt;br /&gt;
#&#039;&#039;&#039;Anzeige&#039;&#039;&#039;: Zeigt einen Screenshot des Geräts. Aktionen werden mit der Maus je nach Werkzeug ausgelöst. Wenn eine neue Aktion eingegeben werden kann, hat das Fenster einen grünen Rahmen, sonst ist er rot.&lt;br /&gt;
#&#039;&#039;&#039;Fenster an Bild anpassen&#039;&#039;&#039;: Ändert die Größe des Fensters so, dass der Screenshot vollständig angezeigt werden kann.&lt;br /&gt;
#&#039;&#039;&#039;Bild an Fenster anpassen&#039;&#039;&#039;: Skaliert den Screenshot auf eine Größe, mit der er die volle Größe des Fensters ausnutzt.&lt;br /&gt;
#&#039;&#039;&#039;Ausrichtung anpassen&#039;&#039;&#039;: Korrigiert das Bild, falls dieses auf dem Kopf stehen sollte. Über den Pfeil rechts daneben kann das Bild auch um 90° gedreht werden, falls dies einmal nötig sein sollte. Die Ausrichtung des Bildes ist für die Funktion des Recorders unerheblich, dieser arbeitet ausschließlich auf den erhaltenen Elementen.&lt;br /&gt;
#&#039;&#039;&#039;Skalierung&#039;&#039;&#039;: Ändert die Skalierung des Screenshots. Kann auch über den Schieberegler rechts daneben angepasst werden.&lt;br /&gt;
#&#039;&#039;&#039;Kontrollleuchte&#039;&#039;&#039;: Zeigt den Zustand des Recorders an&lt;br /&gt;
#:&#039;&#039;grün&#039;&#039;: Der Recorder ist bereit&lt;br /&gt;
#:&#039;&#039;rot&#039;&#039;: Der Recorder ist blockiert, weil die Anzeige und die Elementliste aktualisiert werden&lt;br /&gt;
#:&#039;&#039;grau&#039;&#039;: Der Recorder kann nicht mehr verwendet werden, da die Verbindung zum Gerät verloren gegangen ist&lt;br /&gt;
&lt;br /&gt;
;Verwendung&lt;br /&gt;
Mit jedem Klick im Fenster wird eine Aktion ausgelöst und im Arbeitsbereich des GUI-Browsers aufgezeichnet. Dort können Sie das Aufgenommene abspielen, editieren oder daraus einen neuen Baustein erstellen. Zur Verwendung des Recorders lesen Sie auch Schritt 2 im Tutorial ([[#Schritt_2:_Einen_Baustein_mit_dem_Recorder_erstellen|Android]] bzw. [[#Schritt_2:_Einen_Baustein_mit_dem_Recorder_erstellen_2|iOS]]).&lt;br /&gt;
&lt;br /&gt;
== AVD Manager und SDK Manager ==&lt;br /&gt;
AVD Manager und SDK Manager sind beides Anwendungen von Android. Im Menü des Mobile Testing Plugins bietet expecco die Möglichkeit, diese zu starten. Ansonsten finden Sie diese Programme bei Ihrer Android-Installation. Mit dem AVD Manager können Sie AVDs, also Konfigurationen für Emulatoren, erstellen, bearbeiten und starten. Mit dem SDK Manager erhalten Sie einen Überblick über Ihre Android-Installation und können diese bei Bedarf erweitern.&lt;br /&gt;
&lt;br /&gt;
= XPath anpassen mithilfe des GUI-Browsers =&lt;br /&gt;
Bausteine, die auf einem Gerät fehlerfrei funktionieren, tun dies auf anderen Geräten möglicherweise nicht. Auch können kleine Änderungen der App dazu führen, dass ein Baustein nicht mehr den gewünschten Effekt hat. Man sollte einen Baustein daher so robust formulieren, dass er für eine Vielzahl von Geräten verwendet werden kann und kleine Anpassungen an der App verkraftet. Dazu muss man das grundlegende Funktionsprinzip der Adressierung verstehen. Dies wird im Folgenden am Beispiel der App aus dem Tutorial erläutert.&lt;br /&gt;
&lt;br /&gt;
Die Ansicht der App setzt sich aus einzelnen Elementen zusammen. Dazu gehören die Schaltflächen &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; und &#039;&#039;Verify&#039;&#039;, das Eingabefeld der Zahl &#039;&#039;4006381333986&#039;&#039; und das Ergebnisfeld, in dem OK erscheint, wie auch alle anderen auf der Anzeige sichtbaren Dinge. Diese sichtbaren Elemente sind in unsichtbare Strukturelemente eingebettet. Alle Elemente zusammen sind in einer zusammenhängenden Hierarchie, dem Elementbaum, organisiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGUIBrowser.png | frame | left | Abb. 1: Funktionen des GUI-Browsers]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Sie können sich diesen Baum im GUI-Browser ansehen. Wechseln Sie dazu in den GUI-Browser (Abb. 1) und starten Sie eine beliebige Verbindung. Sobald die Verbindung aufgebaut ist, können Sie den gesamten Baum aufklappen (1) (Klick bei gedrückter Strg-Taste). Er enthält alle Elemente der aktuellen Seite der App.&lt;br /&gt;
&lt;br /&gt;
Ein Baustein, der nun ein bestimmtes Element verwendet, muss dieses eindeutig angeben, indem er dessen Position im Elementbaum mit einem Pfad im XPath-Format beschreibt. Dieses Format ist ein verbreiteter Web-Standard für XML-Dokumente und -Datenbanken, eignet sich aber genauso für Pfade im Elementbaum.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Element im Baum auswählen, wird unten der von expecco automatisch generierte XPath (2) für das Element angezeigt, der auch beim Aufzeichnen verwendet wird. Oberhalb davon in der Mitte des Fensters befindet sich eine Liste der Eigenschaften (3) des ausgewählten Elements. Man nennt diese Eigenschaften auch Attribute. Sie beschreiben das Element näher wie beispielsweise seinen Typ, seinen Text oder andere Informationen zu seinem Zustand. Links unten können Sie zur besseren Orientierung im Baum die &#039;&#039;Vorschau&#039;&#039; (4) aktivieren, um sich den Bildausschnitt des Elements anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Der Elementbaum für gleiche Ansicht einer App kann sich je nach Gerät unterscheiden. Es sind diese Unterschiede, die verhindern, eine Aufnahme von einem Gerät unverändert auch auf allen anderen Geräten abzuspielen: Ein XPath, der im einen Elementbaum ein bestimmtes Element identifiziert, beschreibt nicht unbedingt das gleiche Element im Elementbaum auf einem anderen Gerät. Es kann stattdessen passieren, dass der XPath auf kein Element, auf ein falsches Element oder auf mehrere Elemente passt. Dann schlägt der Test fehl oder er verhält sich unerwartet.&lt;br /&gt;
&lt;br /&gt;
Man könnte natürlich für jedes Gerät einen eigenen Testfall schreiben. Das brächte aber unverhältnismäßigen Aufwand bei Testerstellung und -wartung mit sich. Das Problem lässt sich auch anders lösen, da ein jeweiliges Element nicht nur durch genau einen XPath beschrieben wird. Vielmehr erlaubt der Standard mithilfe verschiedener Merkmale unterschiedliche Beschreibungen für ein und dasselbe Element zu formulieren. Das Ziel ist daher, einen Pfad zu finden, der auf allen für den Test verwendeten Geräten funktioniert und überall eindeutig zum richtigen Element führt.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel besteht die Verbindung zur Android-App aus dem Tutorial und der Eintrag des GTIN-13-Buttons ist ausgewählt (5). Dessen automatisch generierter XPath (2) kann beispielsweise so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[@resource id=&#039;android:id/content&#039;]/android.widget.RelativeLayout/android.widget.Button[@resource-id=&#039;de.exept.expeccomobiledemo:id/gtin_13&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Er ist offensichtlich lang und unübersichtlich. Der sehr viel kürzere Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//*[@text=&#039;GTIN-13 (EAN-13)&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
führt zum selben Element.&lt;br /&gt;
&lt;br /&gt;
Für die iOS-App lautet der automatisch generierte XPath für diesen Button beispielsweise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//AppiumAUT/UIAApplication/UIAWindow[1]/UIAButton[2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und kann kürzer als&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//*[@name=&#039;GTIN-13 (EAN-13)&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Sie können den Pfad entsprechend im GUI-Browser ändern und durch &#039;&#039;Pfad überprüfen&#039;&#039; (6) feststellen, ob er weiterhin auf das ausgewählte Element zeigt, was expecco mit &#039;&#039;Verify Path: OK&#039;&#039; (7) bestätigen sollte. Der erste, sehr viel längere Pfad, beschreibt den gesamten Weg vom obersten Element des Baumes bis hin zum gesuchten Button. Der zweite Pfad hingegen wählt mit * zunächst sämtliche Elemente des Baumes und schränkt die Auswahl dann auf genau die Elemente ein, die ein &#039;&#039;text&#039;&#039;- bzw. &#039;&#039;name&#039;&#039;-Attribut mit dem Wert &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; besitzen, in unserem Fall also genau der eine Button, den wir suchen.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden Android-ähnliche Pfade zur Veranschaulichung verwendet. Die Elemente in iOS-Apps heißen zwar anders, wodurch andere Pfade entstehen; das Prinzip ist jedoch das gleiche.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBaum1.png | frame | Abb. 2: Elementbaum einer fiktiven App]]&lt;br /&gt;
&lt;br /&gt;
Sie können solche Pfade mit Hilfe weniger Regeln selbst formulieren. Sehen Sie sich den einfachen Baum einer fiktiven Android-App in Abb. 2 an: Die Einrückungen innerhalb des Baumes geben die Hierarchie der Elemente wieder. Ein Element ist ein &#039;&#039;Kind&#039;&#039; eines anderen Elementes, wenn jenes andere Element das nächsthöhere Element mit einem um eins geringeren Einzug ist. Jenes Element ist das &#039;&#039;Elternelement&#039;&#039; des Kindes. Sind mehrere untereinander stehende Elemente gleich eingerückt, so sind sie also alle Kinder desselben Elternelements.&lt;br /&gt;
&lt;br /&gt;
Ein Pfad durch alle Ebenen der Hierarchie zum TextView-Element ist nun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Elemente sind mit Schrägstrichen voneinander getrennt. Es fällt auf, dass der Name des ersten Elements nicht mit dem im Baum übereinstimmt. Das oberste Element in der Hierarchie heißt immer &#039;&#039;hierarchy&#039;&#039; (für iOS wäre es &#039;&#039;AppiumAUT&#039;&#039;), expecco zeigt im Baum stattdessen den Namen der Verbindung an, damit man mehrere Verbindungen voneinander unterscheiden kann. Die weiteren Elemente tragen jeweils das Präfix &#039;&#039;android.widget.&#039;&#039;, das im Baum zur besseren Übersicht nicht angezeigt wird (bei IOS gibt es kein Präfix). Mit jedem Schrägstrich führt der Pfad über eine Eltern-Kind-Beziehung in eine tiefere Hierarchie-Ebene, d. h. &#039;&#039;FrameLayout&#039;&#039; ist ein Kindelement von &#039;&#039;hierarchy&#039;&#039;, &#039;&#039;LinearLayout&#039;&#039; ist ein Kind von &#039;&#039;FrameLayout&#039;&#039; usw. Die in eckigen Klammern geschriebenen Wörter dienen nur als Orientierungshilfe im Baum. Sie gehören nicht zum Typ.&lt;br /&gt;
&lt;br /&gt;
Ein Pfad muss nicht beim Element &#039;&#039;hierarchy&#039;&#039; beginnen. Man kann den Pfad beginnend mit einem beliebigen Element des Baumes bilden. Man kann also verkürzt auch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.TextView&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
schreiben. Der Pfad führt zum selben &#039;&#039;TextView&#039;&#039;-Element, da es nur ein Element dieses Typs gibt. Anders verhält es sich bei dem Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da es zwei Elemente vom Typ &#039;&#039;Button&#039;&#039; gibt, passt dieser Pfad auf zwei Elemente, nämlich den Button, der mit &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; markiert ist, und den &#039;&#039;Button&#039;&#039;, der mit &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; markiert ist. Es würde an dieser Stelle aber auch nicht helfen den langen Pfad von &#039;&#039;hierarchy&#039;&#039; aus beginnend anzugeben. Um einen mehrdeutigen Pfad weiter zu differenzieren, kann man explizit ein Element aus einer Menge wählen, indem man den numerischen Index in eckigen Klammern dahinter schreibt. Der Pfad aus dem obigen Beispiel lässt sich damit so anpassen, dass er eindeutig auf den &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; weist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button[1].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ihnen fällt sicher auf, dass der Index eine 1 ist obwohl das zweite Element gemeint ist. Das kommt daher, dass die Zählung bei 0 beginnt. Der Button mit der Markierung &amp;quot;An&amp;quot; hat also die Nummer 0 und der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; hat die Nummer 1.&lt;br /&gt;
&lt;br /&gt;
Dieser Ansatz, einen expliziten Index zu verwenden, hat zwei Nachteile: Zum einen lässt sich an dem Pfad nur schwer ablesen welches Element gemeint ist, zum andern ist der Pfad sehr empfindlich schon gegenüber kleinsten Änderungen, wie zum Beispiel dem Vertauschen der beiden &#039;&#039;Button&#039;&#039;-Elemente oder dem Einfügen eines weiteren &#039;&#039;Button&#039;&#039;-Elements in der App.&lt;br /&gt;
&lt;br /&gt;
Es wäre daher wünschenswert, das gemeinte Element über eine ihm charakteristische Eigenschaft wie einem Attributwert, zu adressieren. Der XPath-Standard erlaubt solche Auswahlbedingungen zu einem Element anzugeben. Angenommen, der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; hat die Eigenschaft &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;off&#039;&#039; und der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; hat als &#039;&#039;resource-id&#039;&#039; den Wert &#039;&#039;on&#039;&#039;, dann kann man als eindeutigen Pfad für den &amp;quot;Aus&amp;quot;-&#039;&#039;Button&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button[@resource-id=&#039;off&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
formulieren. Wie an dem Beispiel zu sehen werden solche Bedingungen wie ein Index in eckigen Klammern an den Elementtyp angehängt. Der Name eines Attributes wird mit einem @ eingeleitet und der Wert mit einem = in Anführungszeichen angehängt. Ist der Attributwert global eindeutig, kann man den vorausgehenden Pfad sogar durch den globalen Platzhalter * ersetzen, der auf jedes Element passt. Das obige Beispiel mit dem GTIN-13-&#039;&#039;Button&#039;&#039; war ein solcher Fall.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBaum2.png | frame | Abb. 3: Elementbaum einer fiktiven App mit Erweiterungen]]&lt;br /&gt;
&lt;br /&gt;
Abb. 3 zeigt eine Erweiterung des Beispiels aus Abb. 2. Die App hat nun ein weiteres, nahezu identisches &#039;&#039;LinearLayout&#039;&#039; bekommen. Die &#039;&#039;Buttons&#039;&#039; sind in ihren Attributen jeweils ununterscheidbar. Deshalb funktioniert der vorige Ansatz nicht, einen eindeutigen Pfad nur mithilfe eines Attributwerts zu formulieren. Offensichtlich unterscheiden sich aber ihre benachbarten &#039;&#039;TextViews&#039;&#039;. Es ist möglich die jeweilige &#039;&#039;TextView&#039;&#039; in den Pfad mit aufzunehmen, um einen &#039;&#039;Button&#039;&#039; dennoch eindeutig zu adressieren. Ein Pfad zum &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; unterhalb der &#039;&#039;TextView&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Druckschalter&#039;&#039;&amp;quot; kann dabei wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.TextView[@resource-id=&#039;push&#039;]/../android.widget.Button[@resource-id=&#039;on&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Teil beschreibt den Pfad zu der &#039;&#039;TextView&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Druckschalter&#039;&#039;&amp;quot; und der &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;push&#039;&#039;. Danach folgt ein Schrägstrich gefolgt von zwei Punkten. Die zwei Punkte sind eine spezielle Elementbezeichnung, die nicht ein Kindelement benennt, sondern zum Elternelement wechselt, in diesem Fall also das &#039;&#039;LinearLayout&#039;&#039;, in dem die &#039;&#039;TextView&#039;&#039; eingebettet ist. Im Kontext dieses &#039;&#039;LinearLayout&#039;&#039; ist der restliche Pfad, nämlich der &#039;&#039;Button&#039;&#039; mit der &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;on&#039;&#039;, eindeutig.&lt;br /&gt;
&lt;br /&gt;
Der XPath-Standard bietet noch sehr viel mehr Ausdrucksmittel. Mit der hier knapp vorgestellten Auswahl ist es aber bereits möglich für die meisten praktischen Testfälle gute Pfade zu formulieren. Eine vollständige Einführung in XPath ginge über den Umfang dieser Einführung weit hinaus. Sie finden zahlreiche weiterführende Dokumentationen im Web und in Büchern.&lt;br /&gt;
&lt;br /&gt;
Eine universelle Strategie zum Erstellen guter XPaths gibt es nicht, da sie von den Testanforderungen abhängt. In der Regel ist es sinnvoll, den XPath kurz und dennoch eindeutig zu halten. Häufig lassen sich Elemente über Eigenschaften identifizieren wie beispielsweise ihren Text. Will man aber gerade den Text eines Elements auslesen, kann dieser natürlich nicht im Pfad verwendet werden, da er vorher nicht bekannt ist. Ebenso wird der Text variieren, wenn die App mit verschiedenen Sprachen gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Jeder Baustein, der auf einem Element arbeitet, hat einen Eingangspin für den XPath. Im GUI-Browser finden Sie in der Mitte oben eine Liste von Bausteinen mit Aktionen, die Sie auf das ausgewählte Element anwenden können. Suchen Sie den Baustein &#039;&#039;Click&#039;&#039; (8) im Ordner Elements und wählen Sie ihn aus (Abb. 1). Er wird im rechten Teil unter &#039;&#039;Test&#039;&#039; eingefügt, der Pin für den XPath ist mit dem automatisch generierten Pfad des Elements vorbelegt (9). Sie können den Baustein hier auch ausführen. Die Ansicht wechselt dann auf &#039;&#039;Lauf&#039;&#039;. Ändert sich durch die Aktion der Zustand Ihrer App, müssen Sie den Baum anschließend aktualisieren (10).&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in der unteren Liste eine Eigenschaft auswählen, wechselt die Anzeige der Bausteine zu &#039;&#039;Eigenschaften&#039;&#039;, wo Sie die eigenschaftsbezogenen Bausteine finden. Wie bei den Aktionen können Sie auch hier einen Baustein auswählen, der dann rechts in Test mit dem Pfad des Elements und der ausgewählten Eigenschaft eingetragen wird, sodass Sie ihn direkt ausführen können.&lt;br /&gt;
&lt;br /&gt;
= Beispiele =&lt;br /&gt;
Bei den Demo-Testsuiten für expecco finden Sie auch Beispiele für Tests mit dem Mobile Testing Plugin. Die beginnen jeweils mit dem Buchstaben &#039;&#039;m&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Mobile Testing Demo ==&lt;br /&gt;
Die Testsuite enthält zwei einfache Testpläne: &#039;&#039;Simple CalculatorTest&#039;&#039; und &#039;&#039;Complex Calculator and Messaging Test&#039;&#039;. Beide Tests verwenden einen Android-Emulator, den Sie vor Beginn starten müssen. Die Apps, die im Test verwendet werden, gehören zur Grundausstattung des Emulators und müssen daher nicht mehr installiert werden. Da sich die Apps unter jeder Android-Version unterscheiden können, ist es wichtig, dass Ihr Emulator unter Android 6.0 läuft. Außerdem muss die Sprache auf Englisch gestellt sein.&lt;br /&gt;
&lt;br /&gt;
; Simple CalculatorTest&lt;br /&gt;
: Dieser Test verbindet sich mit dem Taschenrechner und gibt die Formel &#039;&#039;2+3&#039;&#039; ein. Das Ergebnis des Rechners wird mit dem erwarteten Wert &#039;&#039;5&#039;&#039; verglichen.&lt;br /&gt;
&lt;br /&gt;
; Complex Calculator and Messaging Test&lt;br /&gt;
: Dieser Test verbindet sich mit dem Taschenrechner und öffnet anschließend den Nachrichtendienst. Dort wartet er auf eine einkommende Nachricht von der Nummer &#039;&#039;15555215556&#039;&#039;, in der eine zu berechnende Formel gesendet wird. Die Nachricht wird zuvor über einen Socket beim Emulator erzeugt. Nach dem Eintreffen der Nachricht wird diese vom Test geöffnet und deren Inhalt gelesen. Danach wird wieder der Taschenrechner geöffnet, die erhaltene Formel eingegeben und das Ergebnis gelesen. Anschließend wechselt der Test wieder zum Nachrichtendienst und sendet das Ergebnis als Antwort.&lt;br /&gt;
&lt;br /&gt;
== expeccoMobileDemo ==&lt;br /&gt;
Die Testsuite ist Bestandteil des Tutorials zum Mobile Testing Plugin. Der enthaltene Testfall ist unvollständig und wird im Zuge des Tutorials ergänzt. Lesen Sie dazu den Abschnitt [[#Tutorial|Tutorial]].&lt;br /&gt;
&lt;br /&gt;
= Tutorial =&lt;br /&gt;
Dieses Tutorial beschreibt das grundsätzliche Vorgehen zur Erstellung von Tests mit dem Mobile Testing Plugin. Grundlage dafür ist ein mitgeliefertes Beispiel, bestehend aus einer einfachen App und einer expecco-Testsuite.&lt;br /&gt;
&lt;br /&gt;
Die App &#039;&#039;expecco Mobile Demo&#039;&#039; berechnet und überprüft verschiedene alltägliche Codes: die IBAN aus dem europäischen Zahlungsverkehr, die internationalen GTIN-13-Produktcodes, wie man sie bei Strichcodes im Einzelhandel findet, und die Seriennummern auf Euro-Banknoten.&lt;br /&gt;
&lt;br /&gt;
Die Testsuite enthält Testfälle für einzelne Funktionen der App. Dabei sind noch nicht alle Funktionen abgedeckt, sondern werden im Laufe des Tutorials ergänzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Versionen dieses Tutorials:&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
[[#Erste_Schritte_mit_Android|Android]]&lt;br /&gt;
[[#Erste_Schritte_mit_iOS|iOS]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Test, der dabei erstellt wird, ist nahezu identisch, lediglich die Verbindungskonfigurationen werden unterschiedlich erzeugt.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte mit Android ==&lt;br /&gt;
Es wird vorausgesetzt, dass Sie das Kapitel [[#Installation_und_Aufbau|Installation und Aufbau]] bereits gelesen und die nötigen Vorbereitungen für die Verwendung von Android-Geräten unter Windows abgeschlossen haben.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Demo ausführen ===&lt;br /&gt;
Starten Sie expecco und öffnen Sie die Testsuite &#039;&#039;m02_expeccoMobileDemo.ets&#039;&#039; über die Schaltfläche &#039;&#039;Beispiel aus Datei&#039;&#039; (Abb. 1). In dieser befindet sich bereits ein vorgefertigter Testplan mit einigen Testfällen für diese App.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBeispielÖffnen.png | frame | left | Abb. 1: Beispiel-Testsuite öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
In der Testsuite ist das Paket der Demo-App als Anhang enthalten (&#039;&#039;expeccoMobileDemo-debug.apk&#039;&#039;). Mithilfe des bereitgestellten Bausteins &#039;&#039;Export Demo App&#039;&#039; können Sie die Datei an einen beliebigen Ort auf Ihrem Rechner exportieren. Wählen Sie dazu den Baustein aus (1) und klicken Sie auf den grünen Play-Knopf (2) um den Baustein auszuführen (Abb. 2). Der Baustein öffnet einen Dateidialog, in dem Sie angeben, wo das Paket gespeichert werden soll.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingExportApp.png | frame | left | Abb. 2: App exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bevor wir uns mit dem weiteren Inhalt der Testsuite beschäftigen, konfigurieren Sie zuerst die Verbindung und welches Gerät Sie benutzen wollen. Schließen Sie dazu ein Gerät über USB an Ihren Rechner an oder starten Sie einen Emulator.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingVerbinden.png | frame | left | Abb. 3: Verbindungseditor öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Öffnen Sie nun den GUI-Browser (1) und wählen Sie unter &#039;&#039;Verbinden&#039;&#039; (2) den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (3) (Abb. 3), um den Verbindungsdialog zu öffnen.&lt;br /&gt;
&lt;br /&gt;
Sie sehen eine Liste aller angeschlossenen Android-Geräte (1) (Abb. 3). Sollte Ihr Gerät nicht in der Liste auftauchen, stellen Sie sicher, dass es eingeschaltet und über USB verbunden ist. Lesen Sie ansonsten den Abschnitt [[#Android-Ger.C3.A4t_vorbereiten|Android-Gerät vorbereiten]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätAuswählen.png | frame | left | Abb. 4: Gerät im Verbindungsdialog auswählen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Haben Sie Ihr Gerät in der Liste gefunden, wählen Sie es aus und klicken Sie auf &#039;&#039;Weiter&#039;&#039; (2).&lt;br /&gt;
&lt;br /&gt;
Als nächstes geben Sie an, welche App Sie verwenden wollen (Abb. 5). Dabei können Sie wählen, ob Sie eine App starten möchten, die bereits auf dem Gerät installiert ist (&#039;&#039;App auf dem Gerät&#039;&#039;) oder ob eine App installiert und gestartet werden soll (&#039;&#039;App installieren&#039;&#039;). Für den Fall, dass Sie eine bereits installierte App benutzen wollen, erhalten Sie eine Liste aller auf dem Gerät installierten Pakete (1), die in Systempakete und Fremdpakete (2) unterteilt sind, sowie deren Activities (3). Diese können Sie dann einfach in den jeweiligen Feldern auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppAuswählen.png | frame | left | Abb. 5: Auf dem Gerät installierte App angeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Für dieses Tutorial soll die App installiert werden, die Sie eben aus der Testsuite exportiert haben. Wählen Sie also &#039;&#039;App installieren&#039;&#039; aus und tragen Sie bei App (1) den entsprechenden Pfad ein (Abb. 6). Sie können den Knopf links benutzen (2), um einen Dateidialog zu öffnen, mit dem Sie zu der Datei navigieren können, um sie einzugeben. Das Paket (3) und die Activity (4) der App werden automatisch eingetragen. Sollte die App mehrere Activities besitzen, können Sie die gewünschte auswählen. Klicken Sie nun auf &#039;&#039;Weiter&#039;&#039; (5).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppInstallieren.png | frame | left | Abb. 6: App angeben, die auf dem Gerät installiert werden soll]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Auf der letzten Seite sehen Sie eine Übersicht aller bisherigen Angaben (1) (Abb. 7). Darunter können Sie einen Namen für die Verbindung angeben, unter dem sie im GUI-Browser angezeigt wird (2). Außerdem lässt sich eine Verbindung über diesen Namen identifizieren und in Bausteinen verwenden; der Name muss daher eindeutig sein. Falls Sie keinen Namen angeben, wird generisch einer erzeugt. Geben Sie als Namen &#039;&#039;expeccoMobileDemo&#039;&#039; ein. Im Feld darunter ist die Adresse zum Appium-Server eingetragen (3). Appium ist die Schnittstelle, über die die angeschlossenen Geräte gesteuert werden. Für dieses Tutorial wird die Verwaltung der Instanzen des Appium-Servers von expecco übernommen. Dafür ist die lokale Standard-Adresse &#039;&#039;&amp;lt;nowiki&amp;gt;http://localhost:4723/wd/hub&amp;lt;/nowiki&amp;gt;&#039;&#039; eingetragen und die Option &#039;&#039;Bei Bedarf starten&#039;&#039; aktiviert (4). expecco überprüft dann, ob an der Adresse bereits ein Appium-Server läuft und startet und beendet ihn bei Bedarf automatisch. Wenn der Port &#039;&#039;4723&#039;&#039; bereits belegt ist oder wenn Sie einmal mehrere Verbindungen parallel betreiben wollen, verwenden Sie an dieser Stelle entsprechend einen anderen Port. Es ist dabei üblich die ungeraden Portnummern oberhalb von &#039;&#039;4723&#039;&#039; zu verwenden, also &#039;&#039;4725&#039;&#039;, &#039;&#039;4727&#039;&#039; usw. Natürlich können Sie auch entfernte Server verwenden, das automatische Starten und Beenden eines Servers kann expecco aber nur lokal für Sie übernehmen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingServerkonfiguration.png | frame | left | Abb. 7: Verbindungsnamen und Appium-Server konfigurieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Speichern&#039;&#039; (5) um die Einstellungen für die Testausführung zu speichern. Einstellungen können als Anhang einer Testsuite oder in eine externe Datei gespeichert werden (Abb. 8). Falls Sie mehrere Projekte gleichzeitig offen haben, können Sie in der Liste das Projekt auswählen, in dem der Anhang angelegt werden soll. Klicken Sie auf &#039;&#039;Speichern&#039;&#039; im Bereich &#039;&#039;Einstellungen im Anhang speichern&#039;&#039; und geben Sie als Name &#039;&#039;expeccoMobileDemo&#039;&#039; an. Klicken Sie nun auf &#039;&#039;Server starten und verbinden&#039;&#039; (6) um mit der angegebenen Konfiguration eine Verbindung herzustellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungenSpeichern.png | frame | left | Abb. 8: Einstellungen speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Der Verbindungsaufbau kann eine Weile dauern. Warten Sie bis die Verbindung aufgebaut ist und im GUI-Browser angezeigt wird. Sie sehen, dass die App auf dem Gerät gestartet wird. Nun wissen Sie, dass die Konfiguration funktioniert. Die gespeicherten Einstellungen sollen nun für den Test verwendet werden, der dann die gleiche Verbindung aufbaut. Wählen Sie die Verbindung im GUI-Browser aus, machen Sie einen Rechtsklick und wählen Sie im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039;, damit es zu keinem Konflikt kommt. Wechseln Sie dann zurück zum Reiter der Testsuite.&lt;br /&gt;
&lt;br /&gt;
In der Testsuite wurden die Einstellungen als Anhang &#039;&#039;expeccoMobileDemo&#039;&#039; angelegt (Abb 9). Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; (1) aus und wechseln Sie rechts zur Ansicht &#039;&#039;Netzwerk&#039;&#039; (2). Ziehen Sie per Drag-and-drop die Einstellungen in das Netzwerk des Bausteins (3). Verbinden Sie den Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[1]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039; (4). Mit &#039;&#039;Übernehmen&#039;&#039; (5) bestätigen Sie die Änderungen. Dieser Baustein wird zu Beginn des Tests die Verbindung zur App herstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingConnectblock.png | frame | left | Abb. 9: Verbindungsbaustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wechseln Sie nun zum Testplan &#039;&#039;Demo-Test&#039;&#039; (1) (Abb. 10). Dieser Testplan enthält bereits einige fertige Testfälle. Vor und nach der Ausführung (2) ist außerdem jeweils ein Baustein eingetragen: Der eben bearbeitete Baustein &#039;&#039;Connect&#039;&#039; für den Aufbau und der Baustein &#039;&#039;Disconnect&#039;&#039; für den Verbindungsabbau. Durch das Eintragen der beiden Bausteine an dieser Stelle geschieht der Verbindungsabbau insbesondere auch dann, wenn der Test vorzeitig abgebrochen wird, z. B. weil einer der Testfälle fehlschlägt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingTestplan.png | frame | left | Abb. 10: Testplanausführung]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Jetzt können Sie den Testplan &#039;&#039;Demo-Test&#039;&#039; starten, indem Sie auf den grünen Play-Knopf (3) klicken. Der Testplan sollte ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: Einen Baustein mit dem Recorder erstellen ===&lt;br /&gt;
Mit Hilfe des integrierten Recorders lassen sich einfach Ausführungssequenzen aufnehmen und in einem Baustein speichern. Dafür muss eine Verbindung zu einem Testgerät bestehen, mit dessen Hilfe der Test erstellt wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Verbindung aufzubauen, wechseln Sie zurück zum GUI-Browser. In diesem ist nun die Verbindung eingetragen, die eben bei der Ausführung des Testplans benutzt wurde. Allerdings ist sie nicht mehr aktiv, da sie am Ende der Ausführung abgebaut wurde. Die Einstellungen sind dort aber noch eingetragen. Um die Verbindung mit dieser Konfiguration wieder aufzubauen, wählen Sie sie aus, gefolgt von einem Rechtsklick und &#039;&#039;Verbinden&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Warten Sie, bis die Verbindung aufgebaut ist (1) und drücken Sie dann den Aufnahme-Knopf (2), um eine Aufzeichnung zu starten (Abb. 11).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorderStarten.png | frame | left | Abb. 11: Recorder starten]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Es öffnet sich ein Fenster mit dem Mobile Testing Recorder (Abb. 12). Dieser zeigt einen Screenshot des verbundenen Geräts. Über diese Anzeige können Sie das Gerät fernsteuern. Dabei wird jede Aktion, die Sie ausführen, im Hintergrund aufgezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der oberen Menüleiste können Sie das Werkzeug auswählen (1), mit dem Sie eine Aktion eingeben möchten. Als Voreinstellung ist das Werkzeug &#039;&#039;Auto&#039;&#039; ausgewählt. Sie können damit bestimmte Aktionen aufzeichnen, indem Sie mit dem Mauszeiger entsprechende Gesten auf der Anzeige ausführen. Wenn Sie zum Beispiel mit der linken Maustaste lange klicken, entspricht das einem langen Antippen auf dem Touchscreen des Gerätes. Anstatt die gewünschte Aktion mit der entsprechenden Geste zu bestimmen, können Sie diese alternativ auch manuell auswählen.&lt;br /&gt;
&lt;br /&gt;
Es soll nun ein neuer Test für das Erkennen korrekter GTIN-13-Codes aufgenommen werden. Klicken Sie zunächst in der Anzeige kurz auf den Button &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; (2) der App um einen entsprechenden Klick auf dem Gerät auszulösen. Falls der Recorder danach nicht die aktuelle Ansicht der App darstellen sollte, klicken Sie im Recorder auf das Aktualisierungssymbol (3).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder1.png | frame | left | Abb. 12: Über Recorder zur GTIN-13-Activity wechseln]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Anschließend soll im Eingabefeld der neuen Seite eine korrekte GTIN-13 eingegeben werden. Führen Sie dazu einen Rechtsklick auf dem Eingabefeld (1) aus und wählen Sie im Kontextmenü die Aktion &#039;&#039;Text anhängen&#039;&#039; (2) (Abb. 13). Geben Sie in den sich daraufhin öffnenden Dialog eine beliebige gültige Artikelnummer im GTIN-13-Format ein, bspw. &#039;&#039;4006381333986&#039;&#039; (3). Dieser Text wird nun in der App gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder2.png | frame | left | Abb. 13: GTIN-13-Code über Recorder eingeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Verify&#039;&#039; (1) (Abb. 14). In der App erscheint nun als Ergebnis &#039;&#039;OK&#039;&#039; (2). Der Test soll feststellen, ob tatsächlich dieses Ergebnis angezeigt wird. Nach einem Rechtsklick darauf können Sie im Kontextmenü die Aktion &#039;&#039;Attribut zusichern&#039;&#039; (3) auswählen. Wählen Sie im Dialog, der sich daraufhin öffnet, die Eigenschaft &#039;&#039;text&#039;&#039; (4) aus und bestätigen Sie mit &#039;&#039;OK&#039;&#039; (5). Dieses Mal wird keine Aktion auf dem Gerät ausgelöst, sondern nur ein Baustein aufgezeichnet, der fehlschlägt, sollte das Ergebnis vom erwarteten Wert &#039;&#039;OK&#039;&#039; abweichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder3.png | frame | left | Abb. 14: Antwort der App über Recorder auslesen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Schließen Sie nun den Recorder. Im &#039;&#039;Arbeitsbereich&#039;&#039; des GUI-Browsers sehen Sie, dass für jede der aufgenommenen Aktionen ein Baustein angelegt wurde (Abb. 15). Sie können nun testen, ob sich das Aufgenommene wieder abspielen lässt. Dazu müssen Sie zunächst die App auf Ihrem Gerät in den Anfangszustand zurückbringen, indem Sie auf dem Gerät die Schaltfläche &#039;&#039;HOME&#039;&#039; oben rechts benutzen. Klicken Sie dann in expecco auf den grünen Play-Knopf (1). Wird alles grün, war die Ausführung erfolgreich. Erstellen Sie nun daraus einen neuen Baustein in der Testsuite, indem Sie auf das Bausteinsymbol (2) in der rechten oberen Ecke klicken. Geben Sie ihm den Namen &#039;&#039;GTIN_Verify_OK&#039;&#039; (3) und bestätigen Sie (4).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingArbeitsbereich.png | frame | left | Abb. 15: Neuen Baustein aus Arbeitsbereich exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bauen Sie nun die Verbindung ab, indem Sie die Verbindung auswählen, rechtsklicken und im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie zurück zum Reiter der Testsuite. Dort wurde der neue Baustein angelegt. Wählen Sie wieder den Testplan &#039;&#039;Demo-Test&#039;&#039; aus und fügen Sie den aufgenommenen Testfall &#039;&#039;GTIN_Verify_OK&#039;&#039; per Drag-and-drop am Ende des Testplans hinzu. Übernehmen Sie die Änderung und starten Sie erneut. Der Testplan sollte wieder ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: XPath anpassen mithilfe des GUI-Browsers ===&lt;br /&gt;
Ihr neuer Baustein funktioniert auf anderen Geräten möglicherweise nicht. Die verwendeten Elemente werden über einen XPath adressiert und dieser kann auf anderen Geräten nicht stimmen. Lesen Sie dazu den Abschnitt [[#XPath_anpassen_mithilfe_des_GUI-Browsers|XPath anpassen mithilfe des GUI-Browsers]]. Falls Ihnen ein weiteres Gerät zur Verfügung steht, können Sie nun versuchen, die Pfade in Ihren erstellten Bausteinen zu verallgemeinern. Sie können diesen Schritt aber auch überspringen.&lt;br /&gt;
&lt;br /&gt;
Wenn es Ihnen schwerfällt, verkürzte Pfade zu finden, orientieren Sie sich dabei an den Pfaden der bereits vorhandenen Bausteine. Starten Sie den Test erneut. Sollte der Test jetzt fehlschlagen, überprüfen Sie die Pfade noch einmal im GUI-Browser.&lt;br /&gt;
Um den Test nun auf einem zweiten Gerät auszuführen, öffnen Sie im Menü &#039;&#039;Erweiterungen&#039;&#039; &amp;gt; &#039;&#039;Mobile Testing&#039;&#039; &amp;gt; &#039;&#039;Verbindungseinstellungen erstellen&#039;&#039;. Sie erhalten einen Dialog ähnlich zum Verbindungsdialog. Allerdings können Sie hier nur Einstellungen erstellen und speichern aber keine Verbindung herstellen. Sie haben jedoch die Möglichkeit, einzelne Aspekte der Einstellungen zu speichern wie bspw. nur das Gerät. Wählen Sie das neue Gerät aus und klicken Sie länger auf das Symbol zum Speichern im Anhang bis sich das verzögerte Menü öffnet (Abb. 16). Wählen Sie hier &#039;&#039;Geräte-Einstellungen speichern&#039;&#039;. Benennen Sie den Anhang am besten nach dem Gerät. Danach können Sie den Dialog wieder schließen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätSpeichern.png | frame | left | Abb. 16: Einstellungen für ein Gerät speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; aus und ziehen Sie die Einstellungen für das neue Gerät in dessen Netzwerk. Verbinden Sie nun dessen Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[2]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039;. Der Baustein Connect from File liest die Angaben an den Eingangspins von oben nach unten ein, mehrfache Eigenschaften werden dabei ersetzt. In diesem Fall werden also die Einstellungen zum verwendeten Gerät ersetzt, während die übrigen Einstellungen gleich bleiben. Wenn Sie die Pfade geschickt gewählt haben, wird der Test nun auch auf dem anderen Gerät erfolgreich ablaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Noch einen Baustein erstellen ===&lt;br /&gt;
Falls sich gleiche Abläufe im Test wiederholen, können Sie dafür bereits erstellte Bausteine wieder-verwenden oder abwandeln. Der in Schritt 2 erstellte Baustein prüft die Erkennung korrekter GTIN-13-Codes. Es fehlt noch ein Test, der umgekehrt das Erkennen eines falschen GTIN-13-Codes prüft. Die Struktur der beiden Tests ist identisch, sie unterscheiden sich lediglich in ihren Parametern. Kopieren Sie daher den Baustein &#039;&#039;GTIN_Verify_OK&#039;&#039; und benennen Sie die Kopie in &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039; um. Ändern Sie die Eingabe der GTIN-13 in einen falschen Code zum Beispiel durch Ändern der letzten Ziffer (&#039;&#039;4006381333987&#039;&#039;) und setzen Sie den Überprüfungswert der Ausgabe auf &#039;&#039;NOT OK&#039;&#039; (Abb. 17).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGTIN_Verify_NOT_OK.png | frame | left | Abb. 17: Baustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Fügen Sie diesen neuen Test ebenfalls zum Testplan Demo-Test hinzu und setzen Sie ihn ans Ende. Führen Sie den Testplan aus, aber vergessen Sie nicht, vorher die Verbindung im GUI-Browser abzubauen.&lt;br /&gt;
&lt;br /&gt;
Der neue Test wird fehlschlagen, weil Ihr aufgenommener Baustein nicht wieder zur Startseite der App zurückkehrt, die Tests aber jeweils von dort aus starten. In den anderen Bausteinen ist dies bereits berücksichtigt; sie führen abschließend immer den Baustein &#039;&#039;Back to main menu&#039;&#039; aus. Sie sehen das, indem Sie einen der anderen Bausteine, z. B. &#039;&#039;GTIN_Calculate&#039;&#039;, auswählen und auf seine Schema-Ansicht wechseln. Dort steht der Baustein &#039;&#039;Back to main menu&#039;&#039; im Feld &#039;&#039;Nach Ausführung&#039;&#039; (Abb. 18). Wie beim entsprechenden Feld beim Testplan wird auch dieser Baustein immer am Ende ausgeführt, unabhängig davon, ob der Test erfolgreich verläuft oder abbricht. Ergänzen Sie diesen Eintrag nun in Ihren Bausteinen &#039;&#039;GTIN_Verify_OK&#039;&#039; und &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039;. Wählen Sie dazu den Baustein aus und ziehen Sie in der Schema-Ansicht den Baustein &#039;&#039;Back to main menu&#039;&#039; einfach auf das Eingabefeld &#039;&#039;Nach Ausführung&#039;&#039;. Nun können Sie den Testplan starten und alle Tests sollten wieder problemlos ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumDemo Nach Ausführung.png | frame | left | Abb. 18: Nach-Ausführungs-Baustein setzen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Test vervollständigen ===&lt;br /&gt;
Für die Activity IBAN sind bereits alle Antwortmöglichkeiten der App mit Testfällen abgedeckt. In der GTIN-13-Activity werden ein korrekter und ein fehlerhafter Code getestet und eine Prüfziffer berechnet, das Verhalten der App bei Eingaben falscher Länge wird aber bisher nicht getestet (Bei Verify &#039;&#039;&#039;Input must be exactly 13 digits&#039;&#039;. und &#039;&#039;…12 digits&#039;&#039;. bei Calculate). Die Activity zum Prüfen der Seriennummern von Eurobanknoten wird noch gar nicht getestet. Wie bei der IBAN können hier drei Fälle auftreten: eine korrekte Seriennummer wurde eingegeben (Antwort: &#039;&#039;OK&#039;&#039;), eine falsche Seriennummer wurde eingegeben (Antwort: &#039;&#039;NOT OK&#039;&#039;) oder die Angabe entspricht nicht dem Format (Antwort: &#039;&#039;A serial number consists of 12 characters with the first one or two being capital letters (A-Z).&#039;&#039;). Sie können die Testabdeckung jetzt noch erweitern, indem Sie entsprechende Testfälle erstellen. Die Bausteine dafür können Sie wie in Schritt 2 mit dem Recorder erstellen und die XPaths bei Bedarf verallgemeinern. Wenn Sie mit dem grundsätzlichen Umgang mit expecco vertraut sind, können Sie Bausteine natürlich auch ohne Recorder erstellen, indem Sie sie manuell aus vorhandenen Bausteinen der Bibliothek zusammensetzen. Sie können auch beide Vorgehensweisen nach Belieben kombinieren.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass die hier vorgestellten Testfälle jeweils nur einzelne Eingaben prüfen. Wenn Sie Testfälle für Ihre eigenen Apps schreiben, wollen Sie vermutlich engmaschiger testen, indem Sie noch weitere unterschiedliche Werte eingeben, die insbesondere auch Randfälle enthalten.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte mit iOS ==&lt;br /&gt;
Es wird vorausgesetzt, dass Sie das Kapitel [[#Installation_und_Aufbau|Installation und Aufbau]] bereits gelesen und die nötigen Vorbereitungen für die Verwendung von iOS-Geräten unter Mac OS abgeschlossen haben. Starten Sie expecco. Mit expecco 2.11 können Sie die Testsuite m03_expeccoMobileDemoIOS.ets über die Schaltfläche Beispiel aus Datei öffnen. Ansonsten laden Sie die Testsuite [http://download.exept.de/transfer/h-expecco-2.10.0/m03_expeccoMobileDemoIOS.ets m03_expeccoMobileDemoIOS.ets] auf den Rechner, auf dem sich Ihre expecco-Installation befindet. Schließen Sie das Gerät, das Sie verwenden wollen, an den Mac an. Laden Sie die iOS-Version der [http://download.exept.de/transfer/h-expecco-2.11.0-pre/expeccoMobileDemo.ipa expeccoMobileDemo-App] auf den Mac herunter. Falls Sie expecco 2.10 verwenden, müssen Sie die App für Ihr Gerät signieren (siehe [[#iOS-Ger.C3.A4t_und_App_vorbereiten|iOS-Gerät und App vorbereiten]]). Starten Sie nun einen Appium-Server auf dem Mac.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Demo ausführen ===&lt;br /&gt;
Öffnen Sie die Testsuite &#039;&#039;expeccoMobileDemo.ets&#039;&#039; mit expecco. In dieser befindet sich bereits ein vorgefertigter Testplan mit einigen Testfällen für diese App.&lt;br /&gt;
&lt;br /&gt;
Bevor wir uns mit dem weiteren Inhalt der Testsuite beschäftigen, konfigurieren Sie zuerst die Verbindung und welches Gerät Sie benutzen wollen. Öffnen Sie nun den GUI-Browser (1) und wählen Sie unter &#039;&#039;Verbinden&#039;&#039; (2) den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (3) (Abb. 1), um den Verbindungsdialog zu öffnen.&lt;br /&gt;
[[Datei:MobileTestingVerbinden.png | frame | left | Abb. 1: Verbindungseditor öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier können Sie ein iOS-Gerät nur von Hand eintragen. Wählen Sie dazu &#039;&#039;iOS-Gerät eingeben&#039;&#039; (Abb. 2). Den Namen und die iOS-Version des Geräts können Sie dessen Eigenschaften entnehmen. Um die die Gerätekennung des Geräts zu erfahren, öffnen Sie auf dem Mac in Xcode das Fenster Devices (Command-Shift-2). Dort werden alle angeschlossenen Geräte sowie die zur Verfügung stehenden Simulatoren angezeigt. Hier sehen Sie auch die Gerätekennung (udid) Ihres Geräts und welche Apps installiert wurden. Nachdem Sie das Gerät im Verbindungseditor eingegeben haben, wählen Sie es in der Liste aus. Wenn Sie expecco 2.11 verwenden wählen Sie nun bei &#039;&#039;Automatisierung durch&#039;&#039; den Wert &#039;&#039;XCUITest&#039;&#039; aus. Klicken Sie dann auf Weiter.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingIOSGerät.png | frame | left | Abb. 2: Hinzufügen eines iOS-Geräts]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes geben Sie an, welche App Sie verwenden wollen. Dabei können Sie wählen, ob Sie eine App starten möchten, die bereits auf dem Gerät installiert ist (&#039;&#039;App auf dem Gerät&#039;&#039;) oder ob eine App installiert und gestartet werden soll (&#039;&#039;App installieren&#039;&#039;). Für den Fall, dass Sie eine bereits installierte App benutzen wollen, müssen Sie deren Bundle-ID angeben. Diese erfahren Sie ebenfalls im Devices-Fenster von XCode. Für die Demo-App lautet sie beispielsweise &#039;&#039;de.exept.expeccoMobileDemo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Für dieses Tutorial soll die Demo-App erst installiert werden. Wählen Sie also &#039;&#039;App installieren&#039;&#039; aus und tragen Sie bei App den Pfad zu der Datei auf dem Mac ein (Abb. 3). Klicken Sie nun auf &#039;&#039;Weiter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingIOSAppInstallieren.png | frame | left | Abb. 3: App angeben, die auf dem Gerät installiert werden soll]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf der letzten Seite sehen Sie eine Übersicht aller bisherigen Angaben (1) (Abb. 4). Wenn Sie expecco 2.11 verwenden, können Sie hier noch die Team-ID zu Ihrem Zertifikat angeben (s. Abschnitt [[#Mac_OS | Installation und Aufbau für Mac OS]]). Wenn Sie immer dasselbe Zertifikat verwenden, ist diese Angabe nur für die erste Verbindung nötig. Klicken Sie &#039;&#039;Bearbeiten&#039;&#039; um in die [[#Erweiterte_Ansicht | erweiterte Ansicht]] zu gelangen. Fügen Sie die Capability &#039;&#039;xcodeOrgId &#039;&#039; zur Liste hinzu und setzen Sie die Team-ID als Wert. Klicken Sie dann auf &#039;&#039;Zurück&#039;&#039;, um zur Normalansicht zurückzukehren.&lt;br /&gt;
&lt;br /&gt;
Unterhalb der Capabilityliste können Sie einen Namen für die Verbindung angeben, unter dem sie im GUI-Browser angezeigt wird (2). Außerdem lässt sich eine Verbindung über diesen Namen identifizieren und in Bausteinen verwenden; der Name muss daher eindeutig sein. Falls Sie keinen Namen angeben, wird generisch einer erzeugt. Geben Sie als Namen &#039;&#039;expeccoMobileDemo&#039;&#039; ein. Im Feld darunter ist die Adresse zum Appium-Server eingetragen (3). Wenn Sie den Appium-Server mit Standardeinstellungen gestartet haben, müssen Sie dazu nur in der eingetragenen Standardadresse &#039;&#039;localhost&#039;&#039; durch die IP-Adresse des Macs ersetzen (im Bild &#039;&#039;172.23.1.49&#039;&#039;). Um sicher zu gehen, auf welchem Port der Appium-Server lauscht, sehen Sie in dessen Ausgabe. Dort finden am Anfang die Zeile&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;info: Appium REST http interface listener started on 0.0.0.0:4723&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Steht hier am Ende nicht der Standardport &#039;&#039;4723&#039;&#039; ändern Sie diese Angabe entsprechend ebenfalls in der Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Wenn die Option &#039;&#039;Bei Bedarf starten&#039;&#039; (4) aktiviert ist, überprüft expecco, ob an der Adresse bereits ein Appium-Server läuft, und startet und beendet ihn bei Bedarf automatisch. Das ist allerdings nur für lokale Serveradressen möglich, schalten Sie diese Option daher ab.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingServerkonfigurationIOS.png | frame | left | Abb. 4: Verbindungsnamen und Appium-Server konfigurieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Speichern&#039;&#039; (5) um die Einstellungen für die Testausführung zu speichern. Einstellungen können als Anhang einer Testsuite oder in eine externe Datei gespeichert werden (Abb. 5). Falls Sie mehrere Projekte gleichzeitig offen haben, können Sie in der Liste das Projekt auswählen, in dem der Anhang angelegt werden soll. Klicken Sie auf &#039;&#039;Speichern&#039;&#039; im Bereich &#039;&#039;Einstellungen im Anhang speichern&#039;&#039; und geben Sie als Name &#039;&#039;expeccoMobileDemo&#039;&#039; an. Klicken Sie nun auf &#039;&#039;Verbinden&#039;&#039; (6) um mit der angegebenen Konfiguration eine Verbindung herzustellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungenSpeichern.png | frame | left | Abb. 5: Einstellungen speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Verbindungsaufbau kann eine Weile dauern. Wenn Sie die Server-Adresse korrekt angegeben haben, sollten Sie in der Ausgabe des Appium-Servers den Verbindungsversuch erkennen. Auf Ihrem iOS-Gerät sollte dabei die App gestartet werden. Passiert nichts auf dem Gerät, kann es daran liegen, dass entweder das Gerät oder die App nicht gefunden wird. Versucht Appium hingegen, die App zu starten und dies schlägt fehl, ist wahrscheinlich die App falsch signiert. Deinstallieren Sie in diesem Fall die App, damit sie mit einer neuen Signatur wieder installiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Warten Sie bis die Verbindung aufgebaut ist und im GUI-Browser angezeigt wird. Nun wissen Sie, dass die Konfiguration funktioniert. Die gespeicherten Einstellungen sollen nun für den Test verwendet werden, der dann die gleiche Verbindung aufbaut. Wählen Sie die Verbindung im GUI-Browser aus, machen Sie einen Rechtsklick und wählen Sie im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039;, damit es zu keinem Konflikt kommt. Wechseln Sie dann zurück zum Reiter der Testsuite.&lt;br /&gt;
&lt;br /&gt;
In der Testsuite wurden die Einstellungen als Anhang &#039;&#039;expeccoMobileDemo&#039;&#039; angelegt (Abb 6). Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; (1) aus und wechseln Sie rechts zur Ansicht &#039;&#039;Netzwerk&#039;&#039; (2). Ziehen Sie per Drag-and-drop die Einstellungen in das Netzwerk des Bausteins (3). Verbinden Sie den Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[1]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039; (4). Mit &#039;&#039;Übernehmen&#039;&#039; (5) bestätigen Sie die Änderungen. Dieser Baustein wird zu Beginn des Tests die Verbindung zur App herstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingConnectblock.png | frame | left | Abb. 6: Verbindungsbaustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie nun zum Testplan &#039;&#039;Demo-Test&#039;&#039; (1) (Abb. 7). Dieser Testplan enthält bereits einige fertige Testfälle. Vor und nach der Ausführung (2) ist außerdem jeweils ein Baustein eingetragen: Der eben bearbeitete Baustein &#039;&#039;Connect&#039;&#039; für den Aufbau und der Baustein &#039;&#039;Disconnect&#039;&#039; für den Verbindungsabbau. Durch das Eintragen der beiden Bausteine an dieser Stelle geschieht der Verbindungsabbau insbesondere auch dann, wenn der Test vorzeitig abgebrochen wird, z. B. weil einer der Testfälle fehlschlägt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingTestplan.png | frame | left | Abb. 7: Testplanausführung]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Jetzt können Sie den Testplan &#039;&#039;Demo-Test&#039;&#039; starten, indem Sie auf den grünen Play-Knopf (3) klicken. Der Testplan sollte ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: Einen Baustein mit dem Recorder erstellen ===&lt;br /&gt;
Mit Hilfe des integrierten Recorders lassen sich einfach Ausführungssequenzen aufnehmen und in einem Baustein speichern. Dafür muss eine Verbindung zu einem Testgerät bestehen, mit dessen Hilfe der Test erstellt wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Verbindung aufzubauen, wechseln Sie zurück zum GUI-Browser. In diesem ist nun die Verbindung eingetragen, die eben bei der Ausführung des Testplans benutzt wurde. Allerdings ist sie nicht mehr aktiv, da sie am Ende der Ausführung abgebaut wurde. Die Einstellungen sind dort aber noch eingetragen. Um die Verbindung mit dieser Konfiguration wieder aufzubauen, wählen Sie sie aus, gefolgt von einem Rechtsklick und &#039;&#039;Verbinden&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Warten Sie, bis die Verbindung aufgebaut ist (1) und drücken Sie dann den Aufnahme-Knopf (2), um eine Aufzeichnung zu starten (Abb. 8).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorderStarten.png | frame | left | Abb. 8: Recorder starten]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Es öffnet sich ein Fenster mit dem Mobile Testing Recorder (Abb. 9). Dieser zeigt einen Screenshot des verbundenen Geräts. Über diese Anzeige können Sie das Gerät fernsteuern. Dabei wird jede Aktion, die Sie ausführen, im Hintergrund aufgezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der oberen Menüleiste können Sie das Werkzeug auswählen (1), mit dem Sie eine Aktion eingeben möchten. Als Voreinstellung ist das Werkzeug &#039;&#039;Auto&#039;&#039; ausgewählt. Sie können damit bestimmte Aktionen aufzeichnen, indem Sie mit dem Mauszeiger entsprechende Gesten auf der Anzeige ausführen. Wenn Sie zum Beispiel mit der linken Maustaste lange klicken, entspricht das einem langen Antippen auf dem Touchscreen des Gerätes. Anstatt die gewünschte Aktion mit der entsprechenden Geste zu bestimmen, können Sie diese alternativ auch manuell auswählen.&lt;br /&gt;
&lt;br /&gt;
Es soll nun ein neuer Test für das Erkennen korrekter GTIN-13-Codes aufgenommen werden. Klicken Sie zunächst in der Anzeige kurz auf den Button &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; (2) der App um einen entsprechenden Klick auf dem Gerät auszulösen. Falls der Recorder danach nicht die aktuelle Ansicht der App darstellen sollte, klicken Sie im Recorder auf das Aktualisierungssymbol (3).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder1iOS.png | frame | left | Abb. 9: Über Recorder zur GTIN-13-Activity wechseln]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Anschließend soll im Eingabefeld der neuen Seite eine korrekte GTIN-13 eingegeben werden. Führen Sie dazu einen Rechtsklick auf dem Eingabefeld (1) aus und wählen Sie im Kontextmenü die Aktion &#039;&#039;Text anhängen&#039;&#039; (2) (Abb. 10). Geben Sie in den sich daraufhin öffnenden Dialog eine beliebige gültige Artikelnummer im GTIN-13-Format ein, bspw. &#039;&#039;4006381333986&#039;&#039; (3). Dieser Text wird nun in der App gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder2iOS.png | frame | left | Abb. 10: GTIN-13-Code über Recorder eingeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Verify&#039;&#039; (1) (Abb. 11). In der App erscheint nun als Ergebnis &#039;&#039;OK&#039;&#039; (2). Der Test soll feststellen, ob tatsächlich dieses Ergebnis angezeigt wird. Nach einem Rechtsklick darauf können Sie im Kontextmenü die Aktion &#039;&#039;Attribut zusichern&#039;&#039; (3) auswählen. Wählen Sie im Dialog, der sich daraufhin öffnet, die Eigenschaft &#039;&#039;value&#039;&#039; (4) aus und bestätigen Sie mit &#039;&#039;OK&#039;&#039; (5). Dieses Mal wird keine Aktion auf dem Gerät ausgelöst, sondern nur ein Baustein aufgezeichnet, der fehlschlägt, sollte das Ergebnis vom erwarteten Wert &#039;&#039;OK&#039;&#039; abweichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder3iOS.png | frame | left | Abb. 11: Antwort der App über Recorder auslesen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Schließen Sie nun den Recorder. Im &#039;&#039;Arbeitsbereich&#039;&#039; des GUI-Browsers sehen Sie, dass für jede der aufgenommenen Aktionen ein Baustein angelegt wurde (Abb. 12). Sie können nun testen, ob sich das Aufgenommene wieder abspielen lässt. Dazu müssen Sie zunächst die App auf Ihrem Gerät in den Anfangszustand zurückbringen, indem Sie auf dem Gerät die Schaltfläche &#039;&#039;Home&#039;&#039; oben links benutzen. Klicken Sie dann in expecco auf den grünen Play-Knopf (1). Wird alles grün, war die Ausführung erfolgreich. Erstellen Sie nun daraus einen neuen Baustein in der Testsuite, indem Sie auf das Bausteinsymbol (2) in der rechten oberen Ecke klicken. Geben Sie ihm den Namen &#039;&#039;GTIN_Verify_OK&#039;&#039; (3) und bestätigen Sie (4).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingArbeitsbereich.png | frame | left | Abb. 12: Neuen Baustein aus Arbeitsbereich exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bauen Sie nun die Verbindung ab, indem Sie die Verbindung auswählen, rechtsklicken und im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie zurück zum Reiter der Testsuite. Dort wurde der neue Baustein angelegt. Wählen Sie wieder den Testplan &#039;&#039;Demo-Test&#039;&#039; aus und fügen Sie den aufgenommenen Testfall &#039;&#039;GTIN_Verify_OK&#039;&#039; per Drag-and-drop am Ende des Testplans hinzu. Übernehmen Sie die Änderung und starten Sie erneut. Der Testplan sollte wieder ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: XPath anpassen mithilfe des GUI-Browsers ===&lt;br /&gt;
Ihr neuer Baustein funktioniert auf anderen Geräten möglicherweise nicht. Die verwendeten Elemente werden über einen XPath adressiert und dieser kann auf anderen Geräten nicht stimmen. Lesen Sie dazu den Abschnitt [[#XPath_anpassen_mithilfe_des_GUI-Browsers|XPath anpassen mithilfe des GUI-Browsers]]. Falls Ihnen ein weiteres Gerät zur Verfügung steht, können Sie nun versuchen, die Pfade in Ihren erstellten Bausteinen zu verallgemeinern. Sie können diesen Schritt aber auch überspringen.&lt;br /&gt;
&lt;br /&gt;
Wenn es Ihnen schwerfällt, verkürzte Pfade zu finden, orientieren Sie sich dabei an den Pfaden der bereits vorhandenen Bausteine. Starten Sie den Test erneut. Sollte der Test jetzt fehlschlagen, überprüfen Sie die Pfade noch einmal im GUI-Browser.&lt;br /&gt;
Um den Test nun auf einem zweiten Gerät auszuführen, öffnen Sie im Menü &#039;&#039;Erweiterungen&#039;&#039; &amp;gt; &#039;&#039;Mobile Testing&#039;&#039; &amp;gt; &#039;&#039;Verbindungseinstellungen erstellen&#039;&#039;. Sie erhalten einen Dialog ähnlich zum Verbindungsdialog. Allerdings können Sie hier nur Einstellungen erstellen und speichern aber keine Verbindung herstellen. Sie haben jedoch die Möglichkeit, einzelne Aspekte der Einstellungen zu speichern wie bspw. nur das Gerät. Geben Sie das neue Gerät ein und wählen Sie es aus. Klicken Sie länger auf das Symbol zum Speichern im Anhang bis sich das verzögerte Menü öffnet und wählen Sie hier &#039;&#039;Geräte-Einstellungen speichern&#039;&#039; (Abb. 13). Benennen Sie den Anhang am besten nach dem Gerät. Danach können Sie den Dialog wieder schließen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätSpeichern.png | frame | left | Abb. 13: Einstellungen für ein Gerät speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; aus und ziehen Sie die Einstellungen für das neue Gerät in dessen Netzwerk. Verbinden Sie nun dessen Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[2]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039;. Der Baustein Connect from File liest die Angaben an den Eingangspins von oben nach unten ein, mehrfache Eigenschaften werden dabei ersetzt. In diesem Fall werden also die Einstellungen zum verwendeten Gerät ersetzt, während die übrigen Einstellungen gleich bleiben. Wenn Sie die Pfade geschickt gewählt haben, wird der Test nun auch auf dem anderen Gerät erfolgreich ablaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Noch einen Baustein erstellen ===&lt;br /&gt;
Falls sich gleiche Abläufe im Test wiederholen, können Sie dafür bereits erstellte Bausteine wieder-verwenden oder abwandeln. Der in Schritt 2 erstellte Baustein prüft die Erkennung korrekter GTIN-13-Codes. Es fehlt noch ein Test, der umgekehrt das Erkennen eines falschen GTIN-13-Codes prüft. Die Struktur der beiden Tests ist identisch, sie unterscheiden sich lediglich in ihren Parametern. Kopieren Sie daher den Baustein &#039;&#039;GTIN_Verify_OK&#039;&#039; und benennen Sie die Kopie in &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039; um. Ändern Sie die Eingabe der GTIN-13 in einen falschen Code zum Beispiel durch Ändern der letzten Ziffer (&#039;&#039;4006381333987&#039;&#039;) und setzen Sie den Überprüfungswert der Ausgabe auf &#039;&#039;NOT OK&#039;&#039; (Abb. 14).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGTIN_Verify_NOT_OK_iOS.png | frame | left | Abb. 14: Baustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Fügen Sie diesen neuen Test ebenfalls zum Testplan Demo-Test hinzu und setzen Sie ihn ans Ende. Führen Sie den Testplan aus, aber vergessen Sie nicht, vorher die Verbindung im GUI-Browser abzubauen.&lt;br /&gt;
&lt;br /&gt;
Der neue Test wird fehlschlagen, weil Ihr aufgenommener Baustein nicht wieder zur Startseite der App zurückkehrt, die Tests aber jeweils von dort aus starten. In den anderen Bausteinen ist dies bereits berücksichtigt; sie führen abschließend immer den Baustein &#039;&#039;Back to main menu&#039;&#039; aus. Sie sehen das, indem Sie einen der anderen Bausteine, z. B. &#039;&#039;GTIN_Calculate&#039;&#039;, auswählen und auf seine Schema-Ansicht wechseln. Dort steht der Baustein &#039;&#039;Back to main menu&#039;&#039; im Feld &#039;&#039;Nach Ausführung&#039;&#039; (Abb. 15). Wie beim entsprechenden Feld beim Testplan wird auch dieser Baustein immer am Ende ausgeführt, unabhängig davon, ob der Test erfolgreich verläuft oder abbricht. Ergänzen Sie diesen Eintrag nun in Ihren Bausteinen &#039;&#039;GTIN_Verify_OK&#039;&#039; und &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039;. Wählen Sie dazu den Baustein aus und ziehen Sie in der Schema-Ansicht den Baustein &#039;&#039;Back to main menu&#039;&#039; einfach auf das Eingabefeld &#039;&#039;Nach Ausführung&#039;&#039;. Nun können Sie den Testplan starten und alle Tests sollten wieder problemlos ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumDemo Nach Ausführung.png | frame | left | Abb. 15: Nach-Ausführungs-Baustein setzen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Test vervollständigen ===&lt;br /&gt;
Für die Activity IBAN sind bereits alle Antwortmöglichkeiten der App mit Testfällen abgedeckt. In der GTIN-13-Activity werden ein korrekter und ein fehlerhafter Code getestet und eine Prüfziffer berechnet, das Verhalten der App bei Eingaben falscher Länge wird aber bisher nicht getestet (Bei Verify &#039;&#039;&#039;Input must be exactly 13 digits&#039;&#039;. und &#039;&#039;…12 digits&#039;&#039;. bei Calculate). Die Activity zum Prüfen der Seriennummern von Eurobanknoten wird noch gar nicht getestet. Wie bei der IBAN können hier drei Fälle auftreten: eine korrekte Seriennummer wurde eingegeben (Antwort: &#039;&#039;OK&#039;&#039;), eine falsche Seriennummer wurde eingegeben (Antwort: &#039;&#039;NOT OK&#039;&#039;) oder die Angabe entspricht nicht dem Format (Antwort: &#039;&#039;A serial number consists of 12 characters with the first one or two being capital letters (A-Z).&#039;&#039;). Sie können die Testabdeckung jetzt noch erweitern, indem Sie entsprechende Testfälle erstellen. Die Bausteine dafür können Sie wie in Schritt 2 mit dem Recorder erstellen und die XPaths bei Bedarf verallgemeinern. Wenn Sie mit dem grundsätzlichen Umgang mit expecco vertraut sind, können Sie Bausteine natürlich auch ohne Recorder erstellen, indem Sie sie manuell aus vorhandenen Bausteinen der Bibliothek zusammensetzen. Sie können auch beide Vorgehensweisen nach Belieben kombinieren.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass die hier vorgestellten Testfälle jeweils nur einzelne Eingaben prüfen. Wenn Sie Testfälle für Ihre eigenen Apps schreiben, wollen Sie vermutlich engmaschiger testen, indem Sie noch weitere unterschiedliche Werte eingeben, die insbesondere auch Randfälle enthalten.&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Mobile_Testing_Plugin&amp;diff=8177</id>
		<title>Mobile Testing Plugin</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Mobile_Testing_Plugin&amp;diff=8177"/>
		<updated>2017-02-24T15:07:35Z</updated>

		<summary type="html">&lt;p&gt;Ff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
Mit dem Mobile Testing Plugin können Anwendungen auf Android- und iOS-Geräten getestet werden. Dabei ist es egal, ob reale mobile Endgeräte oder emulierte Geräte verwendet werden. Das Plugin kann (und wird üblicherweise) zusammen mit dem [[Expecco_GUI_Tests_Extension_Reference|GUI-Browser]] verwendet werden, der das Erstellen von Tests unterstützt. Zudem ist damit das Aufzeichnen von Testabläufen möglich.&lt;br /&gt;
&lt;br /&gt;
Zur Verbindung mit den Geräten wird [http://appium.io/ Appium] verwendet. Appium ist ein freies Open-Source-Framework zum Testen und Automatisieren von mobilen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Dieses Dokument bezieht sich auf das Mobile Testing Plugin ab der expecco-Version 2.10. Die Dokumentation für Version 2.9 finden Sie unter [[Appium Plugin Reference]].&lt;br /&gt;
&lt;br /&gt;
Zur Einarbeitung in das Mobile Plugin empfehlen wir das [[#Tutorial|Tutorial]] zu bearbeiten. Dieses führt anhand eines Beispiels Schritt für Schritt durch die Erstellung eines Testfalls und erklärt die nötigen Grundlagen.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= Voraussetzungen =&lt;br /&gt;
*Appium-Server 1.4.16&lt;br /&gt;
Android-Geräte ab der Version 2.3.3 bis Version 6.0&lt;br /&gt;
*Java jdk Version 7 oder 8&lt;br /&gt;
*Android sdk&lt;br /&gt;
iOS-Geräte bis Version 9.3&lt;br /&gt;
*ideviceinstaller&lt;br /&gt;
*libimobiledevice&lt;br /&gt;
*Xcode 7.3.x--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation und Aufbau =&lt;br /&gt;
Zur Verwendung des Mobile Testing Plugins müssen Sie expecco inkl. Plugins installiert haben und Sie benötigen die entsprechenden Lizenzen. expecco kommuniziert mit den Mobilgeräten über einen Appium-Server, der entweder auf dem Rechner läuft, auf dem auch expecco ausgeführt wird, oder auf einem zweiten Rechner. Dieser muss für expecco erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installationsübersicht mit expecco 2.10:&#039;&#039;&#039;&lt;br /&gt;
* Appium-Server 1.4.16&lt;br /&gt;
für Android-Geräte ab der Version 2.3.3 bis Version 6.0:&lt;br /&gt;
* Java JDK Version 7 oder 8&lt;br /&gt;
* Android SDK&lt;br /&gt;
für iOS-Geräte bis Version 9.3:&lt;br /&gt;
* Xcode 7.3.x&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installationsübersicht mit expecco 2.11:&#039;&#039;&#039;&lt;br /&gt;
* Appium-Server 1.6.4&lt;br /&gt;
für Android-Geräte ab der Version 4.3:&lt;br /&gt;
* Java JDK Version 7 oder 8&lt;br /&gt;
* Android SDK&lt;br /&gt;
für iOS-Geräte ab Version 9.3:&lt;br /&gt;
* Xcode 8.2.1&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass aufgrund der Voraussetzungen iOS-Geräte nur von einem Mac aus angesteuert werden können. expecco kann dann über das Netzwerk mit dem Appium-Server auf dem Mac kommunizieren, um auf den dort angeschlossenen iOS-Geräten zu testen. Im Folgenden wird die Installation von Appium und anderer nötiger Programme für Windows und Mac OS erklärt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAufbau.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
Am einfachsten installieren Sie alles mit unserem Mobile Testing Supplement:&lt;br /&gt;
&lt;br /&gt;
*expecco 2.10: [http://download.exept.de/transfer/h-expecco-2.10.0/Mobile_Testing_Supplement_1.5.0.0_Setup.exe Mobile Testing Supplement 1.5.0.0]&lt;br /&gt;
:Dieses installiert ein Java JDK der Version 8, android-sdk und Appium in der Version 1.4.16. Während der Installation wird die grafische Oberfläche von Appium gestartet, dieses Fenster können Sie sofort wieder schließen. Außerdem bietet das Supplement auch einen universellen adb-Treiber ([http://download.clockworkmod.com/test/UniversalAdbDriverSetup.msi ClockworkMod]) an. Dieser vereint Treiber für ein breites Spektrum an Android-Geräten, sodass Sie nicht für jedes Gerät einen eigenen Treiber suchen und installieren müssen.&lt;br /&gt;
*expecco 2.11: [http://download.exept.de/transfer/h-expecco-2.11.0-pre/MobileTestingSupplement_1.6_Setup.exe Mobile Testing Supplement 1.6.0.0] &lt;br /&gt;
:Dieses installiert ein Java JDK der Version 8, android-sdk und Appium in der Version 1.6.4. Außerdem bietet das Supplement auch einen universellen adb-Treiber ([http://download.clockworkmod.com/test/UniversalAdbDriverSetup.msi ClockworkMod]) an. Dieser vereint Treiber für ein breites Spektrum an Android-Geräten, sodass Sie nicht für jedes Gerät einen eigenen Treiber suchen und installieren müssen.&lt;br /&gt;
&lt;br /&gt;
Beim Starten von Appium kann es vorkommen, dass die Windows-Firewall den Node-Server blockiert. In diesem Fall kann expecco keinen Appium-Server starten. Starten Sie daher nach der Installation am besten die Datei &#039;&#039;appium.cmd&#039;&#039; im Ordner &#039;&#039;appium&#039;&#039; des Mobile Testing Supplements. Wenn sich der Appium-Server starten lässt, sollte es auch von expecco aus funktionieren. Meldet sich hingegen die Windows-Firewall, lassen Sie den Zugriff zu.&lt;br /&gt;
&lt;br /&gt;
== Mac OS ==&lt;br /&gt;
=== expecco 2.10 ===&lt;br /&gt;
Auf dem verwendeten Mac sollte als Betriebssystemversion OS X 10.11.5 (El Capitan) oder neuer laufen. Zur Automatisierung mit iOS-Geräten bis Version 9.3 ist eine Installation von Xcode 7.3 nötig, die auf älteren Betriebssystemen nicht läuft (siehe auch [https://en.wikipedia.org/wiki/Xcode#Version_comparison_table Xcode-Versionen]). Installieren Sie Xcode aus dem App Store. Außerdem benötigt Appium eine Java-Installation. Installieren Sie dazu ein JDK in Version 7 oder 8. Mithilfe unseres [http://download.exept.de/transfer/h-expecco-2.10.0/Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2 Mobile Testing Supplements für Mac OS] können Sie nun noch Appium 1.4.16 installieren. Nachdem Sie es heruntergeladen haben, können Sie es in ein Verzeichnis Ihrer Wahl (z. B. Ihr Home-Verzeichnis) verschieben und dort entpacken. Ein geeigneter Befehl in einer Shell könnte so aussehen:&lt;br /&gt;
 tar -xvpf Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2&lt;br /&gt;
Wenn Xcode 7.3 Ihre Standard-Xcode-Installation ist, können Sie Appium direkt starten:&lt;br /&gt;
 Mobile_Testing_Supplement/bin/start-appium-1.4.16&lt;br /&gt;
Falls Xcode 7.3 nicht als Standard-Xcode konfiguriert ist, müssen Sie Appium den entsprechenden Pfad über die Umgebungsvariable &#039;&#039;DEVELOPER_DIR&#039;&#039; angeben. Wenn Sie Xcode z. B. in &#039;&#039;/Applications/Xcode-7.3.app&#039;&#039; installiert haben, können Sie Appium so starten:&lt;br /&gt;
 DEVELOPER_DIR=&amp;quot;/Applications/Xcode-7.3.app/Contents/Developer&amp;quot; Mobile_Testing_Supplement/bin/start-appium-1.4.16&lt;br /&gt;
Was in Ihrem System als Standard-Xcode-Installation gesetzt ist, können Sie mit diesem Befehl herausfinden:&lt;br /&gt;
 xcode-select -p&lt;br /&gt;
Wenn Appium Ihre Xcode-Installation nicht findet, erscheint beim Verbinden eine Fehlermeldung in der Art:&lt;br /&gt;
&#039;&#039;&amp;lt;blockquote&amp;gt;org.openqa.selenium.SessionNotCreatedException - A new session could not be created. (Original error: Could not find path to Xcode, environment variable DEVELOPER_DIR set to: /Applications/Xcode.app but no Xcode found)&amp;lt;/blockquote&amp;gt;&#039;&#039;&lt;br /&gt;
Starten Sie in einem solchen Fall Appium erneut unter Angabe eines gültigen &#039;&#039;DEVELOPER_DIR&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.11 ===&lt;br /&gt;
Auf dem verwendeten Mac sollte als Betriebssystemversion OS X 10.11.5 (El Capitan) oder neuer laufen. Zur Automatisierung von iOS-Geräten ab Version 10 ist eine Installation von einem vergleichbar neuen Xcode 8 nötig (für iOS 10.1 mind. Xcode 8.1, für iOS 10.2 mind. Xcode 8.2, usw.), die auf älteren Betriebssystemen nicht läuft (siehe auch [https://en.wikipedia.org/wiki/Xcode#Version_comparison_table Xcode-Versionen]). Installieren Sie Xcode aus dem App Store. Außerdem benötigt Appium eine Java-Installation. Installieren Sie dazu ein JDK in Version 7 oder 8. Mithilfe unseres [http://download.exept.de/transfer/h-expecco-2.11.0-pre/Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2 Mobile Testing Supplements für Mac OS] können Sie nun noch Appium 1.6.4 installieren. Nachdem Sie es heruntergeladen haben, können Sie es in ein Verzeichnis Ihrer Wahl (z. B. Ihr Home-Verzeichnis) verschieben und dort entpacken. Ein geeigneter Befehl in einer Shell könnte so aussehen:&lt;br /&gt;
 tar -xvpf Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2&lt;br /&gt;
Wenn Xcode 8.2 Ihre Standard-Xcode-Installation ist, können Sie Appium direkt starten:&lt;br /&gt;
 Mobile_Testing_Supplement/bin/start-appium-1.6.4&lt;br /&gt;
Falls Xcode 8.2 nicht als Standard-Xcode konfiguriert ist, müssen Sie Appium den entsprechenden Pfad über die Umgebungsvariable &#039;&#039;DEVELOPER_DIR&#039;&#039; angeben. Wenn Sie Xcode z. B. in &#039;&#039;/Applications/Xcode-8.2.app&#039;&#039; installiert haben, können Sie Appium so starten:&lt;br /&gt;
 DEVELOPER_DIR=&amp;quot;/Applications/Xcode-8.2.app/Contents/Developer&amp;quot; Mobile_Testing_Supplement/bin/start-appium-1.6.4&lt;br /&gt;
Was in Ihrem System als Standard-Xcode-Installation gesetzt ist, können Sie mit diesem Befehl herausfinden:&lt;br /&gt;
 xcode-select -p&lt;br /&gt;
Wenn Appium Ihre Xcode-Installation nicht findet, erscheint beim Verbinden eine Fehlermeldung in der Art:&lt;br /&gt;
&#039;&#039;&amp;lt;blockquote&amp;gt;org.openqa.selenium.SessionNotCreatedException - A new session could not be created. (Original error: Could not find path to Xcode, environment variable DEVELOPER_DIR set to: /Applications/Xcode.app but no Xcode found)&amp;lt;/blockquote&amp;gt;&#039;&#039;&lt;br /&gt;
Starten Sie in einem solchen Fall Appium erneut unter Angabe eines gültigen &#039;&#039;DEVELOPER_DIR&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um eine App starten zu können, muss ein Entwicklerzertifikat mit dem dazugehörigen privaten Schlüssel in der Schlüsselbundverwaltung des verwendeten Macs enthalten und der Zugriff darauf freigegeben sein. Wenn sich kein solches Zertifikat auf Ihrem Mac befindet, können Sie eines importieren; das Dateiformat hierfür ist p12. Öffnen Sie dazu die Schlüsselbundverwaltung und wählen Sie den Schlüsselbund &#039;&#039;Anmeldung&#039;&#039; aus. Importieren Sie die Datei über das Menü &#039;&#039;Ablage&#039;&#039; &amp;gt; &#039;&#039;Objekte importieren&#039;&#039;. Selektieren Sie nun das Zertifikat und wählen Sie im Rechtsklick-Menü den Punkt &#039;&#039;Informationen&#039;&#039; aus. Unter den Details des Zertifikats finden Sie die Team-ID, die hier als Organisationseinheit bezeichnet wird. Merken Sie sich diese zehnstellige ID. Geben Sie bei den Verbindungseinstellungen zusätzlich die Capability &#039;&#039;xcodeOrgId&#039;&#039; an und setzen Sie als Wert diese ID. Lesen Sie dazu den [[#Erweiterte_Ansicht | Abschnitt zur erweiterten Ansicht des Verbindungsdialogs]].&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Plugins ==&lt;br /&gt;
Bevor Sie loslegen, sollten Sie die Einstellungen des Mobile Testing Plugins überprüfen und ggf. anpassen. Öffnen Sie im Menü den Punkt &#039;&#039;Extras&#039;&#039; &amp;gt; &#039;&#039;Einstellungen&#039;&#039; und dort unter &#039;&#039;Erweiterungen&#039;&#039; den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (s. Abb.). Standardmäßig werden diese Pfade automatisch gefunden (1). Um einen Pfad manuell anzupassen, deaktivieren sie den entsprechenden Haken rechts davon. Sie erhalten in einer Drop-down-Liste einige Pfade zur Auswahl. Ist ein eingetragener Pfad falsch oder kann er nicht gefunden werden, wird das Feld rot markiert und es erscheint ein diesbezüglicher Hinweis. Stellen Sie sicher, dass alle Pfade richtig angegeben sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungen.png | thumb | 400px | Konfiguration des Plugins]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;appium&#039;&#039;&#039;: Geben Sie hier den Pfad zur ausführbaren Datei an mit der Appium in der Kommandozeile gestartet werden kann. Unter Windows wird diese Datei in der Regel &#039;&#039;appium.cmd&#039;&#039; heißen. Dieser Pfad wird benutzt, wenn expecco einen Appium-Server startet.&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039;: Geben Sie hier den Pfad zur ausführbaren Datei an, die Node startet. Dieser Pfad wird beim Starten eines Servers an Appium weitergegeben, damit Appium ihn unabhängig von der PATH-Variablen findet. Unter Windows heißt diese Datei in der Regel &#039;&#039;node.exe&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;JAVA_HOME&#039;&#039;&#039;: Geben Sie hier den Pfad zu einem JDK an. Dieser Pfad wird an jeden Appium-Server weitergegeben. Lassen Sie das Feld frei, um den Wert aus der Umgebungsvariablen zu verwenden. Um einzustellen, welches Java von expecco verwendet werden soll, setzen Sie diesen Pfad in den Einstellungen für die Java-Bridge.&lt;br /&gt;
*&#039;&#039;&#039;ANDROID_HOME&#039;&#039;&#039;: Geben Sie hier den Pfad zu einem SDK von Android an. Dieser Pfad wird an jeden Appium-Server weitergegeben. Lassen Sie das Feld frei, um den Wert aus der Umgebungsvariablen zu verwenden.&lt;br /&gt;
*&#039;&#039;&#039;adb&#039;&#039;&#039;: Hier steht der Pfad zum adb-Befehl. Unter Windows heißt die Datei adb.exe. Diese wird von expecco beispielsweise verwendet, um die Liste der angeschlossenen Geräte zu erhalten. Diesen Pfad sollten Sie automatisch wählen lassen, da dann der Befehl im ANDROID_HOME-Verzeichnis verwendet wird. Dieser wird auch von Appium verwendet. Falls expecco und Appium jedoch verschiedene Versionen von adb verwenden kann es zu Konflikten kommen.&lt;br /&gt;
*&#039;&#039;&#039;android.bat&#039;&#039;&#039;: Diese Datei wird nur benötigt, um damit den AVD und den SDK Manager zu starten. Automatisch wird hier die Datei im ANDROID_HOME-Verzeichnis gesucht.&lt;br /&gt;
*&#039;&#039;&#039;aapt&#039;&#039;&#039;: Geben Sie hier den Pfad zum aapt-Befehl an. Unter Windows heißt diese Datei &#039;&#039;aapt.exe&#039;&#039;. expecco verwendet aapt nur im Verbindungseditor, um das Paket und die Activities einer apk-Datei zu lesen. Automatisch wird hier die Datei im ANDROID_HOME-Verzeichnis gesucht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingJavaBridgeEinstellungen.png | thumb | 400px | Konfiguration des JDKs]]&lt;br /&gt;
&lt;br /&gt;
Die Einstellung zur Serveradresse unten auf der Seite bezieht sich auf das Verhalten des Verbindungseditors. Dieser prüft am Ende, ob die Serveradresse auf &#039;&#039;/wd/hub&#039;&#039; endet, da dies die übliche Form ist. Falls nicht, wird in einem Dialog gefragt, wie darauf reagiert werden soll. Das festgelegte Verhalten kann hier eingesehen und verändert werden.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie ebenfalls zum Eintrag &#039;&#039;Java Bridge&#039;&#039; (s. Abb.). Hier muss der Pfad zu Ihrer Java-Installation angegeben werden, die von expecco benutzt wird. Tragen Sie hier ein JDK ein. Falls Sie unter Windows das aus dem Mobile Testing Supplement verwenden möchten, lautet der Pfad&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;C:\Program Files (x86)\exept\Mobile Testing Supplement\jdk&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Sie können auch die Systemeinstellungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Android-Gerät vorbereiten ==&lt;br /&gt;
Wenn Sie ein Android-Gerät unter Windows anschließen benötigen Sie möglicherweise noch einen adb-Treiber für das Gerät. Einen passenden Treiber finden Sie üblicherweise auf der jeweiligen Webseite des Herstellers. Haben Sie den Universal-Treiber aus dem Mobile Testing Supplement installiert, sollte bereits alles funktionieren und das Gerät korrekt erkannt werden.&lt;br /&gt;
&lt;br /&gt;
Bevor Sie ein Mobilgerät mit dem Appium-Plugin ansteuern können, müssen Sie für dieses Debugging erlauben. Für Android-Geräte finden Sie diese Option in den Einstellungen unter &#039;&#039;[https://www.droidwiki.de/wiki/Entwickleroptionen Entwickleroptionen]&#039;&#039; mit dem Namen &#039;&#039;[https://www.droidwiki.de/USB-Debugging USB-Debugging]&#039;&#039;. Falls die Entwickleroptionen nicht angezeigt werden, können Sie diese freischalten, indem Sie unter &#039;&#039;Über das Telefon&#039;&#039; siebenmal auf &#039;&#039;Build-Nummer&#039;&#039; tippen. Aktivieren Sie auch die Funktion &#039;&#039;Wach bleiben&#039;&#039;, damit das Gerät nicht während der Testerstellung oder -ausführung den Bildschirm abschaltet. Aus Sicherheitsgründen muss USB-Debugging für jeden Computer einzeln zugelassen werden. Beim Verbinden des Geräts mit dem PC über USB müssen Sie dabei am Gerät der Verbindung zustimmen. Falls Sie dies für Ihren Computer noch nicht getan haben, aber auf dem Gerät kein entsprechender Dialog erscheint, kann es helfen, das Gerät aus- und wieder einzustecken. Das kann insbesondere dann passieren, wenn Sie den ADB-Treiber installiert haben während das Gerät bereits über USB angeschlossen war.&lt;br /&gt;
&lt;br /&gt;
Sie können auch auf einem Emulator testen. Dieser muss nicht mehr gesondert vorbereitet werden, da er bereits für USB-Debugging ausgelegt ist. Es ist sogar möglich, einen Emulator bei Testbeginn zu starten.&lt;br /&gt;
&lt;br /&gt;
Um zu überprüfen, ob ein Gerät, das Sie an Ihren Rechner angeschlossen haben, verwendet werden kann, öffnen Sie den [[#Verbindungseditor|Verbindungseditor]]. Das Gerät sollte dort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Verbindung über WLAN ===&lt;br /&gt;
Es ist auch möglich, Android-Geräte über WLAN zu verbinden. Dazu müssen Sie zunächst das Gerät über USB mit dem Rechner verbinden. Öffnen Sie dann die Eingabeaufforderung und geben Sie dort&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb tcpip 5555&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Damit lauscht das Gerät auf eine TCP/IP-Verbindung an Port 5555. Sollten Sie mehrere Geräte angeschlossen oder Emulatoren laufen haben, müssen Sie genauer angeben, welches Gerät Sie meinen. Geben Sie in diesem Fall&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb devices -l&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Sie erhalten eine Liste aller Geräte, wobei die erste Spalte deren Kennung ist. Schreiben Sie dann stattdessen&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb -s &amp;lt;Gerätekennung&amp;gt; tcpip 5555&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
mit der Gerätekennung des gewünschten Geräts. Sie können die USB-Verbindung nun trennen. Jetzt müssen Sie die IP-Adresse Ihres Gerätes in Erfahrung bringen. Sie finden diese üblicherweise irgendwo in den Einstellungen des Geräts, beispielsweise beim Status oder in den WLAN-Einstellungen. Geben Sie dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb connect &amp;lt;IP-Adresse des Geräts&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Damit sollte das Gerät nun über WLAN verbunden sein und kann genauso verwendet werden, wie mit USB-Verbindung. Sie können dies überprüfen, indem Sie wieder &amp;lt;tt&amp;gt;adb devices -l&amp;lt;/tt&amp;gt; eingeben oder in expecco den Verbindungsdialog öffnen. In der Liste taucht das Gerät mit seiner IP-Adresse und dem Port auf.&lt;br /&gt;
&lt;br /&gt;
== iOS-Gerät und App vorbereiten ==&lt;br /&gt;
Das Ansteuern von iOS-Geräten ist nur über einen Mac möglich. Lesen Sie daher auch den Abschnitt zur [[#Mac_OS|Installation unter Mac OS]].&lt;br /&gt;
&lt;br /&gt;
Bevor Sie ein Mobilgerät mit dem Mobile Testing Plugin ansteuern können, müssen Sie für iOS-Geräte ab iOS 8 Debugging erlauben. Aktivieren Sie dazu die Option &#039;&#039;Enable UI Automation&#039;&#039; unter dem Menüpunkt &#039;&#039;Entwickler&#039;&#039; in den Einstellungen des Geräts. Falls Sie den Eintrag &#039;&#039;Entwickler&#039;&#039; in den Einstellungen nicht finden, gehen Sie wie folgt vor: Schließen Sie das Gerät über USB an den Mac an. Dabei müssen Sie ggf. am Gerät noch der Verbindung zustimmen. Starten Sie Xcode und wählen Sie dann in der Menüleiste am oberen Bildschirmrand im Menü &#039;&#039;Window&#039;&#039; den Eintrag &#039;&#039;Devices&#039;&#039;. Es öffnet sich ein Fenster, in dem eine Liste der angeschlossenen Geräte angezeigt wird. Wählen Sie dort Ihr Gerät aus. Danach sollte der Eintrag &#039;&#039;Entwickler&#039;&#039; in den Einstellungen auf dem Gerät auftauchen. Dazu müssen Sie möglicherweise die Einstellungen beenden und neu starten.&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.10 ===&lt;br /&gt;
Die App, die Sie verwenden wollen, muss als Development-Build vorliegen. Außerdem muss die UDID des Geräts in der App hinterlegt sein.&lt;br /&gt;
&lt;br /&gt;
* Evaluierung mit Demo-App von eXept:&lt;br /&gt;
:Gerne stellen wir Ihnen eine Demo-App zur Verfügung, die als Development-Build vorliegt und die wir für Ihr Gerät signieren können. Senden Sie dazu bitte Ihrem eXept-Ansprechpartner die UDID Ihres Gerätes zu. Wie Sie die UDID Ihres Gerätes ermitteln können, ist im folgenden Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
* Eigene App für Ihr Testgerät verwenden:&lt;br /&gt;
:Wenn Sie von den App-Entwicklern einen Development-Build (IPA-Datei) erhalten, der für Ihr Testgerät zugelassen ist, können Sie diesen direkt verwenden. Dazu müssen Sie den Entwicklern die UDID Ihres Geräts mitteilen, damit sie diese eintragen können. &#039;&#039;&#039;Sie können die UDID eines Gerätes mithilfe von Xcode auslesen&#039;&#039;&#039;. Starten Sie dazu Xcode und wählen Sie in der Menüleiste am oberen Bildschirmrand im Menü &#039;&#039;Window&#039;&#039; den Eintrag &#039;&#039;Devices&#039;&#039;. Es öffnet sich ein Fenster, in dem eine Liste der angeschlossenen Geräte angezeigt wird. Wählen Sie Ihr Gerät aus und suchen Sie in Eigenschaften den Eintrag &#039;&#039;Identifier&#039;&#039;. Die UDID ist eine 40-stellige Hexadezimalzahl.&lt;br /&gt;
&lt;br /&gt;
* Extern entwickelte App für Ihr Testgerät umsignieren:&lt;br /&gt;
:Es können auch Apps umsigniert werden, damit Sie auf anderen Geräten lauffähig sind. Dieser Vorgang ist jedoch kompliziert und setzt insbesondere einen Zugang zu einem Apple-Developer-Account voraus. Eine Dokumentation zur Vorgehensweise ist derzeit in Vorbereitung.&lt;br /&gt;
&lt;br /&gt;
:Für die Evaluierung unterstützen wir Sie gerne beim Umsignieren Ihrer App.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Melden Sie sich beim [https://developer.apple.com/ Apple-Webinterface] an. Navigieren Sie zu &#039;&#039;Certificates, IDs &amp;amp; Profiles&#039;&#039;. Erzeugen Sie hier ggf. ein Developer-Zertifikat und ein Provisioning Profile für Ihr Gerät und laden Sie beide herunter. Sollten Sie noch keinen Developer Account haben, erstellen Sie hier einen: https://developer.apple.com/enroll/. Hierzu müssen Sie sich mit einer Apple-ID anmelden.&lt;br /&gt;
&lt;br /&gt;
# Team-ID herausfinden (&#039;&#039;Membership&#039;&#039; -&amp;gt; &#039;&#039;Team ID&#039;&#039;)&lt;br /&gt;
# Unter &#039;&#039;Certificates, IDs &amp;amp; Profiles&#039;&#039; Development-Zertifikat auswählen (unter &#039;&#039;+&#039;&#039; anlegen, falls nicht vorhanden) und herunterladen.&lt;br /&gt;
# Unter &#039;&#039;App ID&#039;&#039; Wildcard-App-ID erzeugen, falls nicht vorhanden. App-ID notieren (AppID = Prefix.ID)&lt;br /&gt;
# Gerät hinzufügen, dazu UDID (bzw. &#039;&#039;Identifier&#039;&#039;) des Geräts herausfinden (&#039;&#039;Xcode&#039;&#039; -&amp;gt; &#039;&#039;Window&#039;&#039; (oben in Menüleiste) -&amp;gt; &#039;&#039;Devices&#039;&#039;)&lt;br /&gt;
# Provisionen Profile erstellen: &#039;&#039;iOS App Development&#039;&#039; -&amp;gt; &#039;&#039;AppID&#039;&#039; auswählen -&amp;gt; Zertifikat wählen -&amp;gt; Gerät auswählen -&amp;gt; Profilname anlegen -&amp;gt; Provisioning Profile herunterladen.&lt;br /&gt;
# Das heruntergeladene Zertifikat importieren (&#039;&#039;Downloads&#039;&#039; -&amp;gt; Zertifikat (.cer) &lt;br /&gt;
# SHA1-Fingerabdruck kopieren. Dazu Rechtsklick auf Zertifikat  -&amp;gt; &#039;&#039;Information&#039;&#039;, anschließend bis zum Ende der Seite scrollen).&lt;br /&gt;
# Entitlements.plist erstellen (&#039;&#039;Terminal&#039; öffnen  -&amp;gt; &lt;br /&gt;
 Downloads/Mobile_Testing_Supplement/bin/gen-entitlements_plist &#039;Team-ID&#039; &#039;App ID&#039;  &lt;br /&gt;
 Downloads/Mobile_Testing_Supplement/bin/re-sign-ipa &amp;lt;Pfad zum ipa (z.B. Downloads/expeccoMobileDemo.ipa)&amp;gt; \&lt;br /&gt;
&amp;quot;&amp;lt;Zertifikat (SHA1-Fingerabdruck, z.B. 76 E8 4B E8 78 D5 D7 F9 2E 09 8B D7 E8 FB CE 30 0C F5 D0 EF)&amp;gt;&amp;quot; \&lt;br /&gt;
&amp;lt;Pfad zum Provisionen Profile (z.B. /Users/exept_test/Downloads/dut.mobileprovision)&amp;gt; \&lt;br /&gt;
&amp;lt;Pfad für das Ergebnis-ipa (z.B. Downloads/expeccoMobileDemo_re-signed.ipa)&amp;gt; \&lt;br /&gt;
 [Pfad zur entitlements.plist] (z.B. /Users/exept_test/entitlements.plist)&lt;br /&gt;
&lt;br /&gt;
Zum Umsignieren können Sie das entsprechende Script aus dem Mobile Testing Supplement für Mac OS oder jedes beliebige andere Tool (z.B. isign) verwenden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zur Verwendung von iOS-Geräten finden Sie auch in der [http://appium.io/slate/en/1.4/?java#appium-on-real-ios-devices Dokumentation von Appium].&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.11 ===&lt;br /&gt;
Mit expecco 2.11 brauchen Sie keine Anpassungen an der App. Sie brauchen nur ein Entwicklerzertifikat in der Schlüsselbundverwaltung des Macs. Lesen Sie dazu den entsprechenden Abschnitt im Kapitel [[#Mac_OS | Installation und Aufbau für Mac OS]]. Geben Sie bei den Verbindungseinstellungen zusätzlich die Capability &#039;&#039;xcodeOrgId&#039;&#039; an und setzen Sie als Wert die Team-ID des Zertifikats. Lesen Sie dazu den [[#Erweiterte_Ansicht | Abschnitt zur erweiterten Ansicht des Verbindungsdialogs]].&lt;br /&gt;
&lt;br /&gt;
= Dialoge des Mobile Testing Plugins =&lt;br /&gt;
== Verbindungseditor ==&lt;br /&gt;
Mithilfe des Verbindungseditors können Sie schnell Verbindungen definieren, ändern oder aufbauen. Je nach Aufgabe weist der Dialog kleine Unterschiede auf und wird unterschiedlich geöffnet: &lt;br /&gt;
*Wenn Sie eine Verbindung aufbauen wollen, erreichen Sie den Dialog im GUI-Browser, indem Sie auf &#039;&#039;Verbinden&#039;&#039; klicken und dann &#039;&#039;Mobile Testing&#039;&#039; auswählen.&lt;br /&gt;
*Um eine bestehende Verbindung im GUI-Browser zu ändern oder zu kopieren, wählen Sie diese aus, machen einen Rechtsklick und wählen im Kontextmenü entsprechend &#039;&#039;Verbindung bearbeiten&#039;&#039; oder &#039;&#039;Verbindung kopieren&#039;&#039; aus.&lt;br /&gt;
*Wollen Sie Verbindungseinstellungen  nicht für den GUI-Browser sondern zur Verwendung in einem Test erstellen, wählen Sie im Menü des Mobile Testing Plugins den Punkt &#039;&#039;Verbindungseinstellungen erstellen...&#039;&#039;. Darüber können nur die Einstellungen für eine Verbindung erstellt werden, ohne dass eine Verbindung im GUI-Browser angelegt wird.&lt;br /&gt;
&lt;br /&gt;
Das Menü des Verbindungseditors weist verschiedenen Schaltflächen auf, von denen manche nur beim Erstellen von Verbindungseinstellungen sichtbar sind:&lt;br /&gt;
*&#039;&#039;Einstellungen löschen&#039;&#039;: Setzt alle Einträge zurück. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Einstellungen aus Datei laden&#039;&#039;: Erlaubt das Öffnen einer gespeicherten Einstellungsdatei (*.csf). Deren Einstellungen werden in den Dialog übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.&lt;br /&gt;
*&#039;&#039;Einstellungen aus Anhang laden&#039;&#039;: Erlaubt das Öffnen eines Anhangs mit Verbindungseinstellungen aus einem geöffneten Projekt. Diese Einstellungen werden in den Dialog übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.&lt;br /&gt;
*&#039;&#039;Einstellungen in Datei speichern&#039;&#039; und &#039;&#039;Einstellungen in Anhang speichern&#039;&#039;: Hier können Sie die eingetragenen Einstellungen in eine Datei (*.csf) speichern oder als Anhang in einem geöffneten Projekt anlegen. Beide Optionen besitzen ein verzögertes Menü, in dem Sie auswählen können, nur einen bestimmten Teil der Einstellungen zu speichern. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Erweiterte Ansicht&#039;&#039;: Damit können Sie in die erweiterte Ansicht wechseln, um zusätzliche Einstellungen vorzunehmen. Lesen Sie dazu mehr am Ende des Kapitels. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Hilfe&#039;&#039;: An der rechten Seite wird ein Hilfetext zum jeweiligen Schritt ein- oder ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Der Dialog ist in drei Schritte unterteilt. Im ersten Schritt wählen Sie das Gerät, das Sie verwenden möchten. Im oberen Teil erhalten Sie eine Liste aller angeschlossenen Geräte, die erkannt werden. Mit der Checkbox darunter können Sie die Geräte ausblenden, die zwar erkannt werden, aber nicht bereit sind. Falls Sie ein Gerät eintragen wollen, das nicht angeschlossen ist, können Sie dies mit dem entsprechenden Knopf &#039;&#039;Android-Gerät eingeben&#039;&#039; bzw. &#039;&#039;iOS-Gerät eingeben&#039;&#039; anlegen. Dazu müssen Sie jedoch die benötigten Eigenschaften Ihres Geräts kennen. Das Gerät wird dann in einer zweiten Geräteliste angelegt und kann dort ausgewählt werden. Wenn keine Liste mit angeschlossenen Elementen angezeigt werden kann, werden stattdessen verschiedene Meldungen angezeigt:&lt;br /&gt;
*Keine Geräte gefunden&lt;br /&gt;
*:expecco konnte keine Android-Geräte finden.&lt;br /&gt;
*:Um eine Verbindung zu einem Gerät automatisch zu konfigurieren, stellen Sie sicher, dass es&lt;br /&gt;
*:*angeschlossen ist&lt;br /&gt;
*:*eingeschaltet ist&lt;br /&gt;
*:*einen passenden adb-Treiber installiert hat&lt;br /&gt;
*:*für Debugging freigeschaltet ist.&lt;br /&gt;
*Keine verfügbaren Geräte gefunden&lt;br /&gt;
*:expecco konnte keine verfügbaren Android-Geräte finden. Es wurden aber nicht verfügbare gefunden, z.B. mit dem Status &amp;quot;unauthorized&amp;quot;.&lt;br /&gt;
*:Um eine Verbindung zu einem Gerät automatisch zu konfigurieren, stellen Sie sicher, dass es&lt;br /&gt;
*:*angeschlossen ist&lt;br /&gt;
*:*eingeschaltet ist&lt;br /&gt;
*:*einen passenden adb-Treiber installiert hat&lt;br /&gt;
*:*für Debugging freigeschaltet ist.&lt;br /&gt;
*:Um nicht verfügbare Geräte anzuzueigen, aktivieren Sie\unten diese Option.&lt;br /&gt;
*Verbindung verloren&lt;br /&gt;
*:expecco hat die Verbindung zum adb-Server verloren. Versuchen Sie die Verbindung wieder herzustellen, indem Sie auf den Button klicken.&lt;br /&gt;
*Verbindung fehlgeschlagen&lt;br /&gt;
*:expecco konnte sich nicht mit dem adb-Server\verbinden. Möglicherweise läuft er nicht oder der angegebene Pfad stimmt nicht.&lt;br /&gt;
*:Überprüfen Sie die adb-Konfiguration in den Einstellungen und versuchen Sie den adb-Server zu starten und eine Verbindung herzustellen indem Sie auf den Knopf klicken.&lt;br /&gt;
*Verbinden ...&lt;br /&gt;
*:expecco verbindet sich mit dem adb-Server. Dies kann einige Sekunden dauern.&lt;br /&gt;
*adb-Server starten ...&lt;br /&gt;
*:expecco startet den adb-Server. Dies kann einige Sekunden dauern.&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;Automatisierung durch&#039;&#039; können Sie angeben, welche Automation-Engine verwendet werden soll. Lassen Sie die Einstellung auf &#039;&#039;(Default)&#039;&#039; wird die entsprechende Capability gar nicht gesetzt. Ansonsten stehen Appium und Selendroid zur Verfügung. In der Regel wird Selendroid nur für Android-Geräte vor Version 4.1 gebraucht. Mit &#039;&#039;Weiter&#039;&#039; gelangen Sie zum nächsten Schritt. Wenn Sie Einstellungen für den GUI-Browser eingeben, ist das erst möglich, wenn ein Gerät ausgewählt wurde.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt können Sie Angaben zur App machen, die getestet werden soll. Dabei können Sie entscheiden, ob Sie eine App verwenden wollen, die bereits auf dem Gerät installiert ist, oder ob für den Test eine App installiert werden soll. Wählen Sie oben den entsprechenden Reiter aus. Je nachdem, ob Sie im vorigen Schritt ein Android- oder ein iOS-Gerät ausgewählt haben, ändert sich die erforderte Eingabe.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Android&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;App auf dem Gerät&#039;&#039;&lt;br /&gt;
**:Wenn Sie im ersten Schritt ein angeschlossenes Gerät ausgewählt haben, werden die Pakete aller installierten Apps automatisch abgerufen und Sie können die Auswahl aus den Drop-down-Listen treffen. Die installierten Apps sind in Fremdpakete und Systempakete unterteilt; wählen Sie die entsprechende Paketliste aus. Diese Auswahl gehört nicht zu den Einstellungen, sondern stellt nur die entsprechende Paketliste zur Verfügung. Sie können den Filter benutzen, um die Liste weiter einzuschränken und dann das gewünschte Paket auswählen. Die Activities des ausgwählten Pakets werden ebenfalls automatisch abgerufen und ebenfalls als Drop-down-Liste zur Verfügung gestellt. Wählen Sie die Activity aus, die gestartet werden soll. Falls es nur eine Activity gibt, wird diese sofort automatisch eingetragen. Falls Sie kein verbundenes Gerät verwenden, müssen Sie die Eingabe des Pakets und der Activity von Hand vornehmen.&lt;br /&gt;
**&#039;&#039;App installieren&#039;&#039;&lt;br /&gt;
**:Geben Sie bei &#039;&#039;App&#039;&#039; den Pfad zu einer App an. Der Pfad muss für den Appium-Server gültig sein, der verwendet wird. Sie können auch eine URL angeben. Benutzen Sie einen lokalen Appium-Server, können Sie den rechten Butten benutzen, um zu der Installationsdatei der App zu navigieren und diesen Pfad einzutragen. Wenn möglich werden dabei auch das entsprechende Paket und die Activity in den Feldern darunter eingetragen. Diese Angabe ist aber nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;iOS&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;App auf dem Gerät&#039;&#039;&lt;br /&gt;
**:Geben Sie die Bundle-ID einer installierten App an. Sie können die IDs der installierten Apps bspw. mithilfe von Xcode erfahren.&lt;br /&gt;
**&#039;&#039;App installieren&#039;&#039;&lt;br /&gt;
**:Geben Sie bei &#039;&#039;App&#039;&#039; den Pfad zu einer App an. Der Pfad muss für den Appium-Server gültig sein, der verwendet wird. Sie können auch eine URL angeben. Für reale Geräte muss diese App ein signierter Development-Build sein.&lt;br /&gt;
&lt;br /&gt;
Im unteren Teil können Sie festlegen, ob die App beim Verbindungsabbau zurückgesetzt bzw. deinstalliert werden soll, und ob sie initial zurückgesetzt werden soll. Auch hier wird die entsprechende Capability gar nicht gesetzt, wenn Sie &#039;&#039;(Default)&#039;&#039; auswählen. Mit &#039;&#039;Weiter&#039;&#039; gelangen Sie zum nächsten Schritt.&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt befindet sich zunächst im oberen Teil eine Liste aller Capabilities, die sich aus Ihren Angaben der vorigen Schritte ergeben. Wenn Sie sich mit Appium auskennen und noch zusätzliche Capabilities setzen möchten, die der Verbindungseditor nicht abdeckt, können Sie durch Klicken auf &#039;&#039;Bearbeiten&#039;&#039; in die erweiterte Ansicht gelangen. Lesen Sie dazu den Abschnitt weiter unten.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie Einstellungen für den GUI-Browser eingeben, können Sie den &#039;&#039;Verbindungsnamen&#039;&#039; eintragen, mit dem die Verbindung angezeigt wird. Dies ist auch der Name unter dem Bausteine diese Verbindung verwenden können, wenn sie aufgebaut ist. Wenn Sie das Feld frei lassen, wird ein Name generiert. Um die Adresse für den Appium-Server anzugeben, erhalten Sie die lokale Stadard-Adresse und bereits verwendete Adressen zur Auswahl. Wenn Sie den Haken für &#039;&#039;Bei Bedarf starten&#039;&#039; setzen, versucht expecco beim Verbinden einen Appium-Server an der angegebenen Adresse zu starten, wenn dort noch keiner läuft. Dieser Server wird dann beim Beenden der Verbindung ebenfalls heruntergefahren. Dies funktioniert nur für lokale Adressen. Achten Sie darauf, nur Portnummern zu verwenden, die auch frei sind. Verwenden Sie am besten nur ungerade Portnummern ab dem Standardport 4723. Beim Verbindungsaufbau wird ebenfalls die folgende Portnummer verwendet, wodurch es sonst zu Konflikten kommen könnte.&lt;br /&gt;
&lt;br /&gt;
Je nachdem, wie Sie den Dialog geöffnet haben, gibt es nun verschiedene Schaltflächen um ihn abzuschließen. In jedem Fall haben Sie die Option zu speichern. Dabei öffnet sich ein Dialog, indem Sie entweder ein geöffnet Projekt auswählen können, um die Einstellungen dort als Anhang zu speichern, oder auswählen es in einer Datei zu speichern, die Sie anschließend angeben können. Durch das Speichern wird der Dialog nicht beendet, wodurch Sie anschließend noch eine andere Option auswählen könnten.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Editor zum Verbindungsaufbau geöffnet haben, können Sie abschließend auf &#039;&#039;Verbinden&#039;&#039; oder &#039;&#039;Server starten und verbinden&#039;&#039; klicken, je nachdem, ob der Haken für den Serverstart gesetzt ist. Für das Ändern oder Kopieren einer Verbindung im GUI-Brower heißt diese Option &#039;&#039;Übernehmen&#039;&#039;, da in diesem Fall nur der Verbindungseintrag geändert bzw. neu angelegt wird, der Verbindungsaufbau aber nicht gestartet wird. Das können Sie bei Bedarf anschließend über das Kontextmenü tun. Falls Sie Capabilities einer bestehenden Verbindung geändert haben, fordert Sie anschließend ein Dialog auf zu entscheiden, ob diese Änderungen direkt übernommen werden sollen, indem die Verbindung abgebaut und mit den neuen Verbindungen aufgebaut wird, oder nicht. In diesem Fall werden die Änderungen erst wirksam, nachdem Sie die Verbindung neu aufbauen.&lt;br /&gt;
&lt;br /&gt;
Zur Verwendung des Verbindungseditors lesen Sie auch den entsprechenden Abschnitt im jeweiligen Tutorial in Schritt 1 (Android: [[#Schritt_1:_Demo_ausf.C3.BChren|Demo ausführen]], iOS: [[#Schritt_1:_Demo_ausf.C3.BChren_2|Demo ausführen]]).&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Ansicht ===&lt;br /&gt;
Die erweiterte Ansicht des Verbindungseditors erhalten Sie entweder durch Klicken auf &#039;&#039;Bearbeiten&#039;&#039; im dritten Schritt oder jederzeit über den entsprechenden Menüeintrag, wenn Sie den Editor über das Plugin-Menü gestartet haben. In dieser Ansicht erhalten Sie eine Liste aller eingestellten Appium-Capabilities. Zu dieser können Sie weitere hinzufügen, Einträge ändern oder entfernen. Um eine Capability hinzuzufügen, wählen Sie diese aus der Drop-down-Liste des Eingabefelds aus. In dieser befinden sich alle bekannten Capabilities sortiert in die Kategorien &#039;&#039;Common&#039;&#039;, &#039;&#039;Android&#039;&#039; und &#039;&#039;iOS&#039;&#039;. Haben Sie eine Capability ausgewählt, wird ein kurzer Informationstext dazu angezeigt. Sie können in das Feld auch von Hand eine Capability eingeben. Klicken Sie dann auf &#039;&#039;Hinzufügen&#039;&#039;, um die Capabilitiy in die Liste einzutragen. Dort können Sie in der rechten Spalte den Wert setzen. Um einen Entrag zu löschen, wählen Sie diesen aus und klicken Sie auf &#039;&#039;Entfernen&#039;&#039;. Mit &#039;&#039;Zurück&#039;&#039; verlassen Sie die erweiterte Ansicht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingErweiterteAnsicht.png]]&lt;br /&gt;
&lt;br /&gt;
== Laufende Appium-Server ==&lt;br /&gt;
Im Menü des Mobile Testing Plugins finden Sie den Eintrag &#039;&#039;Appium-Server...&#039;&#039;. Mit diesem öffnen Sie ein Fenster mit einer Übersicht aller Appium-Server, die von expecco gestartet wurden und auf welchem Port diese laufen. Durch Klicken auf das Icon in der Spalte &#039;&#039;Log anzeigen&#039;&#039; können Sie das Logfile des entsprechenden Servers anschauen. Dieses wird beim Beenden des Servers wieder gelöscht. Mit den icons in der Spalte &#039;&#039;Beenden&#039;&#039; kann der entsprechenden Server beendet werden. Allerdings wird dies verhindert, wenn expecco über diesen Server noch eine offene Verbindung hat.&lt;br /&gt;
&lt;br /&gt;
Außerdem können Sie hier auch Server starten. Verwenden Sie die Eingabefelder zur Konfiguration der Serveradresse. Sie können die Felder auch frei lassen, um die Standardwerte zu verwenden. Bitte beachten Sie, dass Server nur lokal gestartet werden können und der gewählte Port nicht belegt sein darf. Typischerweise werden die ungeraden Portnummern ab 4723 verwendet. Die folgende Portnummer wird beim Verbinden mit einem Gerät ebenfalls benötigt, wodurch es mit den geraden Nummern zu Konflikten kommen könnte.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppiumServer.png]]&lt;br /&gt;
&lt;br /&gt;
Im Menü des Mobile Testing Plugins finden Sie auch den Eintrag &#039;&#039;Alle Verbindungen und Server beenden&#039;&#039;. Dies ist für den Fall gedacht, dass Verbindungen oder Server auf andere Weise nicht beendet werden können. Beenden Sie Verbindungen wenn möglich immer im GUI-Browser oder durch Ausführen eines entsprechenden Bausteins. Server, die Sie in der Server-Übersicht gestartet haben, beenden Sie dort; Server, die mit einer Verbindung gestartet wurden, werden automatisch mit dieser beendet.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass in der Übersicht nur Server aufgelistet sind, die von expecco gestartet und verwaltet werden. Mögliche andere Appium-Server, die auf andere Art gestartet wurden, werden nicht erkannt.&lt;br /&gt;
&lt;br /&gt;
== Recorder ==&lt;br /&gt;
Besteht im GUI-Browser eine Verbindung zu einem Gerät, kann der integrierte Recorder verwendet werden, um mit diesem Gerät einen Testabschnitt aufzunehmen. Sie starten den Recorder, indem Sie im GUI-Browser die entsprechende Verbindung auswählen und dann auf den Aufname-Knopf klicken. Für den Recorder öffnet sich ein neues Fenster. Die aufgezeichneten Aktionen werden im Arbeitsbereich des GUI-Browsers angelegt. Daher ist es möglich, das Aufgenommene parallel zu editieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder.png|caption|]]&lt;br /&gt;
&lt;br /&gt;
;Komponenten des Recorderfensters&lt;br /&gt;
#&#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;: Holt das aktuelle Bild und den aktuellen Elementbaum vom Gerät. Dies wird nötig, wenn das Gerät zur Ausführung einer Aktion länger braucht oder sich etwas ohne das Anstoßen durch den Recorder ändert.&lt;br /&gt;
#&#039;&#039;&#039;Follow-Mouse&#039;&#039;&#039;: Das Element unter dem Mauszeiger wird im GUI-Browser markiert.&lt;br /&gt;
#&#039;&#039;&#039;Highlight-Selected&#039;&#039;&#039;: Das Elements unter dem Mauszeiger wird rot umrandet.&lt;br /&gt;
#&#039;&#039;&#039;Show-Bounds&#039;&#039;&#039;: Die Rahmen aller Elemente der Ansicht werden angezeigt.&lt;br /&gt;
#&#039;&#039;&#039;Werkzeuge&#039;&#039;&#039;: Auswahl, mit welchem Werkzeg aufgenommen werden soll. Die gewählte Aktion wird bei einem Klick auf die Anzeige ausgelöst. Dabei stehen folgende Aktionen zur Verfügung:&lt;br /&gt;
#*Aktionen auf Elemente:&lt;br /&gt;
#**Klicken: Kurzer Klick auf das Element über dem der Cursor steht. Zur genaueren Bestimmung, welches Element verwendet wird, benutzen Sie die Funktion Follow-Mouse oder Highlight-Selected.&lt;br /&gt;
#**Element antippen: Ähnlich zum Klicken, nur dass zusätzlich die Dauer des Klicks aufgezeichnet wird. Dadurch sind auch längere Klicks möglich.&lt;br /&gt;
#**Text anhängen: Ermöglicht das Hinzufügen eines Textes in Eingabefelder.&lt;br /&gt;
#**Text löschen: Löscht den Text eines Eingabefelds.&lt;br /&gt;
#*Aktionen auf das Gerät:&lt;br /&gt;
#**Antippen: Löst einen Klick auf die Bildschirmposition aus, bei dem auch die Dauer berücksichtigt wird.&lt;br /&gt;
#**Wischen: Wischen in einer geraden Linie vom Punkt des Drückens des Mausknopfes bis zum Loslassen. Die Dauer wird ebenfalls aufgezeichnet.&lt;br /&gt;
#:Beachten Sie bei diesen Aktionen, dass das Ergebnis sich auf verschiedenen Geräten unterscheiden kann, bspw. bei verschiedenen Bildschirmauflösungen.&lt;br /&gt;
#*Erstellen von Testablauf-Bausteinen&lt;br /&gt;
#**Attribut prüfen: Vergleicht den Wert eines festgelegten Attributs des Elements mit einem vorgegebenen Wert. Das Ergebnis triggert den entsprechenden Ausgang.&lt;br /&gt;
#**Attribut zusichern: Vergleicht den Wert eines festgelegten Attributs des Elements mit einem vorgegebenen Wert. Bei Ungleichheit schlägt der Test fehl.&lt;br /&gt;
#*Auto&lt;br /&gt;
#:Ist das Auto-Werkzeug ausgewählt, können alle Aktionen durch spezifische Eingabeweise benutzt werden: &#039;&#039;Klicken&#039;&#039;, &#039;&#039;Element antippen&#039;&#039; und &#039;&#039;Wischen&#039;&#039; funktionieren weiterhin durch Klicken, wobei sie anhand der Dauer und der Bewegung des Cursors unterschieden werden. Um ein &#039;&#039;Antippen&#039;&#039; auszulösen, halten Sie beim Klicken Strg gedrückt. Die übrigen Aktionen erhalten Sie durch einen Rechtsklick auf das Element in einem Kontextmenü.&lt;br /&gt;
#&#039;&#039;&#039;Softkeys&#039;&#039;&#039;: Nur unter Android. Simuliert das Drücken der Knöpfe Zurück, Home, Fensterliste und Power.&lt;br /&gt;
#&#039;&#039;&#039;Anzeige&#039;&#039;&#039;: Zeigt einen Screenshot des Geräts. Aktionen werden mit der Maus je nach Werkzeug ausgelöst. Wenn eine neue Aktion eingegeben werden kann, hat das Fenster einen grünen Rahmen, sonst ist er rot.&lt;br /&gt;
#&#039;&#039;&#039;Fenster an Bild anpassen&#039;&#039;&#039;: Ändert die Größe des Fensters so, dass der Screenshot vollständig angezeigt werden kann.&lt;br /&gt;
#&#039;&#039;&#039;Bild an Fenster anpassen&#039;&#039;&#039;: Skaliert den Screenshot auf eine Größe, mit der er die volle Größe des Fensters ausnutzt.&lt;br /&gt;
#&#039;&#039;&#039;Ausrichtung anpassen&#039;&#039;&#039;: Korrigiert das Bild, falls dieses auf dem Kopf stehen sollte. Über den Pfeil rechts daneben kann das Bild auch um 90° gedreht werden, falls dies einmal nötig sein sollte. Die Ausrichtung des Bildes ist für die Funktion des Recorders unerheblich, dieser arbeitet ausschließlich auf den erhaltenen Elementen.&lt;br /&gt;
#&#039;&#039;&#039;Skalierung&#039;&#039;&#039;: Ändert die Skalierung des Screenshots. Kann auch über den Schieberegler rechts daneben angepasst werden.&lt;br /&gt;
#&#039;&#039;&#039;Kontrollleuchte&#039;&#039;&#039;: Zeigt den Zustand des Recorders an&lt;br /&gt;
#:&#039;&#039;grün&#039;&#039;: Der Recorder ist bereit&lt;br /&gt;
#:&#039;&#039;rot&#039;&#039;: Der Recorder ist blockiert, weil die Anzeige und die Elementliste aktualisiert werden&lt;br /&gt;
#:&#039;&#039;grau&#039;&#039;: Der Recorder kann nicht mehr verwendet werden, da die Verbindung zum Gerät verloren gegangen ist&lt;br /&gt;
&lt;br /&gt;
;Verwendung&lt;br /&gt;
Mit jedem Klick im Fenster wird eine Aktion ausgelöst und im Arbeitsbereich des GUI-Browsers aufgezeichnet. Dort können Sie das Aufgenommene abspielen, editieren oder daraus einen neuen Baustein erstellen. Zur Verwendung des Recorders lesen Sie auch Schritt 2 im Tutorial ([[#Schritt_2:_Einen_Baustein_mit_dem_Recorder_erstellen|Android]] bzw. [[#Schritt_2:_Einen_Baustein_mit_dem_Recorder_erstellen_2|iOS]]).&lt;br /&gt;
&lt;br /&gt;
== AVD Manager und SDK Manager ==&lt;br /&gt;
AVD Manager und SDK Manager sind beides Anwendungen von Android. Im Menü des Mobile Testing Plugins bietet expecco die Möglichkeit, diese zu starten. Ansonsten finden Sie diese Programme bei Ihrer Android-Installation. Mit dem AVD Manager können Sie AVDs, also Konfigurationen für Emulatoren, erstellen, bearbeiten und starten. Mit dem SDK Manager erhalten Sie einen Überblick über Ihre Android-Installation und können diese bei Bedarf erweitern.&lt;br /&gt;
&lt;br /&gt;
= XPath anpassen mithilfe des GUI-Browsers =&lt;br /&gt;
Bausteine, die auf einem Gerät fehlerfrei funktionieren, tun dies auf anderen Geräten möglicherweise nicht. Auch können kleine Änderungen der App dazu führen, dass ein Baustein nicht mehr den gewünschten Effekt hat. Man sollte einen Baustein daher so robust formulieren, dass er für eine Vielzahl von Geräten verwendet werden kann und kleine Anpassungen an der App verkraftet. Dazu muss man das grundlegende Funktionsprinzip der Adressierung verstehen. Dies wird im Folgenden am Beispiel der App aus dem Tutorial erläutert.&lt;br /&gt;
&lt;br /&gt;
Die Ansicht der App setzt sich aus einzelnen Elementen zusammen. Dazu gehören die Schaltflächen &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; und &#039;&#039;Verify&#039;&#039;, das Eingabefeld der Zahl &#039;&#039;4006381333986&#039;&#039; und das Ergebnisfeld, in dem OK erscheint, wie auch alle anderen auf der Anzeige sichtbaren Dinge. Diese sichtbaren Elemente sind in unsichtbare Strukturelemente eingebettet. Alle Elemente zusammen sind in einer zusammenhängenden Hierarchie, dem Elementbaum, organisiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGUIBrowser.png | frame | left | Abb. 1: Funktionen des GUI-Browsers]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Sie können sich diesen Baum im GUI-Browser ansehen. Wechseln Sie dazu in den GUI-Browser (Abb. 1) und starten Sie eine beliebige Verbindung. Sobald die Verbindung aufgebaut ist, können Sie den gesamten Baum aufklappen (1) (Klick bei gedrückter Strg-Taste). Er enthält alle Elemente der aktuellen Seite der App.&lt;br /&gt;
&lt;br /&gt;
Ein Baustein, der nun ein bestimmtes Element verwendet, muss dieses eindeutig angeben, indem er dessen Position im Elementbaum mit einem Pfad im XPath-Format beschreibt. Dieses Format ist ein verbreiteter Web-Standard für XML-Dokumente und -Datenbanken, eignet sich aber genauso für Pfade im Elementbaum.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Element im Baum auswählen, wird unten der von expecco automatisch generierte XPath (2) für das Element angezeigt, der auch beim Aufzeichnen verwendet wird. Oberhalb davon in der Mitte des Fensters befindet sich eine Liste der Eigenschaften (3) des ausgewählten Elements. Man nennt diese Eigenschaften auch Attribute. Sie beschreiben das Element näher wie beispielsweise seinen Typ, seinen Text oder andere Informationen zu seinem Zustand. Links unten können Sie zur besseren Orientierung im Baum die &#039;&#039;Vorschau&#039;&#039; (4) aktivieren, um sich den Bildausschnitt des Elements anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Der Elementbaum für gleiche Ansicht einer App kann sich je nach Gerät unterscheiden. Es sind diese Unterschiede, die verhindern, eine Aufnahme von einem Gerät unverändert auch auf allen anderen Geräten abzuspielen: Ein XPath, der im einen Elementbaum ein bestimmtes Element identifiziert, beschreibt nicht unbedingt das gleiche Element im Elementbaum auf einem anderen Gerät. Es kann stattdessen passieren, dass der XPath auf kein Element, auf ein falsches Element oder auf mehrere Elemente passt. Dann schlägt der Test fehl oder er verhält sich unerwartet.&lt;br /&gt;
&lt;br /&gt;
Man könnte natürlich für jedes Gerät einen eigenen Testfall schreiben. Das brächte aber unverhältnismäßigen Aufwand bei Testerstellung und -wartung mit sich. Das Problem lässt sich auch anders lösen, da ein jeweiliges Element nicht nur durch genau einen XPath beschrieben wird. Vielmehr erlaubt der Standard mithilfe verschiedener Merkmale unterschiedliche Beschreibungen für ein und dasselbe Element zu formulieren. Das Ziel ist daher, einen Pfad zu finden, der auf allen für den Test verwendeten Geräten funktioniert und überall eindeutig zum richtigen Element führt.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel besteht die Verbindung zur Android-App aus dem Tutorial und der Eintrag des GTIN-13-Buttons ist ausgewählt (5). Dessen automatisch generierter XPath (2) kann beispielsweise so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[@resource id=&#039;android:id/content&#039;]/android.widget.RelativeLayout/android.widget.Button[@resource-id=&#039;de.exept.expeccomobiledemo:id/gtin_13&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Er ist offensichtlich lang und unübersichtlich. Der sehr viel kürzere Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//*[@text=&#039;GTIN-13 (EAN-13)&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
führt zum selben Element.&lt;br /&gt;
&lt;br /&gt;
Für die iOS-App lautet der automatisch generierte XPath für diesen Button beispielsweise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//AppiumAUT/UIAApplication/UIAWindow[1]/UIAButton[2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und kann kürzer als&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//*[@name=&#039;GTIN-13 (EAN-13)&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Sie können den Pfad entsprechend im GUI-Browser ändern und durch &#039;&#039;Pfad überprüfen&#039;&#039; (6) feststellen, ob er weiterhin auf das ausgewählte Element zeigt, was expecco mit &#039;&#039;Verify Path: OK&#039;&#039; (7) bestätigen sollte. Der erste, sehr viel längere Pfad, beschreibt den gesamten Weg vom obersten Element des Baumes bis hin zum gesuchten Button. Der zweite Pfad hingegen wählt mit * zunächst sämtliche Elemente des Baumes und schränkt die Auswahl dann auf genau die Elemente ein, die ein &#039;&#039;text&#039;&#039;- bzw. &#039;&#039;name&#039;&#039;-Attribut mit dem Wert &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; besitzen, in unserem Fall also genau der eine Button, den wir suchen.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden Android-ähnliche Pfade zur Veranschaulichung verwendet. Die Elemente in iOS-Apps heißen zwar anders, wodurch andere Pfade entstehen; das Prinzip ist jedoch das gleiche.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBaum1.png | frame | Abb. 2: Elementbaum einer fiktiven App]]&lt;br /&gt;
&lt;br /&gt;
Sie können solche Pfade mit Hilfe weniger Regeln selbst formulieren. Sehen Sie sich den einfachen Baum einer fiktiven Android-App in Abb. 2 an: Die Einrückungen innerhalb des Baumes geben die Hierarchie der Elemente wieder. Ein Element ist ein &#039;&#039;Kind&#039;&#039; eines anderen Elementes, wenn jenes andere Element das nächsthöhere Element mit einem um eins geringeren Einzug ist. Jenes Element ist das &#039;&#039;Elternelement&#039;&#039; des Kindes. Sind mehrere untereinander stehende Elemente gleich eingerückt, so sind sie also alle Kinder desselben Elternelements.&lt;br /&gt;
&lt;br /&gt;
Ein Pfad durch alle Ebenen der Hierarchie zum TextView-Element ist nun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Elemente sind mit Schrägstrichen voneinander getrennt. Es fällt auf, dass der Name des ersten Elements nicht mit dem im Baum übereinstimmt. Das oberste Element in der Hierarchie heißt immer &#039;&#039;hierarchy&#039;&#039; (für iOS wäre es &#039;&#039;AppiumAUT&#039;&#039;), expecco zeigt im Baum stattdessen den Namen der Verbindung an, damit man mehrere Verbindungen voneinander unterscheiden kann. Die weiteren Elemente tragen jeweils das Präfix &#039;&#039;android.widget.&#039;&#039;, das im Baum zur besseren Übersicht nicht angezeigt wird (bei IOS gibt es kein Präfix). Mit jedem Schrägstrich führt der Pfad über eine Eltern-Kind-Beziehung in eine tiefere Hierarchie-Ebene, d. h. &#039;&#039;FrameLayout&#039;&#039; ist ein Kindelement von &#039;&#039;hierarchy&#039;&#039;, &#039;&#039;LinearLayout&#039;&#039; ist ein Kind von &#039;&#039;FrameLayout&#039;&#039; usw. Die in eckigen Klammern geschriebenen Wörter dienen nur als Orientierungshilfe im Baum. Sie gehören nicht zum Typ.&lt;br /&gt;
&lt;br /&gt;
Ein Pfad muss nicht beim Element &#039;&#039;hierarchy&#039;&#039; beginnen. Man kann den Pfad beginnend mit einem beliebigen Element des Baumes bilden. Man kann also verkürzt auch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.TextView&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
schreiben. Der Pfad führt zum selben &#039;&#039;TextView&#039;&#039;-Element, da es nur ein Element dieses Typs gibt. Anders verhält es sich bei dem Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da es zwei Elemente vom Typ &#039;&#039;Button&#039;&#039; gibt, passt dieser Pfad auf zwei Elemente, nämlich den Button, der mit &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; markiert ist, und den &#039;&#039;Button&#039;&#039;, der mit &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; markiert ist. Es würde an dieser Stelle aber auch nicht helfen den langen Pfad von &#039;&#039;hierarchy&#039;&#039; aus beginnend anzugeben. Um einen mehrdeutigen Pfad weiter zu differenzieren, kann man explizit ein Element aus einer Menge wählen, indem man den numerischen Index in eckigen Klammern dahinter schreibt. Der Pfad aus dem obigen Beispiel lässt sich damit so anpassen, dass er eindeutig auf den &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; weist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button[1].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ihnen fällt sicher auf, dass der Index eine 1 ist obwohl das zweite Element gemeint ist. Das kommt daher, dass die Zählung bei 0 beginnt. Der Button mit der Markierung &amp;quot;An&amp;quot; hat also die Nummer 0 und der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; hat die Nummer 1.&lt;br /&gt;
&lt;br /&gt;
Dieser Ansatz, einen expliziten Index zu verwenden, hat zwei Nachteile: Zum einen lässt sich an dem Pfad nur schwer ablesen welches Element gemeint ist, zum andern ist der Pfad sehr empfindlich schon gegenüber kleinsten Änderungen, wie zum Beispiel dem Vertauschen der beiden &#039;&#039;Button&#039;&#039;-Elemente oder dem Einfügen eines weiteren &#039;&#039;Button&#039;&#039;-Elements in der App.&lt;br /&gt;
&lt;br /&gt;
Es wäre daher wünschenswert, das gemeinte Element über eine ihm charakteristische Eigenschaft wie einem Attributwert, zu adressieren. Der XPath-Standard erlaubt solche Auswahlbedingungen zu einem Element anzugeben. Angenommen, der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; hat die Eigenschaft &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;off&#039;&#039; und der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; hat als &#039;&#039;resource-id&#039;&#039; den Wert &#039;&#039;on&#039;&#039;, dann kann man als eindeutigen Pfad für den &amp;quot;Aus&amp;quot;-&#039;&#039;Button&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button[@resource-id=&#039;off&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
formulieren. Wie an dem Beispiel zu sehen werden solche Bedingungen wie ein Index in eckigen Klammern an den Elementtyp angehängt. Der Name eines Attributes wird mit einem @ eingeleitet und der Wert mit einem = in Anführungszeichen angehängt. Ist der Attributwert global eindeutig, kann man den vorausgehenden Pfad sogar durch den globalen Platzhalter * ersetzen, der auf jedes Element passt. Das obige Beispiel mit dem GTIN-13-&#039;&#039;Button&#039;&#039; war ein solcher Fall.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBaum2.png | frame | Abb. 3: Elementbaum einer fiktiven App mit Erweiterungen]]&lt;br /&gt;
&lt;br /&gt;
Abb. 3 zeigt eine Erweiterung des Beispiels aus Abb. 2. Die App hat nun ein weiteres, nahezu identisches &#039;&#039;LinearLayout&#039;&#039; bekommen. Die &#039;&#039;Buttons&#039;&#039; sind in ihren Attributen jeweils ununterscheidbar. Deshalb funktioniert der vorige Ansatz nicht, einen eindeutigen Pfad nur mithilfe eines Attributwerts zu formulieren. Offensichtlich unterscheiden sich aber ihre benachbarten &#039;&#039;TextViews&#039;&#039;. Es ist möglich die jeweilige &#039;&#039;TextView&#039;&#039; in den Pfad mit aufzunehmen, um einen &#039;&#039;Button&#039;&#039; dennoch eindeutig zu adressieren. Ein Pfad zum &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; unterhalb der &#039;&#039;TextView&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Druckschalter&#039;&#039;&amp;quot; kann dabei wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.TextView[@resource-id=&#039;push&#039;]/../android.widget.Button[@resource-id=&#039;on&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Teil beschreibt den Pfad zu der &#039;&#039;TextView&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Druckschalter&#039;&#039;&amp;quot; und der &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;push&#039;&#039;. Danach folgt ein Schrägstrich gefolgt von zwei Punkten. Die zwei Punkte sind eine spezielle Elementbezeichnung, die nicht ein Kindelement benennt, sondern zum Elternelement wechselt, in diesem Fall also das &#039;&#039;LinearLayout&#039;&#039;, in dem die &#039;&#039;TextView&#039;&#039; eingebettet ist. Im Kontext dieses &#039;&#039;LinearLayout&#039;&#039; ist der restliche Pfad, nämlich der &#039;&#039;Button&#039;&#039; mit der &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;on&#039;&#039;, eindeutig.&lt;br /&gt;
&lt;br /&gt;
Der XPath-Standard bietet noch sehr viel mehr Ausdrucksmittel. Mit der hier knapp vorgestellten Auswahl ist es aber bereits möglich für die meisten praktischen Testfälle gute Pfade zu formulieren. Eine vollständige Einführung in XPath ginge über den Umfang dieser Einführung weit hinaus. Sie finden zahlreiche weiterführende Dokumentationen im Web und in Büchern.&lt;br /&gt;
&lt;br /&gt;
Eine universelle Strategie zum Erstellen guter XPaths gibt es nicht, da sie von den Testanforderungen abhängt. In der Regel ist es sinnvoll, den XPath kurz und dennoch eindeutig zu halten. Häufig lassen sich Elemente über Eigenschaften identifizieren wie beispielsweise ihren Text. Will man aber gerade den Text eines Elements auslesen, kann dieser natürlich nicht im Pfad verwendet werden, da er vorher nicht bekannt ist. Ebenso wird der Text variieren, wenn die App mit verschiedenen Sprachen gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Jeder Baustein, der auf einem Element arbeitet, hat einen Eingangspin für den XPath. Im GUI-Browser finden Sie in der Mitte oben eine Liste von Bausteinen mit Aktionen, die Sie auf das ausgewählte Element anwenden können. Suchen Sie den Baustein &#039;&#039;Click&#039;&#039; (8) im Ordner Elements und wählen Sie ihn aus (Abb. 1). Er wird im rechten Teil unter &#039;&#039;Test&#039;&#039; eingefügt, der Pin für den XPath ist mit dem automatisch generierten Pfad des Elements vorbelegt (9). Sie können den Baustein hier auch ausführen. Die Ansicht wechselt dann auf &#039;&#039;Lauf&#039;&#039;. Ändert sich durch die Aktion der Zustand Ihrer App, müssen Sie den Baum anschließend aktualisieren (10).&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in der unteren Liste eine Eigenschaft auswählen, wechselt die Anzeige der Bausteine zu &#039;&#039;Eigenschaften&#039;&#039;, wo Sie die eigenschaftsbezogenen Bausteine finden. Wie bei den Aktionen können Sie auch hier einen Baustein auswählen, der dann rechts in Test mit dem Pfad des Elements und der ausgewählten Eigenschaft eingetragen wird, sodass Sie ihn direkt ausführen können.&lt;br /&gt;
&lt;br /&gt;
= Beispiele =&lt;br /&gt;
Bei den Demo-Testsuiten für expecco finden Sie auch Beispiele für Tests mit dem Mobile Testing Plugin. Die beginnen jeweils mit dem Buchstaben &#039;&#039;m&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Mobile Testing Demo ==&lt;br /&gt;
Die Testsuite enthält zwei einfache Testpläne: &#039;&#039;Simple CalculatorTest&#039;&#039; und &#039;&#039;Complex Calculator and Messaging Test&#039;&#039;. Beide Tests verwenden einen Android-Emulator, den Sie vor Beginn starten müssen. Die Apps, die im Test verwendet werden, gehören zur Grundausstattung des Emulators und müssen daher nicht mehr installiert werden. Da sich die Apps unter jeder Android-Version unterscheiden können, ist es wichtig, dass Ihr Emulator unter Android 6.0 läuft. Außerdem muss die Sprache auf Englisch gestellt sein.&lt;br /&gt;
&lt;br /&gt;
; Simple CalculatorTest&lt;br /&gt;
: Dieser Test verbindet sich mit dem Taschenrechner und gibt die Formel &#039;&#039;2+3&#039;&#039; ein. Das Ergebnis des Rechners wird mit dem erwarteten Wert &#039;&#039;5&#039;&#039; verglichen.&lt;br /&gt;
&lt;br /&gt;
; Complex Calculator and Messaging Test&lt;br /&gt;
: Dieser Test verbindet sich mit dem Taschenrechner und öffnet anschließend den Nachrichtendienst. Dort wartet er auf eine einkommende Nachricht von der Nummer &#039;&#039;15555215556&#039;&#039;, in der eine zu berechnende Formel gesendet wird. Die Nachricht wird zuvor über einen Socket beim Emulator erzeugt. Nach dem Eintreffen der Nachricht wird diese vom Test geöffnet und deren Inhalt gelesen. Danach wird wieder der Taschenrechner geöffnet, die erhaltene Formel eingegeben und das Ergebnis gelesen. Anschließend wechselt der Test wieder zum Nachrichtendienst und sendet das Ergebnis als Antwort.&lt;br /&gt;
&lt;br /&gt;
== expeccoMobileDemo ==&lt;br /&gt;
Die Testsuite ist Bestandteil des Tutorials zum Mobile Testing Plugin. Der enthaltene Testfall ist unvollständig und wird im Zuge des Tutorials ergänzt. Lesen Sie dazu den Abschnitt [[#Tutorial|Tutorial]].&lt;br /&gt;
&lt;br /&gt;
= Tutorial =&lt;br /&gt;
Dieses Tutorial beschreibt das grundsätzliche Vorgehen zur Erstellung von Tests mit dem Mobile Testing Plugin. Grundlage dafür ist ein mitgeliefertes Beispiel, bestehend aus einer einfachen App und einer expecco-Testsuite.&lt;br /&gt;
&lt;br /&gt;
Die App &#039;&#039;expecco Mobile Demo&#039;&#039; berechnet und überprüft verschiedene alltägliche Codes: die IBAN aus dem europäischen Zahlungsverkehr, die internationalen GTIN-13-Produktcodes, wie man sie bei Strichcodes im Einzelhandel findet, und die Seriennummern auf Euro-Banknoten.&lt;br /&gt;
&lt;br /&gt;
Die Testsuite enthält Testfälle für einzelne Funktionen der App. Dabei sind noch nicht alle Funktionen abgedeckt, sondern werden im Laufe des Tutorials ergänzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Versionen dieses Tutorials: für [[#Erste_Schritte_mit_Android|Android]]- und für [[#Erste_Schritte_mit_iOS|iOS]]-Geräte. Der Test, der dabei erstellt wird, ist nahezu identisch, lediglich die Verbindungskonfigurationen werden unterschiedlich erzeugt.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte mit Android ==&lt;br /&gt;
Es wird vorausgesetzt, dass Sie das Kapitel [[#Installation_und_Aufbau|Installation und Aufbau]] bereits gelesen und die nötigen Vorbereitungen für die Verwendung von Android-Geräten unter Windows abgeschlossen haben.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Demo ausführen ===&lt;br /&gt;
Starten Sie expecco und öffnen Sie die Testsuite &#039;&#039;m02_expeccoMobileDemo.ets&#039;&#039; über die Schaltfläche &#039;&#039;Beispiel aus Datei&#039;&#039; (Abb. 1). In dieser befindet sich bereits ein vorgefertigter Testplan mit einigen Testfällen für diese App.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBeispielÖffnen.png | frame | left | Abb. 1: Beispiel-Testsuite öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
In der Testsuite ist das Paket der Demo-App als Anhang enthalten (&#039;&#039;expeccoMobileDemo-debug.apk&#039;&#039;). Mithilfe des bereitgestellten Bausteins &#039;&#039;Export Demo App&#039;&#039; können Sie die Datei an einen beliebigen Ort auf Ihrem Rechner exportieren. Wählen Sie dazu den Baustein aus (1) und klicken Sie auf den grünen Play-Knopf (2) um den Baustein auszuführen (Abb. 2). Der Baustein öffnet einen Dateidialog, in dem Sie angeben, wo das Paket gespeichert werden soll.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingExportApp.png | frame | left | Abb. 2: App exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bevor wir uns mit dem weiteren Inhalt der Testsuite beschäftigen, konfigurieren Sie zuerst die Verbindung und welches Gerät Sie benutzen wollen. Schließen Sie dazu ein Gerät über USB an Ihren Rechner an oder starten Sie einen Emulator.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingVerbinden.png | frame | left | Abb. 3: Verbindungseditor öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Öffnen Sie nun den GUI-Browser (1) und wählen Sie unter &#039;&#039;Verbinden&#039;&#039; (2) den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (3) (Abb. 3), um den Verbindungsdialog zu öffnen.&lt;br /&gt;
&lt;br /&gt;
Sie sehen eine Liste aller angeschlossenen Android-Geräte (1) (Abb. 3). Sollte Ihr Gerät nicht in der Liste auftauchen, stellen Sie sicher, dass es eingeschaltet und über USB verbunden ist. Lesen Sie ansonsten den Abschnitt [[#Android-Ger.C3.A4t_vorbereiten|Android-Gerät vorbereiten]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätAuswählen.png | frame | left | Abb. 4: Gerät im Verbindungsdialog auswählen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Haben Sie Ihr Gerät in der Liste gefunden, wählen Sie es aus und klicken Sie auf &#039;&#039;Weiter&#039;&#039; (2).&lt;br /&gt;
&lt;br /&gt;
Als nächstes geben Sie an, welche App Sie verwenden wollen (Abb. 5). Dabei können Sie wählen, ob Sie eine App starten möchten, die bereits auf dem Gerät installiert ist (&#039;&#039;App auf dem Gerät&#039;&#039;) oder ob eine App installiert und gestartet werden soll (&#039;&#039;App installieren&#039;&#039;). Für den Fall, dass Sie eine bereits installierte App benutzen wollen, erhalten Sie eine Liste aller auf dem Gerät installierten Pakete (1), die in Systempakete und Fremdpakete (2) unterteilt sind, sowie deren Activities (3). Diese können Sie dann einfach in den jeweiligen Feldern auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppAuswählen.png | frame | left | Abb. 5: Auf dem Gerät installierte App angeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Für dieses Tutorial soll die App installiert werden, die Sie eben aus der Testsuite exportiert haben. Wählen Sie also &#039;&#039;App installieren&#039;&#039; aus und tragen Sie bei App (1) den entsprechenden Pfad ein (Abb. 6). Sie können den Knopf links benutzen (2), um einen Dateidialog zu öffnen, mit dem Sie zu der Datei navigieren können, um sie einzugeben. Das Paket (3) und die Activity (4) der App werden automatisch eingetragen. Sollte die App mehrere Activities besitzen, können Sie die gewünschte auswählen. Klicken Sie nun auf &#039;&#039;Weiter&#039;&#039; (5).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppInstallieren.png | frame | left | Abb. 6: App angeben, die auf dem Gerät installiert werden soll]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Auf der letzten Seite sehen Sie eine Übersicht aller bisherigen Angaben (1) (Abb. 7). Darunter können Sie einen Namen für die Verbindung angeben, unter dem sie im GUI-Browser angezeigt wird (2). Außerdem lässt sich eine Verbindung über diesen Namen identifizieren und in Bausteinen verwenden; der Name muss daher eindeutig sein. Falls Sie keinen Namen angeben, wird generisch einer erzeugt. Geben Sie als Namen &#039;&#039;expeccoMobileDemo&#039;&#039; ein. Im Feld darunter ist die Adresse zum Appium-Server eingetragen (3). Appium ist die Schnittstelle, über die die angeschlossenen Geräte gesteuert werden. Für dieses Tutorial wird die Verwaltung der Instanzen des Appium-Servers von expecco übernommen. Dafür ist die lokale Standard-Adresse &#039;&#039;&amp;lt;nowiki&amp;gt;http://localhost:4723/wd/hub&amp;lt;/nowiki&amp;gt;&#039;&#039; eingetragen und die Option &#039;&#039;Bei Bedarf starten&#039;&#039; aktiviert (4). expecco überprüft dann, ob an der Adresse bereits ein Appium-Server läuft und startet und beendet ihn bei Bedarf automatisch. Wenn der Port &#039;&#039;4723&#039;&#039; bereits belegt ist oder wenn Sie einmal mehrere Verbindungen parallel betreiben wollen, verwenden Sie an dieser Stelle entsprechend einen anderen Port. Es ist dabei üblich die ungeraden Portnummern oberhalb von &#039;&#039;4723&#039;&#039; zu verwenden, also &#039;&#039;4725&#039;&#039;, &#039;&#039;4727&#039;&#039; usw. Natürlich können Sie auch entfernte Server verwenden, das automatische Starten und Beenden eines Servers kann expecco aber nur lokal für Sie übernehmen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingServerkonfiguration.png | frame | left | Abb. 7: Verbindungsnamen und Appium-Server konfigurieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Speichern&#039;&#039; (5) um die Einstellungen für die Testausführung zu speichern. Einstellungen können als Anhang einer Testsuite oder in eine externe Datei gespeichert werden (Abb. 8). Falls Sie mehrere Projekte gleichzeitig offen haben, können Sie in der Liste das Projekt auswählen, in dem der Anhang angelegt werden soll. Klicken Sie auf &#039;&#039;Speichern&#039;&#039; im Bereich &#039;&#039;Einstellungen im Anhang speichern&#039;&#039; und geben Sie als Name &#039;&#039;expeccoMobileDemo&#039;&#039; an. Klicken Sie nun auf &#039;&#039;Server starten und verbinden&#039;&#039; (6) um mit der angegebenen Konfiguration eine Verbindung herzustellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungenSpeichern.png | frame | left | Abb. 8: Einstellungen speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Der Verbindungsaufbau kann eine Weile dauern. Warten Sie bis die Verbindung aufgebaut ist und im GUI-Browser angezeigt wird. Sie sehen, dass die App auf dem Gerät gestartet wird. Nun wissen Sie, dass die Konfiguration funktioniert. Die gespeicherten Einstellungen sollen nun für den Test verwendet werden, der dann die gleiche Verbindung aufbaut. Wählen Sie die Verbindung im GUI-Browser aus, machen Sie einen Rechtsklick und wählen Sie im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039;, damit es zu keinem Konflikt kommt. Wechseln Sie dann zurück zum Reiter der Testsuite.&lt;br /&gt;
&lt;br /&gt;
In der Testsuite wurden die Einstellungen als Anhang &#039;&#039;expeccoMobileDemo&#039;&#039; angelegt (Abb 9). Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; (1) aus und wechseln Sie rechts zur Ansicht &#039;&#039;Netzwerk&#039;&#039; (2). Ziehen Sie per Drag-and-drop die Einstellungen in das Netzwerk des Bausteins (3). Verbinden Sie den Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[1]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039; (4). Mit &#039;&#039;Übernehmen&#039;&#039; (5) bestätigen Sie die Änderungen. Dieser Baustein wird zu Beginn des Tests die Verbindung zur App herstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingConnectblock.png | frame | left | Abb. 9: Verbindungsbaustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wechseln Sie nun zum Testplan &#039;&#039;Demo-Test&#039;&#039; (1) (Abb. 10). Dieser Testplan enthält bereits einige fertige Testfälle. Vor und nach der Ausführung (2) ist außerdem jeweils ein Baustein eingetragen: Der eben bearbeitete Baustein &#039;&#039;Connect&#039;&#039; für den Aufbau und der Baustein &#039;&#039;Disconnect&#039;&#039; für den Verbindungsabbau. Durch das Eintragen der beiden Bausteine an dieser Stelle geschieht der Verbindungsabbau insbesondere auch dann, wenn der Test vorzeitig abgebrochen wird, z. B. weil einer der Testfälle fehlschlägt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingTestplan.png | frame | left | Abb. 10: Testplanausführung]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Jetzt können Sie den Testplan &#039;&#039;Demo-Test&#039;&#039; starten, indem Sie auf den grünen Play-Knopf (3) klicken. Der Testplan sollte ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: Einen Baustein mit dem Recorder erstellen ===&lt;br /&gt;
Mit Hilfe des integrierten Recorders lassen sich einfach Ausführungssequenzen aufnehmen und in einem Baustein speichern. Dafür muss eine Verbindung zu einem Testgerät bestehen, mit dessen Hilfe der Test erstellt wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Verbindung aufzubauen, wechseln Sie zurück zum GUI-Browser. In diesem ist nun die Verbindung eingetragen, die eben bei der Ausführung des Testplans benutzt wurde. Allerdings ist sie nicht mehr aktiv, da sie am Ende der Ausführung abgebaut wurde. Die Einstellungen sind dort aber noch eingetragen. Um die Verbindung mit dieser Konfiguration wieder aufzubauen, wählen Sie sie aus, gefolgt von einem Rechtsklick und &#039;&#039;Verbinden&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Warten Sie, bis die Verbindung aufgebaut ist (1) und drücken Sie dann den Aufnahme-Knopf (2), um eine Aufzeichnung zu starten (Abb. 11).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorderStarten.png | frame | left | Abb. 11: Recorder starten]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Es öffnet sich ein Fenster mit dem Mobile Testing Recorder (Abb. 12). Dieser zeigt einen Screenshot des verbundenen Geräts. Über diese Anzeige können Sie das Gerät fernsteuern. Dabei wird jede Aktion, die Sie ausführen, im Hintergrund aufgezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der oberen Menüleiste können Sie das Werkzeug auswählen (1), mit dem Sie eine Aktion eingeben möchten. Als Voreinstellung ist das Werkzeug &#039;&#039;Auto&#039;&#039; ausgewählt. Sie können damit bestimmte Aktionen aufzeichnen, indem Sie mit dem Mauszeiger entsprechende Gesten auf der Anzeige ausführen. Wenn Sie zum Beispiel mit der linken Maustaste lange klicken, entspricht das einem langen Antippen auf dem Touchscreen des Gerätes. Anstatt die gewünschte Aktion mit der entsprechenden Geste zu bestimmen, können Sie diese alternativ auch manuell auswählen.&lt;br /&gt;
&lt;br /&gt;
Es soll nun ein neuer Test für das Erkennen korrekter GTIN-13-Codes aufgenommen werden. Klicken Sie zunächst in der Anzeige kurz auf den Button &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; (2) der App um einen entsprechenden Klick auf dem Gerät auszulösen. Falls der Recorder danach nicht die aktuelle Ansicht der App darstellen sollte, klicken Sie im Recorder auf das Aktualisierungssymbol (3).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder1.png | frame | left | Abb. 12: Über Recorder zur GTIN-13-Activity wechseln]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Anschließend soll im Eingabefeld der neuen Seite eine korrekte GTIN-13 eingegeben werden. Führen Sie dazu einen Rechtsklick auf dem Eingabefeld (1) aus und wählen Sie im Kontextmenü die Aktion &#039;&#039;Text anhängen&#039;&#039; (2) (Abb. 13). Geben Sie in den sich daraufhin öffnenden Dialog eine beliebige gültige Artikelnummer im GTIN-13-Format ein, bspw. &#039;&#039;4006381333986&#039;&#039; (3). Dieser Text wird nun in der App gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder2.png | frame | left | Abb. 13: GTIN-13-Code über Recorder eingeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Verify&#039;&#039; (1) (Abb. 14). In der App erscheint nun als Ergebnis &#039;&#039;OK&#039;&#039; (2). Der Test soll feststellen, ob tatsächlich dieses Ergebnis angezeigt wird. Nach einem Rechtsklick darauf können Sie im Kontextmenü die Aktion &#039;&#039;Attribut zusichern&#039;&#039; (3) auswählen. Wählen Sie im Dialog, der sich daraufhin öffnet, die Eigenschaft &#039;&#039;text&#039;&#039; (4) aus und bestätigen Sie mit &#039;&#039;OK&#039;&#039; (5). Dieses Mal wird keine Aktion auf dem Gerät ausgelöst, sondern nur ein Baustein aufgezeichnet, der fehlschlägt, sollte das Ergebnis vom erwarteten Wert &#039;&#039;OK&#039;&#039; abweichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder3.png | frame | left | Abb. 14: Antwort der App über Recorder auslesen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Schließen Sie nun den Recorder. Im &#039;&#039;Arbeitsbereich&#039;&#039; des GUI-Browsers sehen Sie, dass für jede der aufgenommenen Aktionen ein Baustein angelegt wurde (Abb. 15). Sie können nun testen, ob sich das Aufgenommene wieder abspielen lässt. Dazu müssen Sie zunächst die App auf Ihrem Gerät in den Anfangszustand zurückbringen, indem Sie auf dem Gerät die Schaltfläche &#039;&#039;HOME&#039;&#039; oben rechts benutzen. Klicken Sie dann in expecco auf den grünen Play-Knopf (1). Wird alles grün, war die Ausführung erfolgreich. Erstellen Sie nun daraus einen neuen Baustein in der Testsuite, indem Sie auf das Bausteinsymbol (2) in der rechten oberen Ecke klicken. Geben Sie ihm den Namen &#039;&#039;GTIN_Verify_OK&#039;&#039; (3) und bestätigen Sie (4).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingArbeitsbereich.png | frame | left | Abb. 15: Neuen Baustein aus Arbeitsbereich exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bauen Sie nun die Verbindung ab, indem Sie die Verbindung auswählen, rechtsklicken und im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie zurück zum Reiter der Testsuite. Dort wurde der neue Baustein angelegt. Wählen Sie wieder den Testplan &#039;&#039;Demo-Test&#039;&#039; aus und fügen Sie den aufgenommenen Testfall &#039;&#039;GTIN_Verify_OK&#039;&#039; per Drag-and-drop am Ende des Testplans hinzu. Übernehmen Sie die Änderung und starten Sie erneut. Der Testplan sollte wieder ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: XPath anpassen mithilfe des GUI-Browsers ===&lt;br /&gt;
Ihr neuer Baustein funktioniert auf anderen Geräten möglicherweise nicht. Die verwendeten Elemente werden über einen XPath adressiert und dieser kann auf anderen Geräten nicht stimmen. Lesen Sie dazu den Abschnitt [[#XPath_anpassen_mithilfe_des_GUI-Browsers|XPath anpassen mithilfe des GUI-Browsers]]. Falls Ihnen ein weiteres Gerät zur Verfügung steht, können Sie nun versuchen, die Pfade in Ihren erstellten Bausteinen zu verallgemeinern. Sie können diesen Schritt aber auch überspringen.&lt;br /&gt;
&lt;br /&gt;
Wenn es Ihnen schwerfällt, verkürzte Pfade zu finden, orientieren Sie sich dabei an den Pfaden der bereits vorhandenen Bausteine. Starten Sie den Test erneut. Sollte der Test jetzt fehlschlagen, überprüfen Sie die Pfade noch einmal im GUI-Browser.&lt;br /&gt;
Um den Test nun auf einem zweiten Gerät auszuführen, öffnen Sie im Menü &#039;&#039;Erweiterungen&#039;&#039; &amp;gt; &#039;&#039;Mobile Testing&#039;&#039; &amp;gt; &#039;&#039;Verbindungseinstellungen erstellen&#039;&#039;. Sie erhalten einen Dialog ähnlich zum Verbindungsdialog. Allerdings können Sie hier nur Einstellungen erstellen und speichern aber keine Verbindung herstellen. Sie haben jedoch die Möglichkeit, einzelne Aspekte der Einstellungen zu speichern wie bspw. nur das Gerät. Wählen Sie das neue Gerät aus und klicken Sie länger auf das Symbol zum Speichern im Anhang bis sich das verzögerte Menü öffnet (Abb. 16). Wählen Sie hier &#039;&#039;Geräte-Einstellungen speichern&#039;&#039;. Benennen Sie den Anhang am besten nach dem Gerät. Danach können Sie den Dialog wieder schließen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätSpeichern.png | frame | left | Abb. 16: Einstellungen für ein Gerät speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; aus und ziehen Sie die Einstellungen für das neue Gerät in dessen Netzwerk. Verbinden Sie nun dessen Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[2]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039;. Der Baustein Connect from File liest die Angaben an den Eingangspins von oben nach unten ein, mehrfache Eigenschaften werden dabei ersetzt. In diesem Fall werden also die Einstellungen zum verwendeten Gerät ersetzt, während die übrigen Einstellungen gleich bleiben. Wenn Sie die Pfade geschickt gewählt haben, wird der Test nun auch auf dem anderen Gerät erfolgreich ablaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Noch einen Baustein erstellen ===&lt;br /&gt;
Falls sich gleiche Abläufe im Test wiederholen, können Sie dafür bereits erstellte Bausteine wieder-verwenden oder abwandeln. Der in Schritt 2 erstellte Baustein prüft die Erkennung korrekter GTIN-13-Codes. Es fehlt noch ein Test, der umgekehrt das Erkennen eines falschen GTIN-13-Codes prüft. Die Struktur der beiden Tests ist identisch, sie unterscheiden sich lediglich in ihren Parametern. Kopieren Sie daher den Baustein &#039;&#039;GTIN_Verify_OK&#039;&#039; und benennen Sie die Kopie in &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039; um. Ändern Sie die Eingabe der GTIN-13 in einen falschen Code zum Beispiel durch Ändern der letzten Ziffer (&#039;&#039;4006381333987&#039;&#039;) und setzen Sie den Überprüfungswert der Ausgabe auf &#039;&#039;NOT OK&#039;&#039; (Abb. 17).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGTIN_Verify_NOT_OK.png | frame | left | Abb. 17: Baustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Fügen Sie diesen neuen Test ebenfalls zum Testplan Demo-Test hinzu und setzen Sie ihn ans Ende. Führen Sie den Testplan aus, aber vergessen Sie nicht, vorher die Verbindung im GUI-Browser abzubauen.&lt;br /&gt;
&lt;br /&gt;
Der neue Test wird fehlschlagen, weil Ihr aufgenommener Baustein nicht wieder zur Startseite der App zurückkehrt, die Tests aber jeweils von dort aus starten. In den anderen Bausteinen ist dies bereits berücksichtigt; sie führen abschließend immer den Baustein &#039;&#039;Back to main menu&#039;&#039; aus. Sie sehen das, indem Sie einen der anderen Bausteine, z. B. &#039;&#039;GTIN_Calculate&#039;&#039;, auswählen und auf seine Schema-Ansicht wechseln. Dort steht der Baustein &#039;&#039;Back to main menu&#039;&#039; im Feld &#039;&#039;Nach Ausführung&#039;&#039; (Abb. 18). Wie beim entsprechenden Feld beim Testplan wird auch dieser Baustein immer am Ende ausgeführt, unabhängig davon, ob der Test erfolgreich verläuft oder abbricht. Ergänzen Sie diesen Eintrag nun in Ihren Bausteinen &#039;&#039;GTIN_Verify_OK&#039;&#039; und &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039;. Wählen Sie dazu den Baustein aus und ziehen Sie in der Schema-Ansicht den Baustein &#039;&#039;Back to main menu&#039;&#039; einfach auf das Eingabefeld &#039;&#039;Nach Ausführung&#039;&#039;. Nun können Sie den Testplan starten und alle Tests sollten wieder problemlos ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumDemo Nach Ausführung.png | frame | left | Abb. 18: Nach-Ausführungs-Baustein setzen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Test vervollständigen ===&lt;br /&gt;
Für die Activity IBAN sind bereits alle Antwortmöglichkeiten der App mit Testfällen abgedeckt. In der GTIN-13-Activity werden ein korrekter und ein fehlerhafter Code getestet und eine Prüfziffer berechnet, das Verhalten der App bei Eingaben falscher Länge wird aber bisher nicht getestet (Bei Verify &#039;&#039;&#039;Input must be exactly 13 digits&#039;&#039;. und &#039;&#039;…12 digits&#039;&#039;. bei Calculate). Die Activity zum Prüfen der Seriennummern von Eurobanknoten wird noch gar nicht getestet. Wie bei der IBAN können hier drei Fälle auftreten: eine korrekte Seriennummer wurde eingegeben (Antwort: &#039;&#039;OK&#039;&#039;), eine falsche Seriennummer wurde eingegeben (Antwort: &#039;&#039;NOT OK&#039;&#039;) oder die Angabe entspricht nicht dem Format (Antwort: &#039;&#039;A serial number consists of 12 characters with the first one or two being capital letters (A-Z).&#039;&#039;). Sie können die Testabdeckung jetzt noch erweitern, indem Sie entsprechende Testfälle erstellen. Die Bausteine dafür können Sie wie in Schritt 2 mit dem Recorder erstellen und die XPaths bei Bedarf verallgemeinern. Wenn Sie mit dem grundsätzlichen Umgang mit expecco vertraut sind, können Sie Bausteine natürlich auch ohne Recorder erstellen, indem Sie sie manuell aus vorhandenen Bausteinen der Bibliothek zusammensetzen. Sie können auch beide Vorgehensweisen nach Belieben kombinieren.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass die hier vorgestellten Testfälle jeweils nur einzelne Eingaben prüfen. Wenn Sie Testfälle für Ihre eigenen Apps schreiben, wollen Sie vermutlich engmaschiger testen, indem Sie noch weitere unterschiedliche Werte eingeben, die insbesondere auch Randfälle enthalten.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte mit iOS ==&lt;br /&gt;
Es wird vorausgesetzt, dass Sie das Kapitel [[#Installation_und_Aufbau|Installation und Aufbau]] bereits gelesen und die nötigen Vorbereitungen für die Verwendung von iOS-Geräten unter Mac OS abgeschlossen haben. Starten Sie expecco. Mit expecco 2.11 können Sie die Testsuite m03_expeccoMobileDemoIOS.ets über die Schaltfläche Beispiel aus Datei öffnen. Ansonsten laden Sie die Testsuite [http://download.exept.de/transfer/h-expecco-2.10.0/m03_expeccoMobileDemoIOS.ets m03_expeccoMobileDemoIOS.ets] auf den Rechner, auf dem sich Ihre expecco-Installation befindet. Schließen Sie das Gerät, das Sie verwenden wollen, an den Mac an. Laden Sie die iOS-Version der [http://download.exept.de/transfer/h-expecco-2.11.0-pre/expeccoMobileDemo.ipa expeccoMobileDemo-App] auf den Mac herunter. Falls Sie expecco 2.10 verwenden, müssen Sie die App für Ihr Gerät signieren (siehe [[#iOS-Ger.C3.A4t_und_App_vorbereiten|iOS-Gerät und App vorbereiten]]). Starten Sie nun einen Appium-Server auf dem Mac.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Demo ausführen ===&lt;br /&gt;
Öffnen Sie die Testsuite &#039;&#039;expeccoMobileDemo.ets&#039;&#039; mit expecco. In dieser befindet sich bereits ein vorgefertigter Testplan mit einigen Testfällen für diese App.&lt;br /&gt;
&lt;br /&gt;
Bevor wir uns mit dem weiteren Inhalt der Testsuite beschäftigen, konfigurieren Sie zuerst die Verbindung und welches Gerät Sie benutzen wollen. Öffnen Sie nun den GUI-Browser (1) und wählen Sie unter &#039;&#039;Verbinden&#039;&#039; (2) den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (3) (Abb. 1), um den Verbindungsdialog zu öffnen.&lt;br /&gt;
[[Datei:MobileTestingVerbinden.png | frame | left | Abb. 1: Verbindungseditor öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier können Sie ein iOS-Gerät nur von Hand eintragen. Wählen Sie dazu &#039;&#039;iOS-Gerät eingeben&#039;&#039; (Abb. 2). Den Namen und die iOS-Version des Geräts können Sie dessen Eigenschaften entnehmen. Um die die Gerätekennung des Geräts zu erfahren, öffnen Sie auf dem Mac in Xcode das Fenster Devices (Command-Shift-2). Dort werden alle angeschlossenen Geräte sowie die zur Verfügung stehenden Simulatoren angezeigt. Hier sehen Sie auch die Gerätekennung (udid) Ihres Geräts und welche Apps installiert wurden. Nachdem Sie das Gerät im Verbindungseditor eingegeben haben, wählen Sie es in der Liste aus. Wenn Sie expecco 2.11 verwenden wählen Sie nun bei &#039;&#039;Automatisierung durch&#039;&#039; den Wert &#039;&#039;XCUITest&#039;&#039; aus. Klicken Sie dann auf Weiter.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingIOSGerät.png | frame | left | Abb. 2: Hinzufügen eines iOS-Geräts]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes geben Sie an, welche App Sie verwenden wollen. Dabei können Sie wählen, ob Sie eine App starten möchten, die bereits auf dem Gerät installiert ist (&#039;&#039;App auf dem Gerät&#039;&#039;) oder ob eine App installiert und gestartet werden soll (&#039;&#039;App installieren&#039;&#039;). Für den Fall, dass Sie eine bereits installierte App benutzen wollen, müssen Sie deren Bundle-ID angeben. Diese erfahren Sie ebenfalls im Devices-Fenster von XCode. Für die Demo-App lautet sie beispielsweise &#039;&#039;de.exept.expeccoMobileDemo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Für dieses Tutorial soll die Demo-App erst installiert werden. Wählen Sie also &#039;&#039;App installieren&#039;&#039; aus und tragen Sie bei App den Pfad zu der Datei auf dem Mac ein (Abb. 3). Klicken Sie nun auf &#039;&#039;Weiter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingIOSAppInstallieren.png | frame | left | Abb. 3: App angeben, die auf dem Gerät installiert werden soll]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf der letzten Seite sehen Sie eine Übersicht aller bisherigen Angaben (1) (Abb. 4). Wenn Sie expecco 2.11 verwenden, können Sie hier noch die Team-ID zu Ihrem Zertifikat angeben (s. Abschnitt [[#Mac_OS | Installation und Aufbau für Mac OS]]). Wenn Sie immer dasselbe Zertifikat verwenden, ist diese Angabe nur für die erste Verbindung nötig. Klicken Sie &#039;&#039;Bearbeiten&#039;&#039; um in die [[#Erweiterte_Ansicht | erweiterte Ansicht]] zu gelangen. Fügen Sie die Capability &#039;&#039;xcodeOrgId &#039;&#039; zur Liste hinzu und setzen Sie die Team-ID als Wert. Klicken Sie dann auf &#039;&#039;Zurück&#039;&#039;, um zur Normalansicht zurückzukehren.&lt;br /&gt;
&lt;br /&gt;
Unterhalb der Capabilityliste können Sie einen Namen für die Verbindung angeben, unter dem sie im GUI-Browser angezeigt wird (2). Außerdem lässt sich eine Verbindung über diesen Namen identifizieren und in Bausteinen verwenden; der Name muss daher eindeutig sein. Falls Sie keinen Namen angeben, wird generisch einer erzeugt. Geben Sie als Namen &#039;&#039;expeccoMobileDemo&#039;&#039; ein. Im Feld darunter ist die Adresse zum Appium-Server eingetragen (3). Wenn Sie den Appium-Server mit Standardeinstellungen gestartet haben, müssen Sie dazu nur in der eingetragenen Standardadresse &#039;&#039;localhost&#039;&#039; durch die IP-Adresse des Macs ersetzen (im Bild &#039;&#039;172.23.1.49&#039;&#039;). Um sicher zu gehen, auf welchem Port der Appium-Server lauscht, sehen Sie in dessen Ausgabe. Dort finden am Anfang die Zeile&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;info: Appium REST http interface listener started on 0.0.0.0:4723&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Steht hier am Ende nicht der Standardport &#039;&#039;4723&#039;&#039; ändern Sie diese Angabe entsprechend ebenfalls in der Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Wenn die Option &#039;&#039;Bei Bedarf starten&#039;&#039; (4) aktiviert ist, überprüft expecco, ob an der Adresse bereits ein Appium-Server läuft, und startet und beendet ihn bei Bedarf automatisch. Das ist allerdings nur für lokale Serveradressen möglich, schalten Sie diese Option daher ab.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingServerkonfigurationIOS.png | frame | left | Abb. 4: Verbindungsnamen und Appium-Server konfigurieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Speichern&#039;&#039; (5) um die Einstellungen für die Testausführung zu speichern. Einstellungen können als Anhang einer Testsuite oder in eine externe Datei gespeichert werden (Abb. 5). Falls Sie mehrere Projekte gleichzeitig offen haben, können Sie in der Liste das Projekt auswählen, in dem der Anhang angelegt werden soll. Klicken Sie auf &#039;&#039;Speichern&#039;&#039; im Bereich &#039;&#039;Einstellungen im Anhang speichern&#039;&#039; und geben Sie als Name &#039;&#039;expeccoMobileDemo&#039;&#039; an. Klicken Sie nun auf &#039;&#039;Verbinden&#039;&#039; (6) um mit der angegebenen Konfiguration eine Verbindung herzustellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungenSpeichern.png | frame | left | Abb. 5: Einstellungen speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Verbindungsaufbau kann eine Weile dauern. Wenn Sie die Server-Adresse korrekt angegeben haben, sollten Sie in der Ausgabe des Appium-Servers den Verbindungsversuch erkennen. Auf Ihrem iOS-Gerät sollte dabei die App gestartet werden. Passiert nichts auf dem Gerät, kann es daran liegen, dass entweder das Gerät oder die App nicht gefunden wird. Versucht Appium hingegen, die App zu starten und dies schlägt fehl, ist wahrscheinlich die App falsch signiert. Deinstallieren Sie in diesem Fall die App, damit sie mit einer neuen Signatur wieder installiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Warten Sie bis die Verbindung aufgebaut ist und im GUI-Browser angezeigt wird. Nun wissen Sie, dass die Konfiguration funktioniert. Die gespeicherten Einstellungen sollen nun für den Test verwendet werden, der dann die gleiche Verbindung aufbaut. Wählen Sie die Verbindung im GUI-Browser aus, machen Sie einen Rechtsklick und wählen Sie im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039;, damit es zu keinem Konflikt kommt. Wechseln Sie dann zurück zum Reiter der Testsuite.&lt;br /&gt;
&lt;br /&gt;
In der Testsuite wurden die Einstellungen als Anhang &#039;&#039;expeccoMobileDemo&#039;&#039; angelegt (Abb 6). Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; (1) aus und wechseln Sie rechts zur Ansicht &#039;&#039;Netzwerk&#039;&#039; (2). Ziehen Sie per Drag-and-drop die Einstellungen in das Netzwerk des Bausteins (3). Verbinden Sie den Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[1]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039; (4). Mit &#039;&#039;Übernehmen&#039;&#039; (5) bestätigen Sie die Änderungen. Dieser Baustein wird zu Beginn des Tests die Verbindung zur App herstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingConnectblock.png | frame | left | Abb. 6: Verbindungsbaustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie nun zum Testplan &#039;&#039;Demo-Test&#039;&#039; (1) (Abb. 7). Dieser Testplan enthält bereits einige fertige Testfälle. Vor und nach der Ausführung (2) ist außerdem jeweils ein Baustein eingetragen: Der eben bearbeitete Baustein &#039;&#039;Connect&#039;&#039; für den Aufbau und der Baustein &#039;&#039;Disconnect&#039;&#039; für den Verbindungsabbau. Durch das Eintragen der beiden Bausteine an dieser Stelle geschieht der Verbindungsabbau insbesondere auch dann, wenn der Test vorzeitig abgebrochen wird, z. B. weil einer der Testfälle fehlschlägt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingTestplan.png | frame | left | Abb. 7: Testplanausführung]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Jetzt können Sie den Testplan &#039;&#039;Demo-Test&#039;&#039; starten, indem Sie auf den grünen Play-Knopf (3) klicken. Der Testplan sollte ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: Einen Baustein mit dem Recorder erstellen ===&lt;br /&gt;
Mit Hilfe des integrierten Recorders lassen sich einfach Ausführungssequenzen aufnehmen und in einem Baustein speichern. Dafür muss eine Verbindung zu einem Testgerät bestehen, mit dessen Hilfe der Test erstellt wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Verbindung aufzubauen, wechseln Sie zurück zum GUI-Browser. In diesem ist nun die Verbindung eingetragen, die eben bei der Ausführung des Testplans benutzt wurde. Allerdings ist sie nicht mehr aktiv, da sie am Ende der Ausführung abgebaut wurde. Die Einstellungen sind dort aber noch eingetragen. Um die Verbindung mit dieser Konfiguration wieder aufzubauen, wählen Sie sie aus, gefolgt von einem Rechtsklick und &#039;&#039;Verbinden&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Warten Sie, bis die Verbindung aufgebaut ist (1) und drücken Sie dann den Aufnahme-Knopf (2), um eine Aufzeichnung zu starten (Abb. 8).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorderStarten.png | frame | left | Abb. 8: Recorder starten]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Es öffnet sich ein Fenster mit dem Mobile Testing Recorder (Abb. 9). Dieser zeigt einen Screenshot des verbundenen Geräts. Über diese Anzeige können Sie das Gerät fernsteuern. Dabei wird jede Aktion, die Sie ausführen, im Hintergrund aufgezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der oberen Menüleiste können Sie das Werkzeug auswählen (1), mit dem Sie eine Aktion eingeben möchten. Als Voreinstellung ist das Werkzeug &#039;&#039;Auto&#039;&#039; ausgewählt. Sie können damit bestimmte Aktionen aufzeichnen, indem Sie mit dem Mauszeiger entsprechende Gesten auf der Anzeige ausführen. Wenn Sie zum Beispiel mit der linken Maustaste lange klicken, entspricht das einem langen Antippen auf dem Touchscreen des Gerätes. Anstatt die gewünschte Aktion mit der entsprechenden Geste zu bestimmen, können Sie diese alternativ auch manuell auswählen.&lt;br /&gt;
&lt;br /&gt;
Es soll nun ein neuer Test für das Erkennen korrekter GTIN-13-Codes aufgenommen werden. Klicken Sie zunächst in der Anzeige kurz auf den Button &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; (2) der App um einen entsprechenden Klick auf dem Gerät auszulösen. Falls der Recorder danach nicht die aktuelle Ansicht der App darstellen sollte, klicken Sie im Recorder auf das Aktualisierungssymbol (3).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder1iOS.png | frame | left | Abb. 9: Über Recorder zur GTIN-13-Activity wechseln]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Anschließend soll im Eingabefeld der neuen Seite eine korrekte GTIN-13 eingegeben werden. Führen Sie dazu einen Rechtsklick auf dem Eingabefeld (1) aus und wählen Sie im Kontextmenü die Aktion &#039;&#039;Text anhängen&#039;&#039; (2) (Abb. 10). Geben Sie in den sich daraufhin öffnenden Dialog eine beliebige gültige Artikelnummer im GTIN-13-Format ein, bspw. &#039;&#039;4006381333986&#039;&#039; (3). Dieser Text wird nun in der App gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder2iOS.png | frame | left | Abb. 10: GTIN-13-Code über Recorder eingeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Verify&#039;&#039; (1) (Abb. 11). In der App erscheint nun als Ergebnis &#039;&#039;OK&#039;&#039; (2). Der Test soll feststellen, ob tatsächlich dieses Ergebnis angezeigt wird. Nach einem Rechtsklick darauf können Sie im Kontextmenü die Aktion &#039;&#039;Attribut zusichern&#039;&#039; (3) auswählen. Wählen Sie im Dialog, der sich daraufhin öffnet, die Eigenschaft &#039;&#039;value&#039;&#039; (4) aus und bestätigen Sie mit &#039;&#039;OK&#039;&#039; (5). Dieses Mal wird keine Aktion auf dem Gerät ausgelöst, sondern nur ein Baustein aufgezeichnet, der fehlschlägt, sollte das Ergebnis vom erwarteten Wert &#039;&#039;OK&#039;&#039; abweichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder3iOS.png | frame | left | Abb. 11: Antwort der App über Recorder auslesen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Schließen Sie nun den Recorder. Im &#039;&#039;Arbeitsbereich&#039;&#039; des GUI-Browsers sehen Sie, dass für jede der aufgenommenen Aktionen ein Baustein angelegt wurde (Abb. 12). Sie können nun testen, ob sich das Aufgenommene wieder abspielen lässt. Dazu müssen Sie zunächst die App auf Ihrem Gerät in den Anfangszustand zurückbringen, indem Sie auf dem Gerät die Schaltfläche &#039;&#039;Home&#039;&#039; oben links benutzen. Klicken Sie dann in expecco auf den grünen Play-Knopf (1). Wird alles grün, war die Ausführung erfolgreich. Erstellen Sie nun daraus einen neuen Baustein in der Testsuite, indem Sie auf das Bausteinsymbol (2) in der rechten oberen Ecke klicken. Geben Sie ihm den Namen &#039;&#039;GTIN_Verify_OK&#039;&#039; (3) und bestätigen Sie (4).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingArbeitsbereich.png | frame | left | Abb. 12: Neuen Baustein aus Arbeitsbereich exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bauen Sie nun die Verbindung ab, indem Sie die Verbindung auswählen, rechtsklicken und im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie zurück zum Reiter der Testsuite. Dort wurde der neue Baustein angelegt. Wählen Sie wieder den Testplan &#039;&#039;Demo-Test&#039;&#039; aus und fügen Sie den aufgenommenen Testfall &#039;&#039;GTIN_Verify_OK&#039;&#039; per Drag-and-drop am Ende des Testplans hinzu. Übernehmen Sie die Änderung und starten Sie erneut. Der Testplan sollte wieder ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: XPath anpassen mithilfe des GUI-Browsers ===&lt;br /&gt;
Ihr neuer Baustein funktioniert auf anderen Geräten möglicherweise nicht. Die verwendeten Elemente werden über einen XPath adressiert und dieser kann auf anderen Geräten nicht stimmen. Lesen Sie dazu den Abschnitt [[#XPath_anpassen_mithilfe_des_GUI-Browsers|XPath anpassen mithilfe des GUI-Browsers]]. Falls Ihnen ein weiteres Gerät zur Verfügung steht, können Sie nun versuchen, die Pfade in Ihren erstellten Bausteinen zu verallgemeinern. Sie können diesen Schritt aber auch überspringen.&lt;br /&gt;
&lt;br /&gt;
Wenn es Ihnen schwerfällt, verkürzte Pfade zu finden, orientieren Sie sich dabei an den Pfaden der bereits vorhandenen Bausteine. Starten Sie den Test erneut. Sollte der Test jetzt fehlschlagen, überprüfen Sie die Pfade noch einmal im GUI-Browser.&lt;br /&gt;
Um den Test nun auf einem zweiten Gerät auszuführen, öffnen Sie im Menü &#039;&#039;Erweiterungen&#039;&#039; &amp;gt; &#039;&#039;Mobile Testing&#039;&#039; &amp;gt; &#039;&#039;Verbindungseinstellungen erstellen&#039;&#039;. Sie erhalten einen Dialog ähnlich zum Verbindungsdialog. Allerdings können Sie hier nur Einstellungen erstellen und speichern aber keine Verbindung herstellen. Sie haben jedoch die Möglichkeit, einzelne Aspekte der Einstellungen zu speichern wie bspw. nur das Gerät. Geben Sie das neue Gerät ein und wählen Sie es aus. Klicken Sie länger auf das Symbol zum Speichern im Anhang bis sich das verzögerte Menü öffnet und wählen Sie hier &#039;&#039;Geräte-Einstellungen speichern&#039;&#039; (Abb. 13). Benennen Sie den Anhang am besten nach dem Gerät. Danach können Sie den Dialog wieder schließen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätSpeichern.png | frame | left | Abb. 13: Einstellungen für ein Gerät speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; aus und ziehen Sie die Einstellungen für das neue Gerät in dessen Netzwerk. Verbinden Sie nun dessen Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[2]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039;. Der Baustein Connect from File liest die Angaben an den Eingangspins von oben nach unten ein, mehrfache Eigenschaften werden dabei ersetzt. In diesem Fall werden also die Einstellungen zum verwendeten Gerät ersetzt, während die übrigen Einstellungen gleich bleiben. Wenn Sie die Pfade geschickt gewählt haben, wird der Test nun auch auf dem anderen Gerät erfolgreich ablaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Noch einen Baustein erstellen ===&lt;br /&gt;
Falls sich gleiche Abläufe im Test wiederholen, können Sie dafür bereits erstellte Bausteine wieder-verwenden oder abwandeln. Der in Schritt 2 erstellte Baustein prüft die Erkennung korrekter GTIN-13-Codes. Es fehlt noch ein Test, der umgekehrt das Erkennen eines falschen GTIN-13-Codes prüft. Die Struktur der beiden Tests ist identisch, sie unterscheiden sich lediglich in ihren Parametern. Kopieren Sie daher den Baustein &#039;&#039;GTIN_Verify_OK&#039;&#039; und benennen Sie die Kopie in &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039; um. Ändern Sie die Eingabe der GTIN-13 in einen falschen Code zum Beispiel durch Ändern der letzten Ziffer (&#039;&#039;4006381333987&#039;&#039;) und setzen Sie den Überprüfungswert der Ausgabe auf &#039;&#039;NOT OK&#039;&#039; (Abb. 14).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGTIN_Verify_NOT_OK_iOS.png | frame | left | Abb. 14: Baustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Fügen Sie diesen neuen Test ebenfalls zum Testplan Demo-Test hinzu und setzen Sie ihn ans Ende. Führen Sie den Testplan aus, aber vergessen Sie nicht, vorher die Verbindung im GUI-Browser abzubauen.&lt;br /&gt;
&lt;br /&gt;
Der neue Test wird fehlschlagen, weil Ihr aufgenommener Baustein nicht wieder zur Startseite der App zurückkehrt, die Tests aber jeweils von dort aus starten. In den anderen Bausteinen ist dies bereits berücksichtigt; sie führen abschließend immer den Baustein &#039;&#039;Back to main menu&#039;&#039; aus. Sie sehen das, indem Sie einen der anderen Bausteine, z. B. &#039;&#039;GTIN_Calculate&#039;&#039;, auswählen und auf seine Schema-Ansicht wechseln. Dort steht der Baustein &#039;&#039;Back to main menu&#039;&#039; im Feld &#039;&#039;Nach Ausführung&#039;&#039; (Abb. 15). Wie beim entsprechenden Feld beim Testplan wird auch dieser Baustein immer am Ende ausgeführt, unabhängig davon, ob der Test erfolgreich verläuft oder abbricht. Ergänzen Sie diesen Eintrag nun in Ihren Bausteinen &#039;&#039;GTIN_Verify_OK&#039;&#039; und &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039;. Wählen Sie dazu den Baustein aus und ziehen Sie in der Schema-Ansicht den Baustein &#039;&#039;Back to main menu&#039;&#039; einfach auf das Eingabefeld &#039;&#039;Nach Ausführung&#039;&#039;. Nun können Sie den Testplan starten und alle Tests sollten wieder problemlos ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumDemo Nach Ausführung.png | frame | left | Abb. 15: Nach-Ausführungs-Baustein setzen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Test vervollständigen ===&lt;br /&gt;
Für die Activity IBAN sind bereits alle Antwortmöglichkeiten der App mit Testfällen abgedeckt. In der GTIN-13-Activity werden ein korrekter und ein fehlerhafter Code getestet und eine Prüfziffer berechnet, das Verhalten der App bei Eingaben falscher Länge wird aber bisher nicht getestet (Bei Verify &#039;&#039;&#039;Input must be exactly 13 digits&#039;&#039;. und &#039;&#039;…12 digits&#039;&#039;. bei Calculate). Die Activity zum Prüfen der Seriennummern von Eurobanknoten wird noch gar nicht getestet. Wie bei der IBAN können hier drei Fälle auftreten: eine korrekte Seriennummer wurde eingegeben (Antwort: &#039;&#039;OK&#039;&#039;), eine falsche Seriennummer wurde eingegeben (Antwort: &#039;&#039;NOT OK&#039;&#039;) oder die Angabe entspricht nicht dem Format (Antwort: &#039;&#039;A serial number consists of 12 characters with the first one or two being capital letters (A-Z).&#039;&#039;). Sie können die Testabdeckung jetzt noch erweitern, indem Sie entsprechende Testfälle erstellen. Die Bausteine dafür können Sie wie in Schritt 2 mit dem Recorder erstellen und die XPaths bei Bedarf verallgemeinern. Wenn Sie mit dem grundsätzlichen Umgang mit expecco vertraut sind, können Sie Bausteine natürlich auch ohne Recorder erstellen, indem Sie sie manuell aus vorhandenen Bausteinen der Bibliothek zusammensetzen. Sie können auch beide Vorgehensweisen nach Belieben kombinieren.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass die hier vorgestellten Testfälle jeweils nur einzelne Eingaben prüfen. Wenn Sie Testfälle für Ihre eigenen Apps schreiben, wollen Sie vermutlich engmaschiger testen, indem Sie noch weitere unterschiedliche Werte eingeben, die insbesondere auch Randfälle enthalten.&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Mobile_Testing_Plugin&amp;diff=8176</id>
		<title>Mobile Testing Plugin</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Mobile_Testing_Plugin&amp;diff=8176"/>
		<updated>2017-02-24T15:05:51Z</updated>

		<summary type="html">&lt;p&gt;Ff: /* Installation und Aufbau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
Mit dem Mobile Testing Plugin können Anwendungen auf Android- und iOS-Geräten getestet werden. Dabei ist es egal, ob reale mobile Endgeräte oder emulierte Geräte verwendet werden. Das Plugin kann (und wird üblicherweise) zusammen mit dem [[Expecco_GUI_Tests_Extension_Reference|GUI-Browser]] verwendet werden, der das Erstellen von Tests unterstützt. Zudem ist damit das Aufzeichnen von Testabläufen möglich.&lt;br /&gt;
&lt;br /&gt;
Zur Verbindung mit den Geräten wird [http://appium.io/ Appium] verwendet. Appium ist ein freies Open-Source-Framework zum Testen und Automatisieren von mobilen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
Dieses Dokument bezieht sich auf das Mobile Testing Plugin ab der expecco-Version 2.10. Die Dokumentation für Version 2.9 finden Sie unter [[Appium Plugin Reference]].&lt;br /&gt;
&lt;br /&gt;
Zur Einarbeitung in das Mobile Plugin empfehlen wir das [[#Tutorial|Tutorial]] zu bearbeiten. Dieses führt anhand eines Beispiels Schritt für Schritt durch die Erstellung eines Testfalls und erklärt die nötigen Grundlagen.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= Voraussetzungen =&lt;br /&gt;
*Appium-Server 1.4.16&lt;br /&gt;
Android-Geräte ab der Version 2.3.3 bis Version 6.0&lt;br /&gt;
*Java jdk Version 7 oder 8&lt;br /&gt;
*Android sdk&lt;br /&gt;
iOS-Geräte bis Version 9.3&lt;br /&gt;
*ideviceinstaller&lt;br /&gt;
*libimobiledevice&lt;br /&gt;
*Xcode 7.3.x--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation und Aufbau =&lt;br /&gt;
Zur Verwendung des Mobile Testing Plugins müssen Sie expecco inkl. Plugins installiert haben und Sie benötigen die entsprechenden Lizenzen. expecco kommuniziert mit den Mobilgeräten über einen Appium-Server, der entweder auf dem Rechner läuft, auf dem auch expecco ausgeführt wird, oder auf einem zweiten Rechner. Dieser muss für expecco erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
{{Anker|Installationsübersicht_mit_expecco_2.10}}&#039;&#039;&#039;Installationsübersicht mit expecco 2.10:&#039;&#039;&#039;&lt;br /&gt;
* Appium-Server 1.4.16&lt;br /&gt;
für Android-Geräte ab der Version 2.3.3 bis Version 6.0:&lt;br /&gt;
* Java JDK Version 7 oder 8&lt;br /&gt;
* Android SDK&lt;br /&gt;
für iOS-Geräte bis Version 9.3:&lt;br /&gt;
* Xcode 7.3.x&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installationsübersicht mit expecco 2.11:&#039;&#039;&#039;&lt;br /&gt;
* Appium-Server 1.6.4&lt;br /&gt;
für Android-Geräte ab der Version 4.3:&lt;br /&gt;
* Java JDK Version 7 oder 8&lt;br /&gt;
* Android SDK&lt;br /&gt;
für iOS-Geräte ab Version 9.3:&lt;br /&gt;
* Xcode 8.2.1&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass aufgrund der Voraussetzungen iOS-Geräte nur von einem Mac aus angesteuert werden können. expecco kann dann über das Netzwerk mit dem Appium-Server auf dem Mac kommunizieren, um auf den dort angeschlossenen iOS-Geräten zu testen. Im Folgenden wird die Installation von Appium und anderer nötiger Programme für Windows und Mac OS erklärt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAufbau.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
Am einfachsten installieren Sie alles mit unserem Mobile Testing Supplement:&lt;br /&gt;
&lt;br /&gt;
*expecco 2.10: [http://download.exept.de/transfer/h-expecco-2.10.0/Mobile_Testing_Supplement_1.5.0.0_Setup.exe Mobile Testing Supplement 1.5.0.0]&lt;br /&gt;
:Dieses installiert ein Java JDK der Version 8, android-sdk und Appium in der Version 1.4.16. Während der Installation wird die grafische Oberfläche von Appium gestartet, dieses Fenster können Sie sofort wieder schließen. Außerdem bietet das Supplement auch einen universellen adb-Treiber ([http://download.clockworkmod.com/test/UniversalAdbDriverSetup.msi ClockworkMod]) an. Dieser vereint Treiber für ein breites Spektrum an Android-Geräten, sodass Sie nicht für jedes Gerät einen eigenen Treiber suchen und installieren müssen.&lt;br /&gt;
*expecco 2.11: [http://download.exept.de/transfer/h-expecco-2.11.0-pre/MobileTestingSupplement_1.6_Setup.exe Mobile Testing Supplement 1.6.0.0] &lt;br /&gt;
:Dieses installiert ein Java JDK der Version 8, android-sdk und Appium in der Version 1.6.4. Außerdem bietet das Supplement auch einen universellen adb-Treiber ([http://download.clockworkmod.com/test/UniversalAdbDriverSetup.msi ClockworkMod]) an. Dieser vereint Treiber für ein breites Spektrum an Android-Geräten, sodass Sie nicht für jedes Gerät einen eigenen Treiber suchen und installieren müssen.&lt;br /&gt;
&lt;br /&gt;
Beim Starten von Appium kann es vorkommen, dass die Windows-Firewall den Node-Server blockiert. In diesem Fall kann expecco keinen Appium-Server starten. Starten Sie daher nach der Installation am besten die Datei &#039;&#039;appium.cmd&#039;&#039; im Ordner &#039;&#039;appium&#039;&#039; des Mobile Testing Supplements. Wenn sich der Appium-Server starten lässt, sollte es auch von expecco aus funktionieren. Meldet sich hingegen die Windows-Firewall, lassen Sie den Zugriff zu.&lt;br /&gt;
&lt;br /&gt;
== Mac OS ==&lt;br /&gt;
=== expecco 2.10 ===&lt;br /&gt;
Auf dem verwendeten Mac sollte als Betriebssystemversion OS X 10.11.5 (El Capitan) oder neuer laufen. Zur Automatisierung mit iOS-Geräten bis Version 9.3 ist eine Installation von Xcode 7.3 nötig, die auf älteren Betriebssystemen nicht läuft (siehe auch [https://en.wikipedia.org/wiki/Xcode#Version_comparison_table Xcode-Versionen]). Installieren Sie Xcode aus dem App Store. Außerdem benötigt Appium eine Java-Installation. Installieren Sie dazu ein JDK in Version 7 oder 8. Mithilfe unseres [http://download.exept.de/transfer/h-expecco-2.10.0/Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2 Mobile Testing Supplements für Mac OS] können Sie nun noch Appium 1.4.16 installieren. Nachdem Sie es heruntergeladen haben, können Sie es in ein Verzeichnis Ihrer Wahl (z. B. Ihr Home-Verzeichnis) verschieben und dort entpacken. Ein geeigneter Befehl in einer Shell könnte so aussehen:&lt;br /&gt;
 tar -xvpf Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2&lt;br /&gt;
Wenn Xcode 7.3 Ihre Standard-Xcode-Installation ist, können Sie Appium direkt starten:&lt;br /&gt;
 Mobile_Testing_Supplement/bin/start-appium-1.4.16&lt;br /&gt;
Falls Xcode 7.3 nicht als Standard-Xcode konfiguriert ist, müssen Sie Appium den entsprechenden Pfad über die Umgebungsvariable &#039;&#039;DEVELOPER_DIR&#039;&#039; angeben. Wenn Sie Xcode z. B. in &#039;&#039;/Applications/Xcode-7.3.app&#039;&#039; installiert haben, können Sie Appium so starten:&lt;br /&gt;
 DEVELOPER_DIR=&amp;quot;/Applications/Xcode-7.3.app/Contents/Developer&amp;quot; Mobile_Testing_Supplement/bin/start-appium-1.4.16&lt;br /&gt;
Was in Ihrem System als Standard-Xcode-Installation gesetzt ist, können Sie mit diesem Befehl herausfinden:&lt;br /&gt;
 xcode-select -p&lt;br /&gt;
Wenn Appium Ihre Xcode-Installation nicht findet, erscheint beim Verbinden eine Fehlermeldung in der Art:&lt;br /&gt;
&#039;&#039;&amp;lt;blockquote&amp;gt;org.openqa.selenium.SessionNotCreatedException - A new session could not be created. (Original error: Could not find path to Xcode, environment variable DEVELOPER_DIR set to: /Applications/Xcode.app but no Xcode found)&amp;lt;/blockquote&amp;gt;&#039;&#039;&lt;br /&gt;
Starten Sie in einem solchen Fall Appium erneut unter Angabe eines gültigen &#039;&#039;DEVELOPER_DIR&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.11 ===&lt;br /&gt;
Auf dem verwendeten Mac sollte als Betriebssystemversion OS X 10.11.5 (El Capitan) oder neuer laufen. Zur Automatisierung von iOS-Geräten ab Version 10 ist eine Installation von einem vergleichbar neuen Xcode 8 nötig (für iOS 10.1 mind. Xcode 8.1, für iOS 10.2 mind. Xcode 8.2, usw.), die auf älteren Betriebssystemen nicht läuft (siehe auch [https://en.wikipedia.org/wiki/Xcode#Version_comparison_table Xcode-Versionen]). Installieren Sie Xcode aus dem App Store. Außerdem benötigt Appium eine Java-Installation. Installieren Sie dazu ein JDK in Version 7 oder 8. Mithilfe unseres [http://download.exept.de/transfer/h-expecco-2.11.0-pre/Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2 Mobile Testing Supplements für Mac OS] können Sie nun noch Appium 1.6.4 installieren. Nachdem Sie es heruntergeladen haben, können Sie es in ein Verzeichnis Ihrer Wahl (z. B. Ihr Home-Verzeichnis) verschieben und dort entpacken. Ein geeigneter Befehl in einer Shell könnte so aussehen:&lt;br /&gt;
 tar -xvpf Mobile_Testing_Supplement_for_Mac_OS_1.0.tar.bz2&lt;br /&gt;
Wenn Xcode 8.2 Ihre Standard-Xcode-Installation ist, können Sie Appium direkt starten:&lt;br /&gt;
 Mobile_Testing_Supplement/bin/start-appium-1.6.4&lt;br /&gt;
Falls Xcode 8.2 nicht als Standard-Xcode konfiguriert ist, müssen Sie Appium den entsprechenden Pfad über die Umgebungsvariable &#039;&#039;DEVELOPER_DIR&#039;&#039; angeben. Wenn Sie Xcode z. B. in &#039;&#039;/Applications/Xcode-8.2.app&#039;&#039; installiert haben, können Sie Appium so starten:&lt;br /&gt;
 DEVELOPER_DIR=&amp;quot;/Applications/Xcode-8.2.app/Contents/Developer&amp;quot; Mobile_Testing_Supplement/bin/start-appium-1.6.4&lt;br /&gt;
Was in Ihrem System als Standard-Xcode-Installation gesetzt ist, können Sie mit diesem Befehl herausfinden:&lt;br /&gt;
 xcode-select -p&lt;br /&gt;
Wenn Appium Ihre Xcode-Installation nicht findet, erscheint beim Verbinden eine Fehlermeldung in der Art:&lt;br /&gt;
&#039;&#039;&amp;lt;blockquote&amp;gt;org.openqa.selenium.SessionNotCreatedException - A new session could not be created. (Original error: Could not find path to Xcode, environment variable DEVELOPER_DIR set to: /Applications/Xcode.app but no Xcode found)&amp;lt;/blockquote&amp;gt;&#039;&#039;&lt;br /&gt;
Starten Sie in einem solchen Fall Appium erneut unter Angabe eines gültigen &#039;&#039;DEVELOPER_DIR&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um eine App starten zu können, muss ein Entwicklerzertifikat mit dem dazugehörigen privaten Schlüssel in der Schlüsselbundverwaltung des verwendeten Macs enthalten und der Zugriff darauf freigegeben sein. Wenn sich kein solches Zertifikat auf Ihrem Mac befindet, können Sie eines importieren; das Dateiformat hierfür ist p12. Öffnen Sie dazu die Schlüsselbundverwaltung und wählen Sie den Schlüsselbund &#039;&#039;Anmeldung&#039;&#039; aus. Importieren Sie die Datei über das Menü &#039;&#039;Ablage&#039;&#039; &amp;gt; &#039;&#039;Objekte importieren&#039;&#039;. Selektieren Sie nun das Zertifikat und wählen Sie im Rechtsklick-Menü den Punkt &#039;&#039;Informationen&#039;&#039; aus. Unter den Details des Zertifikats finden Sie die Team-ID, die hier als Organisationseinheit bezeichnet wird. Merken Sie sich diese zehnstellige ID. Geben Sie bei den Verbindungseinstellungen zusätzlich die Capability &#039;&#039;xcodeOrgId&#039;&#039; an und setzen Sie als Wert diese ID. Lesen Sie dazu den [[#Erweiterte_Ansicht | Abschnitt zur erweiterten Ansicht des Verbindungsdialogs]].&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Plugins ==&lt;br /&gt;
Bevor Sie loslegen, sollten Sie die Einstellungen des Mobile Testing Plugins überprüfen und ggf. anpassen. Öffnen Sie im Menü den Punkt &#039;&#039;Extras&#039;&#039; &amp;gt; &#039;&#039;Einstellungen&#039;&#039; und dort unter &#039;&#039;Erweiterungen&#039;&#039; den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (s. Abb.). Standardmäßig werden diese Pfade automatisch gefunden (1). Um einen Pfad manuell anzupassen, deaktivieren sie den entsprechenden Haken rechts davon. Sie erhalten in einer Drop-down-Liste einige Pfade zur Auswahl. Ist ein eingetragener Pfad falsch oder kann er nicht gefunden werden, wird das Feld rot markiert und es erscheint ein diesbezüglicher Hinweis. Stellen Sie sicher, dass alle Pfade richtig angegeben sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungen.png | thumb | 400px | Konfiguration des Plugins]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;appium&#039;&#039;&#039;: Geben Sie hier den Pfad zur ausführbaren Datei an mit der Appium in der Kommandozeile gestartet werden kann. Unter Windows wird diese Datei in der Regel &#039;&#039;appium.cmd&#039;&#039; heißen. Dieser Pfad wird benutzt, wenn expecco einen Appium-Server startet.&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039;: Geben Sie hier den Pfad zur ausführbaren Datei an, die Node startet. Dieser Pfad wird beim Starten eines Servers an Appium weitergegeben, damit Appium ihn unabhängig von der PATH-Variablen findet. Unter Windows heißt diese Datei in der Regel &#039;&#039;node.exe&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;JAVA_HOME&#039;&#039;&#039;: Geben Sie hier den Pfad zu einem JDK an. Dieser Pfad wird an jeden Appium-Server weitergegeben. Lassen Sie das Feld frei, um den Wert aus der Umgebungsvariablen zu verwenden. Um einzustellen, welches Java von expecco verwendet werden soll, setzen Sie diesen Pfad in den Einstellungen für die Java-Bridge.&lt;br /&gt;
*&#039;&#039;&#039;ANDROID_HOME&#039;&#039;&#039;: Geben Sie hier den Pfad zu einem SDK von Android an. Dieser Pfad wird an jeden Appium-Server weitergegeben. Lassen Sie das Feld frei, um den Wert aus der Umgebungsvariablen zu verwenden.&lt;br /&gt;
*&#039;&#039;&#039;adb&#039;&#039;&#039;: Hier steht der Pfad zum adb-Befehl. Unter Windows heißt die Datei adb.exe. Diese wird von expecco beispielsweise verwendet, um die Liste der angeschlossenen Geräte zu erhalten. Diesen Pfad sollten Sie automatisch wählen lassen, da dann der Befehl im ANDROID_HOME-Verzeichnis verwendet wird. Dieser wird auch von Appium verwendet. Falls expecco und Appium jedoch verschiedene Versionen von adb verwenden kann es zu Konflikten kommen.&lt;br /&gt;
*&#039;&#039;&#039;android.bat&#039;&#039;&#039;: Diese Datei wird nur benötigt, um damit den AVD und den SDK Manager zu starten. Automatisch wird hier die Datei im ANDROID_HOME-Verzeichnis gesucht.&lt;br /&gt;
*&#039;&#039;&#039;aapt&#039;&#039;&#039;: Geben Sie hier den Pfad zum aapt-Befehl an. Unter Windows heißt diese Datei &#039;&#039;aapt.exe&#039;&#039;. expecco verwendet aapt nur im Verbindungseditor, um das Paket und die Activities einer apk-Datei zu lesen. Automatisch wird hier die Datei im ANDROID_HOME-Verzeichnis gesucht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingJavaBridgeEinstellungen.png | thumb | 400px | Konfiguration des JDKs]]&lt;br /&gt;
&lt;br /&gt;
Die Einstellung zur Serveradresse unten auf der Seite bezieht sich auf das Verhalten des Verbindungseditors. Dieser prüft am Ende, ob die Serveradresse auf &#039;&#039;/wd/hub&#039;&#039; endet, da dies die übliche Form ist. Falls nicht, wird in einem Dialog gefragt, wie darauf reagiert werden soll. Das festgelegte Verhalten kann hier eingesehen und verändert werden.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie ebenfalls zum Eintrag &#039;&#039;Java Bridge&#039;&#039; (s. Abb.). Hier muss der Pfad zu Ihrer Java-Installation angegeben werden, die von expecco benutzt wird. Tragen Sie hier ein JDK ein. Falls Sie unter Windows das aus dem Mobile Testing Supplement verwenden möchten, lautet der Pfad&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;C:\Program Files (x86)\exept\Mobile Testing Supplement\jdk&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Sie können auch die Systemeinstellungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Android-Gerät vorbereiten ==&lt;br /&gt;
Wenn Sie ein Android-Gerät unter Windows anschließen benötigen Sie möglicherweise noch einen adb-Treiber für das Gerät. Einen passenden Treiber finden Sie üblicherweise auf der jeweiligen Webseite des Herstellers. Haben Sie den Universal-Treiber aus dem Mobile Testing Supplement installiert, sollte bereits alles funktionieren und das Gerät korrekt erkannt werden.&lt;br /&gt;
&lt;br /&gt;
Bevor Sie ein Mobilgerät mit dem Appium-Plugin ansteuern können, müssen Sie für dieses Debugging erlauben. Für Android-Geräte finden Sie diese Option in den Einstellungen unter &#039;&#039;[https://www.droidwiki.de/wiki/Entwickleroptionen Entwickleroptionen]&#039;&#039; mit dem Namen &#039;&#039;[https://www.droidwiki.de/USB-Debugging USB-Debugging]&#039;&#039;. Falls die Entwickleroptionen nicht angezeigt werden, können Sie diese freischalten, indem Sie unter &#039;&#039;Über das Telefon&#039;&#039; siebenmal auf &#039;&#039;Build-Nummer&#039;&#039; tippen. Aktivieren Sie auch die Funktion &#039;&#039;Wach bleiben&#039;&#039;, damit das Gerät nicht während der Testerstellung oder -ausführung den Bildschirm abschaltet. Aus Sicherheitsgründen muss USB-Debugging für jeden Computer einzeln zugelassen werden. Beim Verbinden des Geräts mit dem PC über USB müssen Sie dabei am Gerät der Verbindung zustimmen. Falls Sie dies für Ihren Computer noch nicht getan haben, aber auf dem Gerät kein entsprechender Dialog erscheint, kann es helfen, das Gerät aus- und wieder einzustecken. Das kann insbesondere dann passieren, wenn Sie den ADB-Treiber installiert haben während das Gerät bereits über USB angeschlossen war.&lt;br /&gt;
&lt;br /&gt;
Sie können auch auf einem Emulator testen. Dieser muss nicht mehr gesondert vorbereitet werden, da er bereits für USB-Debugging ausgelegt ist. Es ist sogar möglich, einen Emulator bei Testbeginn zu starten.&lt;br /&gt;
&lt;br /&gt;
Um zu überprüfen, ob ein Gerät, das Sie an Ihren Rechner angeschlossen haben, verwendet werden kann, öffnen Sie den [[#Verbindungseditor|Verbindungseditor]]. Das Gerät sollte dort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Verbindung über WLAN ===&lt;br /&gt;
Es ist auch möglich, Android-Geräte über WLAN zu verbinden. Dazu müssen Sie zunächst das Gerät über USB mit dem Rechner verbinden. Öffnen Sie dann die Eingabeaufforderung und geben Sie dort&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb tcpip 5555&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Damit lauscht das Gerät auf eine TCP/IP-Verbindung an Port 5555. Sollten Sie mehrere Geräte angeschlossen oder Emulatoren laufen haben, müssen Sie genauer angeben, welches Gerät Sie meinen. Geben Sie in diesem Fall&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb devices -l&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Sie erhalten eine Liste aller Geräte, wobei die erste Spalte deren Kennung ist. Schreiben Sie dann stattdessen&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb -s &amp;lt;Gerätekennung&amp;gt; tcpip 5555&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
mit der Gerätekennung des gewünschten Geräts. Sie können die USB-Verbindung nun trennen. Jetzt müssen Sie die IP-Adresse Ihres Gerätes in Erfahrung bringen. Sie finden diese üblicherweise irgendwo in den Einstellungen des Geräts, beispielsweise beim Status oder in den WLAN-Einstellungen. Geben Sie dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;adb connect &amp;lt;IP-Adresse des Geräts&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ein. Damit sollte das Gerät nun über WLAN verbunden sein und kann genauso verwendet werden, wie mit USB-Verbindung. Sie können dies überprüfen, indem Sie wieder &amp;lt;tt&amp;gt;adb devices -l&amp;lt;/tt&amp;gt; eingeben oder in expecco den Verbindungsdialog öffnen. In der Liste taucht das Gerät mit seiner IP-Adresse und dem Port auf.&lt;br /&gt;
&lt;br /&gt;
== iOS-Gerät und App vorbereiten ==&lt;br /&gt;
Das Ansteuern von iOS-Geräten ist nur über einen Mac möglich. Lesen Sie daher auch den Abschnitt zur [[#Mac_OS|Installation unter Mac OS]].&lt;br /&gt;
&lt;br /&gt;
Bevor Sie ein Mobilgerät mit dem Mobile Testing Plugin ansteuern können, müssen Sie für iOS-Geräte ab iOS 8 Debugging erlauben. Aktivieren Sie dazu die Option &#039;&#039;Enable UI Automation&#039;&#039; unter dem Menüpunkt &#039;&#039;Entwickler&#039;&#039; in den Einstellungen des Geräts. Falls Sie den Eintrag &#039;&#039;Entwickler&#039;&#039; in den Einstellungen nicht finden, gehen Sie wie folgt vor: Schließen Sie das Gerät über USB an den Mac an. Dabei müssen Sie ggf. am Gerät noch der Verbindung zustimmen. Starten Sie Xcode und wählen Sie dann in der Menüleiste am oberen Bildschirmrand im Menü &#039;&#039;Window&#039;&#039; den Eintrag &#039;&#039;Devices&#039;&#039;. Es öffnet sich ein Fenster, in dem eine Liste der angeschlossenen Geräte angezeigt wird. Wählen Sie dort Ihr Gerät aus. Danach sollte der Eintrag &#039;&#039;Entwickler&#039;&#039; in den Einstellungen auf dem Gerät auftauchen. Dazu müssen Sie möglicherweise die Einstellungen beenden und neu starten.&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.10 ===&lt;br /&gt;
Die App, die Sie verwenden wollen, muss als Development-Build vorliegen. Außerdem muss die UDID des Geräts in der App hinterlegt sein.&lt;br /&gt;
&lt;br /&gt;
* Evaluierung mit Demo-App von eXept:&lt;br /&gt;
:Gerne stellen wir Ihnen eine Demo-App zur Verfügung, die als Development-Build vorliegt und die wir für Ihr Gerät signieren können. Senden Sie dazu bitte Ihrem eXept-Ansprechpartner die UDID Ihres Gerätes zu. Wie Sie die UDID Ihres Gerätes ermitteln können, ist im folgenden Abschnitt beschrieben.&lt;br /&gt;
&lt;br /&gt;
* Eigene App für Ihr Testgerät verwenden:&lt;br /&gt;
:Wenn Sie von den App-Entwicklern einen Development-Build (IPA-Datei) erhalten, der für Ihr Testgerät zugelassen ist, können Sie diesen direkt verwenden. Dazu müssen Sie den Entwicklern die UDID Ihres Geräts mitteilen, damit sie diese eintragen können. &#039;&#039;&#039;Sie können die UDID eines Gerätes mithilfe von Xcode auslesen&#039;&#039;&#039;. Starten Sie dazu Xcode und wählen Sie in der Menüleiste am oberen Bildschirmrand im Menü &#039;&#039;Window&#039;&#039; den Eintrag &#039;&#039;Devices&#039;&#039;. Es öffnet sich ein Fenster, in dem eine Liste der angeschlossenen Geräte angezeigt wird. Wählen Sie Ihr Gerät aus und suchen Sie in Eigenschaften den Eintrag &#039;&#039;Identifier&#039;&#039;. Die UDID ist eine 40-stellige Hexadezimalzahl.&lt;br /&gt;
&lt;br /&gt;
* Extern entwickelte App für Ihr Testgerät umsignieren:&lt;br /&gt;
:Es können auch Apps umsigniert werden, damit Sie auf anderen Geräten lauffähig sind. Dieser Vorgang ist jedoch kompliziert und setzt insbesondere einen Zugang zu einem Apple-Developer-Account voraus. Eine Dokumentation zur Vorgehensweise ist derzeit in Vorbereitung.&lt;br /&gt;
&lt;br /&gt;
:Für die Evaluierung unterstützen wir Sie gerne beim Umsignieren Ihrer App.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Melden Sie sich beim [https://developer.apple.com/ Apple-Webinterface] an. Navigieren Sie zu &#039;&#039;Certificates, IDs &amp;amp; Profiles&#039;&#039;. Erzeugen Sie hier ggf. ein Developer-Zertifikat und ein Provisioning Profile für Ihr Gerät und laden Sie beide herunter. Sollten Sie noch keinen Developer Account haben, erstellen Sie hier einen: https://developer.apple.com/enroll/. Hierzu müssen Sie sich mit einer Apple-ID anmelden.&lt;br /&gt;
&lt;br /&gt;
# Team-ID herausfinden (&#039;&#039;Membership&#039;&#039; -&amp;gt; &#039;&#039;Team ID&#039;&#039;)&lt;br /&gt;
# Unter &#039;&#039;Certificates, IDs &amp;amp; Profiles&#039;&#039; Development-Zertifikat auswählen (unter &#039;&#039;+&#039;&#039; anlegen, falls nicht vorhanden) und herunterladen.&lt;br /&gt;
# Unter &#039;&#039;App ID&#039;&#039; Wildcard-App-ID erzeugen, falls nicht vorhanden. App-ID notieren (AppID = Prefix.ID)&lt;br /&gt;
# Gerät hinzufügen, dazu UDID (bzw. &#039;&#039;Identifier&#039;&#039;) des Geräts herausfinden (&#039;&#039;Xcode&#039;&#039; -&amp;gt; &#039;&#039;Window&#039;&#039; (oben in Menüleiste) -&amp;gt; &#039;&#039;Devices&#039;&#039;)&lt;br /&gt;
# Provisionen Profile erstellen: &#039;&#039;iOS App Development&#039;&#039; -&amp;gt; &#039;&#039;AppID&#039;&#039; auswählen -&amp;gt; Zertifikat wählen -&amp;gt; Gerät auswählen -&amp;gt; Profilname anlegen -&amp;gt; Provisioning Profile herunterladen.&lt;br /&gt;
# Das heruntergeladene Zertifikat importieren (&#039;&#039;Downloads&#039;&#039; -&amp;gt; Zertifikat (.cer) &lt;br /&gt;
# SHA1-Fingerabdruck kopieren. Dazu Rechtsklick auf Zertifikat  -&amp;gt; &#039;&#039;Information&#039;&#039;, anschließend bis zum Ende der Seite scrollen).&lt;br /&gt;
# Entitlements.plist erstellen (&#039;&#039;Terminal&#039; öffnen  -&amp;gt; &lt;br /&gt;
 Downloads/Mobile_Testing_Supplement/bin/gen-entitlements_plist &#039;Team-ID&#039; &#039;App ID&#039;  &lt;br /&gt;
 Downloads/Mobile_Testing_Supplement/bin/re-sign-ipa &amp;lt;Pfad zum ipa (z.B. Downloads/expeccoMobileDemo.ipa)&amp;gt; \&lt;br /&gt;
&amp;quot;&amp;lt;Zertifikat (SHA1-Fingerabdruck, z.B. 76 E8 4B E8 78 D5 D7 F9 2E 09 8B D7 E8 FB CE 30 0C F5 D0 EF)&amp;gt;&amp;quot; \&lt;br /&gt;
&amp;lt;Pfad zum Provisionen Profile (z.B. /Users/exept_test/Downloads/dut.mobileprovision)&amp;gt; \&lt;br /&gt;
&amp;lt;Pfad für das Ergebnis-ipa (z.B. Downloads/expeccoMobileDemo_re-signed.ipa)&amp;gt; \&lt;br /&gt;
 [Pfad zur entitlements.plist] (z.B. /Users/exept_test/entitlements.plist)&lt;br /&gt;
&lt;br /&gt;
Zum Umsignieren können Sie das entsprechende Script aus dem Mobile Testing Supplement für Mac OS oder jedes beliebige andere Tool (z.B. isign) verwenden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zur Verwendung von iOS-Geräten finden Sie auch in der [http://appium.io/slate/en/1.4/?java#appium-on-real-ios-devices Dokumentation von Appium].&lt;br /&gt;
&lt;br /&gt;
=== expecco 2.11 ===&lt;br /&gt;
Mit expecco 2.11 brauchen Sie keine Anpassungen an der App. Sie brauchen nur ein Entwicklerzertifikat in der Schlüsselbundverwaltung des Macs. Lesen Sie dazu den entsprechenden Abschnitt im Kapitel [[#Mac_OS | Installation und Aufbau für Mac OS]]. Geben Sie bei den Verbindungseinstellungen zusätzlich die Capability &#039;&#039;xcodeOrgId&#039;&#039; an und setzen Sie als Wert die Team-ID des Zertifikats. Lesen Sie dazu den [[#Erweiterte_Ansicht | Abschnitt zur erweiterten Ansicht des Verbindungsdialogs]].&lt;br /&gt;
&lt;br /&gt;
= Dialoge des Mobile Testing Plugins =&lt;br /&gt;
== Verbindungseditor ==&lt;br /&gt;
Mithilfe des Verbindungseditors können Sie schnell Verbindungen definieren, ändern oder aufbauen. Je nach Aufgabe weist der Dialog kleine Unterschiede auf und wird unterschiedlich geöffnet: &lt;br /&gt;
*Wenn Sie eine Verbindung aufbauen wollen, erreichen Sie den Dialog im GUI-Browser, indem Sie auf &#039;&#039;Verbinden&#039;&#039; klicken und dann &#039;&#039;Mobile Testing&#039;&#039; auswählen.&lt;br /&gt;
*Um eine bestehende Verbindung im GUI-Browser zu ändern oder zu kopieren, wählen Sie diese aus, machen einen Rechtsklick und wählen im Kontextmenü entsprechend &#039;&#039;Verbindung bearbeiten&#039;&#039; oder &#039;&#039;Verbindung kopieren&#039;&#039; aus.&lt;br /&gt;
*Wollen Sie Verbindungseinstellungen  nicht für den GUI-Browser sondern zur Verwendung in einem Test erstellen, wählen Sie im Menü des Mobile Testing Plugins den Punkt &#039;&#039;Verbindungseinstellungen erstellen...&#039;&#039;. Darüber können nur die Einstellungen für eine Verbindung erstellt werden, ohne dass eine Verbindung im GUI-Browser angelegt wird.&lt;br /&gt;
&lt;br /&gt;
Das Menü des Verbindungseditors weist verschiedenen Schaltflächen auf, von denen manche nur beim Erstellen von Verbindungseinstellungen sichtbar sind:&lt;br /&gt;
*&#039;&#039;Einstellungen löschen&#039;&#039;: Setzt alle Einträge zurück. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Einstellungen aus Datei laden&#039;&#039;: Erlaubt das Öffnen einer gespeicherten Einstellungsdatei (*.csf). Deren Einstellungen werden in den Dialog übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.&lt;br /&gt;
*&#039;&#039;Einstellungen aus Anhang laden&#039;&#039;: Erlaubt das Öffnen eines Anhangs mit Verbindungseinstellungen aus einem geöffneten Projekt. Diese Einstellungen werden in den Dialog übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.&lt;br /&gt;
*&#039;&#039;Einstellungen in Datei speichern&#039;&#039; und &#039;&#039;Einstellungen in Anhang speichern&#039;&#039;: Hier können Sie die eingetragenen Einstellungen in eine Datei (*.csf) speichern oder als Anhang in einem geöffneten Projekt anlegen. Beide Optionen besitzen ein verzögertes Menü, in dem Sie auswählen können, nur einen bestimmten Teil der Einstellungen zu speichern. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Erweiterte Ansicht&#039;&#039;: Damit können Sie in die erweiterte Ansicht wechseln, um zusätzliche Einstellungen vorzunehmen. Lesen Sie dazu mehr am Ende des Kapitels. (Nur beim Erstellen von Einstellungen sichtbar.)&lt;br /&gt;
*&#039;&#039;Hilfe&#039;&#039;: An der rechten Seite wird ein Hilfetext zum jeweiligen Schritt ein- oder ausgeblendet.&lt;br /&gt;
&lt;br /&gt;
Der Dialog ist in drei Schritte unterteilt. Im ersten Schritt wählen Sie das Gerät, das Sie verwenden möchten. Im oberen Teil erhalten Sie eine Liste aller angeschlossenen Geräte, die erkannt werden. Mit der Checkbox darunter können Sie die Geräte ausblenden, die zwar erkannt werden, aber nicht bereit sind. Falls Sie ein Gerät eintragen wollen, das nicht angeschlossen ist, können Sie dies mit dem entsprechenden Knopf &#039;&#039;Android-Gerät eingeben&#039;&#039; bzw. &#039;&#039;iOS-Gerät eingeben&#039;&#039; anlegen. Dazu müssen Sie jedoch die benötigten Eigenschaften Ihres Geräts kennen. Das Gerät wird dann in einer zweiten Geräteliste angelegt und kann dort ausgewählt werden. Wenn keine Liste mit angeschlossenen Elementen angezeigt werden kann, werden stattdessen verschiedene Meldungen angezeigt:&lt;br /&gt;
*Keine Geräte gefunden&lt;br /&gt;
*:expecco konnte keine Android-Geräte finden.&lt;br /&gt;
*:Um eine Verbindung zu einem Gerät automatisch zu konfigurieren, stellen Sie sicher, dass es&lt;br /&gt;
*:*angeschlossen ist&lt;br /&gt;
*:*eingeschaltet ist&lt;br /&gt;
*:*einen passenden adb-Treiber installiert hat&lt;br /&gt;
*:*für Debugging freigeschaltet ist.&lt;br /&gt;
*Keine verfügbaren Geräte gefunden&lt;br /&gt;
*:expecco konnte keine verfügbaren Android-Geräte finden. Es wurden aber nicht verfügbare gefunden, z.B. mit dem Status &amp;quot;unauthorized&amp;quot;.&lt;br /&gt;
*:Um eine Verbindung zu einem Gerät automatisch zu konfigurieren, stellen Sie sicher, dass es&lt;br /&gt;
*:*angeschlossen ist&lt;br /&gt;
*:*eingeschaltet ist&lt;br /&gt;
*:*einen passenden adb-Treiber installiert hat&lt;br /&gt;
*:*für Debugging freigeschaltet ist.&lt;br /&gt;
*:Um nicht verfügbare Geräte anzuzueigen, aktivieren Sie\unten diese Option.&lt;br /&gt;
*Verbindung verloren&lt;br /&gt;
*:expecco hat die Verbindung zum adb-Server verloren. Versuchen Sie die Verbindung wieder herzustellen, indem Sie auf den Button klicken.&lt;br /&gt;
*Verbindung fehlgeschlagen&lt;br /&gt;
*:expecco konnte sich nicht mit dem adb-Server\verbinden. Möglicherweise läuft er nicht oder der angegebene Pfad stimmt nicht.&lt;br /&gt;
*:Überprüfen Sie die adb-Konfiguration in den Einstellungen und versuchen Sie den adb-Server zu starten und eine Verbindung herzustellen indem Sie auf den Knopf klicken.&lt;br /&gt;
*Verbinden ...&lt;br /&gt;
*:expecco verbindet sich mit dem adb-Server. Dies kann einige Sekunden dauern.&lt;br /&gt;
*adb-Server starten ...&lt;br /&gt;
*:expecco startet den adb-Server. Dies kann einige Sekunden dauern.&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;Automatisierung durch&#039;&#039; können Sie angeben, welche Automation-Engine verwendet werden soll. Lassen Sie die Einstellung auf &#039;&#039;(Default)&#039;&#039; wird die entsprechende Capability gar nicht gesetzt. Ansonsten stehen Appium und Selendroid zur Verfügung. In der Regel wird Selendroid nur für Android-Geräte vor Version 4.1 gebraucht. Mit &#039;&#039;Weiter&#039;&#039; gelangen Sie zum nächsten Schritt. Wenn Sie Einstellungen für den GUI-Browser eingeben, ist das erst möglich, wenn ein Gerät ausgewählt wurde.&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt können Sie Angaben zur App machen, die getestet werden soll. Dabei können Sie entscheiden, ob Sie eine App verwenden wollen, die bereits auf dem Gerät installiert ist, oder ob für den Test eine App installiert werden soll. Wählen Sie oben den entsprechenden Reiter aus. Je nachdem, ob Sie im vorigen Schritt ein Android- oder ein iOS-Gerät ausgewählt haben, ändert sich die erforderte Eingabe.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Android&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;App auf dem Gerät&#039;&#039;&lt;br /&gt;
**:Wenn Sie im ersten Schritt ein angeschlossenes Gerät ausgewählt haben, werden die Pakete aller installierten Apps automatisch abgerufen und Sie können die Auswahl aus den Drop-down-Listen treffen. Die installierten Apps sind in Fremdpakete und Systempakete unterteilt; wählen Sie die entsprechende Paketliste aus. Diese Auswahl gehört nicht zu den Einstellungen, sondern stellt nur die entsprechende Paketliste zur Verfügung. Sie können den Filter benutzen, um die Liste weiter einzuschränken und dann das gewünschte Paket auswählen. Die Activities des ausgwählten Pakets werden ebenfalls automatisch abgerufen und ebenfalls als Drop-down-Liste zur Verfügung gestellt. Wählen Sie die Activity aus, die gestartet werden soll. Falls es nur eine Activity gibt, wird diese sofort automatisch eingetragen. Falls Sie kein verbundenes Gerät verwenden, müssen Sie die Eingabe des Pakets und der Activity von Hand vornehmen.&lt;br /&gt;
**&#039;&#039;App installieren&#039;&#039;&lt;br /&gt;
**:Geben Sie bei &#039;&#039;App&#039;&#039; den Pfad zu einer App an. Der Pfad muss für den Appium-Server gültig sein, der verwendet wird. Sie können auch eine URL angeben. Benutzen Sie einen lokalen Appium-Server, können Sie den rechten Butten benutzen, um zu der Installationsdatei der App zu navigieren und diesen Pfad einzutragen. Wenn möglich werden dabei auch das entsprechende Paket und die Activity in den Feldern darunter eingetragen. Diese Angabe ist aber nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;iOS&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;App auf dem Gerät&#039;&#039;&lt;br /&gt;
**:Geben Sie die Bundle-ID einer installierten App an. Sie können die IDs der installierten Apps bspw. mithilfe von Xcode erfahren.&lt;br /&gt;
**&#039;&#039;App installieren&#039;&#039;&lt;br /&gt;
**:Geben Sie bei &#039;&#039;App&#039;&#039; den Pfad zu einer App an. Der Pfad muss für den Appium-Server gültig sein, der verwendet wird. Sie können auch eine URL angeben. Für reale Geräte muss diese App ein signierter Development-Build sein.&lt;br /&gt;
&lt;br /&gt;
Im unteren Teil können Sie festlegen, ob die App beim Verbindungsabbau zurückgesetzt bzw. deinstalliert werden soll, und ob sie initial zurückgesetzt werden soll. Auch hier wird die entsprechende Capability gar nicht gesetzt, wenn Sie &#039;&#039;(Default)&#039;&#039; auswählen. Mit &#039;&#039;Weiter&#039;&#039; gelangen Sie zum nächsten Schritt.&lt;br /&gt;
&lt;br /&gt;
Im letzten Schritt befindet sich zunächst im oberen Teil eine Liste aller Capabilities, die sich aus Ihren Angaben der vorigen Schritte ergeben. Wenn Sie sich mit Appium auskennen und noch zusätzliche Capabilities setzen möchten, die der Verbindungseditor nicht abdeckt, können Sie durch Klicken auf &#039;&#039;Bearbeiten&#039;&#039; in die erweiterte Ansicht gelangen. Lesen Sie dazu den Abschnitt weiter unten.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie Einstellungen für den GUI-Browser eingeben, können Sie den &#039;&#039;Verbindungsnamen&#039;&#039; eintragen, mit dem die Verbindung angezeigt wird. Dies ist auch der Name unter dem Bausteine diese Verbindung verwenden können, wenn sie aufgebaut ist. Wenn Sie das Feld frei lassen, wird ein Name generiert. Um die Adresse für den Appium-Server anzugeben, erhalten Sie die lokale Stadard-Adresse und bereits verwendete Adressen zur Auswahl. Wenn Sie den Haken für &#039;&#039;Bei Bedarf starten&#039;&#039; setzen, versucht expecco beim Verbinden einen Appium-Server an der angegebenen Adresse zu starten, wenn dort noch keiner läuft. Dieser Server wird dann beim Beenden der Verbindung ebenfalls heruntergefahren. Dies funktioniert nur für lokale Adressen. Achten Sie darauf, nur Portnummern zu verwenden, die auch frei sind. Verwenden Sie am besten nur ungerade Portnummern ab dem Standardport 4723. Beim Verbindungsaufbau wird ebenfalls die folgende Portnummer verwendet, wodurch es sonst zu Konflikten kommen könnte.&lt;br /&gt;
&lt;br /&gt;
Je nachdem, wie Sie den Dialog geöffnet haben, gibt es nun verschiedene Schaltflächen um ihn abzuschließen. In jedem Fall haben Sie die Option zu speichern. Dabei öffnet sich ein Dialog, indem Sie entweder ein geöffnet Projekt auswählen können, um die Einstellungen dort als Anhang zu speichern, oder auswählen es in einer Datei zu speichern, die Sie anschließend angeben können. Durch das Speichern wird der Dialog nicht beendet, wodurch Sie anschließend noch eine andere Option auswählen könnten.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Editor zum Verbindungsaufbau geöffnet haben, können Sie abschließend auf &#039;&#039;Verbinden&#039;&#039; oder &#039;&#039;Server starten und verbinden&#039;&#039; klicken, je nachdem, ob der Haken für den Serverstart gesetzt ist. Für das Ändern oder Kopieren einer Verbindung im GUI-Brower heißt diese Option &#039;&#039;Übernehmen&#039;&#039;, da in diesem Fall nur der Verbindungseintrag geändert bzw. neu angelegt wird, der Verbindungsaufbau aber nicht gestartet wird. Das können Sie bei Bedarf anschließend über das Kontextmenü tun. Falls Sie Capabilities einer bestehenden Verbindung geändert haben, fordert Sie anschließend ein Dialog auf zu entscheiden, ob diese Änderungen direkt übernommen werden sollen, indem die Verbindung abgebaut und mit den neuen Verbindungen aufgebaut wird, oder nicht. In diesem Fall werden die Änderungen erst wirksam, nachdem Sie die Verbindung neu aufbauen.&lt;br /&gt;
&lt;br /&gt;
Zur Verwendung des Verbindungseditors lesen Sie auch den entsprechenden Abschnitt im jeweiligen Tutorial in Schritt 1 (Android: [[#Schritt_1:_Demo_ausf.C3.BChren|Demo ausführen]], iOS: [[#Schritt_1:_Demo_ausf.C3.BChren_2|Demo ausführen]]).&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Ansicht ===&lt;br /&gt;
Die erweiterte Ansicht des Verbindungseditors erhalten Sie entweder durch Klicken auf &#039;&#039;Bearbeiten&#039;&#039; im dritten Schritt oder jederzeit über den entsprechenden Menüeintrag, wenn Sie den Editor über das Plugin-Menü gestartet haben. In dieser Ansicht erhalten Sie eine Liste aller eingestellten Appium-Capabilities. Zu dieser können Sie weitere hinzufügen, Einträge ändern oder entfernen. Um eine Capability hinzuzufügen, wählen Sie diese aus der Drop-down-Liste des Eingabefelds aus. In dieser befinden sich alle bekannten Capabilities sortiert in die Kategorien &#039;&#039;Common&#039;&#039;, &#039;&#039;Android&#039;&#039; und &#039;&#039;iOS&#039;&#039;. Haben Sie eine Capability ausgewählt, wird ein kurzer Informationstext dazu angezeigt. Sie können in das Feld auch von Hand eine Capability eingeben. Klicken Sie dann auf &#039;&#039;Hinzufügen&#039;&#039;, um die Capabilitiy in die Liste einzutragen. Dort können Sie in der rechten Spalte den Wert setzen. Um einen Entrag zu löschen, wählen Sie diesen aus und klicken Sie auf &#039;&#039;Entfernen&#039;&#039;. Mit &#039;&#039;Zurück&#039;&#039; verlassen Sie die erweiterte Ansicht.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingErweiterteAnsicht.png]]&lt;br /&gt;
&lt;br /&gt;
== Laufende Appium-Server ==&lt;br /&gt;
Im Menü des Mobile Testing Plugins finden Sie den Eintrag &#039;&#039;Appium-Server...&#039;&#039;. Mit diesem öffnen Sie ein Fenster mit einer Übersicht aller Appium-Server, die von expecco gestartet wurden und auf welchem Port diese laufen. Durch Klicken auf das Icon in der Spalte &#039;&#039;Log anzeigen&#039;&#039; können Sie das Logfile des entsprechenden Servers anschauen. Dieses wird beim Beenden des Servers wieder gelöscht. Mit den icons in der Spalte &#039;&#039;Beenden&#039;&#039; kann der entsprechenden Server beendet werden. Allerdings wird dies verhindert, wenn expecco über diesen Server noch eine offene Verbindung hat.&lt;br /&gt;
&lt;br /&gt;
Außerdem können Sie hier auch Server starten. Verwenden Sie die Eingabefelder zur Konfiguration der Serveradresse. Sie können die Felder auch frei lassen, um die Standardwerte zu verwenden. Bitte beachten Sie, dass Server nur lokal gestartet werden können und der gewählte Port nicht belegt sein darf. Typischerweise werden die ungeraden Portnummern ab 4723 verwendet. Die folgende Portnummer wird beim Verbinden mit einem Gerät ebenfalls benötigt, wodurch es mit den geraden Nummern zu Konflikten kommen könnte.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppiumServer.png]]&lt;br /&gt;
&lt;br /&gt;
Im Menü des Mobile Testing Plugins finden Sie auch den Eintrag &#039;&#039;Alle Verbindungen und Server beenden&#039;&#039;. Dies ist für den Fall gedacht, dass Verbindungen oder Server auf andere Weise nicht beendet werden können. Beenden Sie Verbindungen wenn möglich immer im GUI-Browser oder durch Ausführen eines entsprechenden Bausteins. Server, die Sie in der Server-Übersicht gestartet haben, beenden Sie dort; Server, die mit einer Verbindung gestartet wurden, werden automatisch mit dieser beendet.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass in der Übersicht nur Server aufgelistet sind, die von expecco gestartet und verwaltet werden. Mögliche andere Appium-Server, die auf andere Art gestartet wurden, werden nicht erkannt.&lt;br /&gt;
&lt;br /&gt;
== Recorder ==&lt;br /&gt;
Besteht im GUI-Browser eine Verbindung zu einem Gerät, kann der integrierte Recorder verwendet werden, um mit diesem Gerät einen Testabschnitt aufzunehmen. Sie starten den Recorder, indem Sie im GUI-Browser die entsprechende Verbindung auswählen und dann auf den Aufname-Knopf klicken. Für den Recorder öffnet sich ein neues Fenster. Die aufgezeichneten Aktionen werden im Arbeitsbereich des GUI-Browsers angelegt. Daher ist es möglich, das Aufgenommene parallel zu editieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder.png|caption|]]&lt;br /&gt;
&lt;br /&gt;
;Komponenten des Recorderfensters&lt;br /&gt;
#&#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;: Holt das aktuelle Bild und den aktuellen Elementbaum vom Gerät. Dies wird nötig, wenn das Gerät zur Ausführung einer Aktion länger braucht oder sich etwas ohne das Anstoßen durch den Recorder ändert.&lt;br /&gt;
#&#039;&#039;&#039;Follow-Mouse&#039;&#039;&#039;: Das Element unter dem Mauszeiger wird im GUI-Browser markiert.&lt;br /&gt;
#&#039;&#039;&#039;Highlight-Selected&#039;&#039;&#039;: Das Elements unter dem Mauszeiger wird rot umrandet.&lt;br /&gt;
#&#039;&#039;&#039;Show-Bounds&#039;&#039;&#039;: Die Rahmen aller Elemente der Ansicht werden angezeigt.&lt;br /&gt;
#&#039;&#039;&#039;Werkzeuge&#039;&#039;&#039;: Auswahl, mit welchem Werkzeg aufgenommen werden soll. Die gewählte Aktion wird bei einem Klick auf die Anzeige ausgelöst. Dabei stehen folgende Aktionen zur Verfügung:&lt;br /&gt;
#*Aktionen auf Elemente:&lt;br /&gt;
#**Klicken: Kurzer Klick auf das Element über dem der Cursor steht. Zur genaueren Bestimmung, welches Element verwendet wird, benutzen Sie die Funktion Follow-Mouse oder Highlight-Selected.&lt;br /&gt;
#**Element antippen: Ähnlich zum Klicken, nur dass zusätzlich die Dauer des Klicks aufgezeichnet wird. Dadurch sind auch längere Klicks möglich.&lt;br /&gt;
#**Text anhängen: Ermöglicht das Hinzufügen eines Textes in Eingabefelder.&lt;br /&gt;
#**Text löschen: Löscht den Text eines Eingabefelds.&lt;br /&gt;
#*Aktionen auf das Gerät:&lt;br /&gt;
#**Antippen: Löst einen Klick auf die Bildschirmposition aus, bei dem auch die Dauer berücksichtigt wird.&lt;br /&gt;
#**Wischen: Wischen in einer geraden Linie vom Punkt des Drückens des Mausknopfes bis zum Loslassen. Die Dauer wird ebenfalls aufgezeichnet.&lt;br /&gt;
#:Beachten Sie bei diesen Aktionen, dass das Ergebnis sich auf verschiedenen Geräten unterscheiden kann, bspw. bei verschiedenen Bildschirmauflösungen.&lt;br /&gt;
#*Erstellen von Testablauf-Bausteinen&lt;br /&gt;
#**Attribut prüfen: Vergleicht den Wert eines festgelegten Attributs des Elements mit einem vorgegebenen Wert. Das Ergebnis triggert den entsprechenden Ausgang.&lt;br /&gt;
#**Attribut zusichern: Vergleicht den Wert eines festgelegten Attributs des Elements mit einem vorgegebenen Wert. Bei Ungleichheit schlägt der Test fehl.&lt;br /&gt;
#*Auto&lt;br /&gt;
#:Ist das Auto-Werkzeug ausgewählt, können alle Aktionen durch spezifische Eingabeweise benutzt werden: &#039;&#039;Klicken&#039;&#039;, &#039;&#039;Element antippen&#039;&#039; und &#039;&#039;Wischen&#039;&#039; funktionieren weiterhin durch Klicken, wobei sie anhand der Dauer und der Bewegung des Cursors unterschieden werden. Um ein &#039;&#039;Antippen&#039;&#039; auszulösen, halten Sie beim Klicken Strg gedrückt. Die übrigen Aktionen erhalten Sie durch einen Rechtsklick auf das Element in einem Kontextmenü.&lt;br /&gt;
#&#039;&#039;&#039;Softkeys&#039;&#039;&#039;: Nur unter Android. Simuliert das Drücken der Knöpfe Zurück, Home, Fensterliste und Power.&lt;br /&gt;
#&#039;&#039;&#039;Anzeige&#039;&#039;&#039;: Zeigt einen Screenshot des Geräts. Aktionen werden mit der Maus je nach Werkzeug ausgelöst. Wenn eine neue Aktion eingegeben werden kann, hat das Fenster einen grünen Rahmen, sonst ist er rot.&lt;br /&gt;
#&#039;&#039;&#039;Fenster an Bild anpassen&#039;&#039;&#039;: Ändert die Größe des Fensters so, dass der Screenshot vollständig angezeigt werden kann.&lt;br /&gt;
#&#039;&#039;&#039;Bild an Fenster anpassen&#039;&#039;&#039;: Skaliert den Screenshot auf eine Größe, mit der er die volle Größe des Fensters ausnutzt.&lt;br /&gt;
#&#039;&#039;&#039;Ausrichtung anpassen&#039;&#039;&#039;: Korrigiert das Bild, falls dieses auf dem Kopf stehen sollte. Über den Pfeil rechts daneben kann das Bild auch um 90° gedreht werden, falls dies einmal nötig sein sollte. Die Ausrichtung des Bildes ist für die Funktion des Recorders unerheblich, dieser arbeitet ausschließlich auf den erhaltenen Elementen.&lt;br /&gt;
#&#039;&#039;&#039;Skalierung&#039;&#039;&#039;: Ändert die Skalierung des Screenshots. Kann auch über den Schieberegler rechts daneben angepasst werden.&lt;br /&gt;
#&#039;&#039;&#039;Kontrollleuchte&#039;&#039;&#039;: Zeigt den Zustand des Recorders an&lt;br /&gt;
#:&#039;&#039;grün&#039;&#039;: Der Recorder ist bereit&lt;br /&gt;
#:&#039;&#039;rot&#039;&#039;: Der Recorder ist blockiert, weil die Anzeige und die Elementliste aktualisiert werden&lt;br /&gt;
#:&#039;&#039;grau&#039;&#039;: Der Recorder kann nicht mehr verwendet werden, da die Verbindung zum Gerät verloren gegangen ist&lt;br /&gt;
&lt;br /&gt;
;Verwendung&lt;br /&gt;
Mit jedem Klick im Fenster wird eine Aktion ausgelöst und im Arbeitsbereich des GUI-Browsers aufgezeichnet. Dort können Sie das Aufgenommene abspielen, editieren oder daraus einen neuen Baustein erstellen. Zur Verwendung des Recorders lesen Sie auch Schritt 2 im Tutorial ([[#Schritt_2:_Einen_Baustein_mit_dem_Recorder_erstellen|Android]] bzw. [[#Schritt_2:_Einen_Baustein_mit_dem_Recorder_erstellen_2|iOS]]).&lt;br /&gt;
&lt;br /&gt;
== AVD Manager und SDK Manager ==&lt;br /&gt;
AVD Manager und SDK Manager sind beides Anwendungen von Android. Im Menü des Mobile Testing Plugins bietet expecco die Möglichkeit, diese zu starten. Ansonsten finden Sie diese Programme bei Ihrer Android-Installation. Mit dem AVD Manager können Sie AVDs, also Konfigurationen für Emulatoren, erstellen, bearbeiten und starten. Mit dem SDK Manager erhalten Sie einen Überblick über Ihre Android-Installation und können diese bei Bedarf erweitern.&lt;br /&gt;
&lt;br /&gt;
= XPath anpassen mithilfe des GUI-Browsers =&lt;br /&gt;
Bausteine, die auf einem Gerät fehlerfrei funktionieren, tun dies auf anderen Geräten möglicherweise nicht. Auch können kleine Änderungen der App dazu führen, dass ein Baustein nicht mehr den gewünschten Effekt hat. Man sollte einen Baustein daher so robust formulieren, dass er für eine Vielzahl von Geräten verwendet werden kann und kleine Anpassungen an der App verkraftet. Dazu muss man das grundlegende Funktionsprinzip der Adressierung verstehen. Dies wird im Folgenden am Beispiel der App aus dem Tutorial erläutert.&lt;br /&gt;
&lt;br /&gt;
Die Ansicht der App setzt sich aus einzelnen Elementen zusammen. Dazu gehören die Schaltflächen &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; und &#039;&#039;Verify&#039;&#039;, das Eingabefeld der Zahl &#039;&#039;4006381333986&#039;&#039; und das Ergebnisfeld, in dem OK erscheint, wie auch alle anderen auf der Anzeige sichtbaren Dinge. Diese sichtbaren Elemente sind in unsichtbare Strukturelemente eingebettet. Alle Elemente zusammen sind in einer zusammenhängenden Hierarchie, dem Elementbaum, organisiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGUIBrowser.png | frame | left | Abb. 1: Funktionen des GUI-Browsers]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Sie können sich diesen Baum im GUI-Browser ansehen. Wechseln Sie dazu in den GUI-Browser (Abb. 1) und starten Sie eine beliebige Verbindung. Sobald die Verbindung aufgebaut ist, können Sie den gesamten Baum aufklappen (1) (Klick bei gedrückter Strg-Taste). Er enthält alle Elemente der aktuellen Seite der App.&lt;br /&gt;
&lt;br /&gt;
Ein Baustein, der nun ein bestimmtes Element verwendet, muss dieses eindeutig angeben, indem er dessen Position im Elementbaum mit einem Pfad im XPath-Format beschreibt. Dieses Format ist ein verbreiteter Web-Standard für XML-Dokumente und -Datenbanken, eignet sich aber genauso für Pfade im Elementbaum.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Element im Baum auswählen, wird unten der von expecco automatisch generierte XPath (2) für das Element angezeigt, der auch beim Aufzeichnen verwendet wird. Oberhalb davon in der Mitte des Fensters befindet sich eine Liste der Eigenschaften (3) des ausgewählten Elements. Man nennt diese Eigenschaften auch Attribute. Sie beschreiben das Element näher wie beispielsweise seinen Typ, seinen Text oder andere Informationen zu seinem Zustand. Links unten können Sie zur besseren Orientierung im Baum die &#039;&#039;Vorschau&#039;&#039; (4) aktivieren, um sich den Bildausschnitt des Elements anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Der Elementbaum für gleiche Ansicht einer App kann sich je nach Gerät unterscheiden. Es sind diese Unterschiede, die verhindern, eine Aufnahme von einem Gerät unverändert auch auf allen anderen Geräten abzuspielen: Ein XPath, der im einen Elementbaum ein bestimmtes Element identifiziert, beschreibt nicht unbedingt das gleiche Element im Elementbaum auf einem anderen Gerät. Es kann stattdessen passieren, dass der XPath auf kein Element, auf ein falsches Element oder auf mehrere Elemente passt. Dann schlägt der Test fehl oder er verhält sich unerwartet.&lt;br /&gt;
&lt;br /&gt;
Man könnte natürlich für jedes Gerät einen eigenen Testfall schreiben. Das brächte aber unverhältnismäßigen Aufwand bei Testerstellung und -wartung mit sich. Das Problem lässt sich auch anders lösen, da ein jeweiliges Element nicht nur durch genau einen XPath beschrieben wird. Vielmehr erlaubt der Standard mithilfe verschiedener Merkmale unterschiedliche Beschreibungen für ein und dasselbe Element zu formulieren. Das Ziel ist daher, einen Pfad zu finden, der auf allen für den Test verwendeten Geräten funktioniert und überall eindeutig zum richtigen Element führt.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel besteht die Verbindung zur Android-App aus dem Tutorial und der Eintrag des GTIN-13-Buttons ist ausgewählt (5). Dessen automatisch generierter XPath (2) kann beispielsweise so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[@resource id=&#039;android:id/content&#039;]/android.widget.RelativeLayout/android.widget.Button[@resource-id=&#039;de.exept.expeccomobiledemo:id/gtin_13&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Er ist offensichtlich lang und unübersichtlich. Der sehr viel kürzere Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//*[@text=&#039;GTIN-13 (EAN-13)&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
führt zum selben Element.&lt;br /&gt;
&lt;br /&gt;
Für die iOS-App lautet der automatisch generierte XPath für diesen Button beispielsweise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//AppiumAUT/UIAApplication/UIAWindow[1]/UIAButton[2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und kann kürzer als&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//*[@name=&#039;GTIN-13 (EAN-13)&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Sie können den Pfad entsprechend im GUI-Browser ändern und durch &#039;&#039;Pfad überprüfen&#039;&#039; (6) feststellen, ob er weiterhin auf das ausgewählte Element zeigt, was expecco mit &#039;&#039;Verify Path: OK&#039;&#039; (7) bestätigen sollte. Der erste, sehr viel längere Pfad, beschreibt den gesamten Weg vom obersten Element des Baumes bis hin zum gesuchten Button. Der zweite Pfad hingegen wählt mit * zunächst sämtliche Elemente des Baumes und schränkt die Auswahl dann auf genau die Elemente ein, die ein &#039;&#039;text&#039;&#039;- bzw. &#039;&#039;name&#039;&#039;-Attribut mit dem Wert &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; besitzen, in unserem Fall also genau der eine Button, den wir suchen.&lt;br /&gt;
&lt;br /&gt;
Im folgenden werden Android-ähnliche Pfade zur Veranschaulichung verwendet. Die Elemente in iOS-Apps heißen zwar anders, wodurch andere Pfade entstehen; das Prinzip ist jedoch das gleiche.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBaum1.png | frame | Abb. 2: Elementbaum einer fiktiven App]]&lt;br /&gt;
&lt;br /&gt;
Sie können solche Pfade mit Hilfe weniger Regeln selbst formulieren. Sehen Sie sich den einfachen Baum einer fiktiven Android-App in Abb. 2 an: Die Einrückungen innerhalb des Baumes geben die Hierarchie der Elemente wieder. Ein Element ist ein &#039;&#039;Kind&#039;&#039; eines anderen Elementes, wenn jenes andere Element das nächsthöhere Element mit einem um eins geringeren Einzug ist. Jenes Element ist das &#039;&#039;Elternelement&#039;&#039; des Kindes. Sind mehrere untereinander stehende Elemente gleich eingerückt, so sind sie also alle Kinder desselben Elternelements.&lt;br /&gt;
&lt;br /&gt;
Ein Pfad durch alle Ebenen der Hierarchie zum TextView-Element ist nun:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Elemente sind mit Schrägstrichen voneinander getrennt. Es fällt auf, dass der Name des ersten Elements nicht mit dem im Baum übereinstimmt. Das oberste Element in der Hierarchie heißt immer &#039;&#039;hierarchy&#039;&#039; (für iOS wäre es &#039;&#039;AppiumAUT&#039;&#039;), expecco zeigt im Baum stattdessen den Namen der Verbindung an, damit man mehrere Verbindungen voneinander unterscheiden kann. Die weiteren Elemente tragen jeweils das Präfix &#039;&#039;android.widget.&#039;&#039;, das im Baum zur besseren Übersicht nicht angezeigt wird (bei IOS gibt es kein Präfix). Mit jedem Schrägstrich führt der Pfad über eine Eltern-Kind-Beziehung in eine tiefere Hierarchie-Ebene, d. h. &#039;&#039;FrameLayout&#039;&#039; ist ein Kindelement von &#039;&#039;hierarchy&#039;&#039;, &#039;&#039;LinearLayout&#039;&#039; ist ein Kind von &#039;&#039;FrameLayout&#039;&#039; usw. Die in eckigen Klammern geschriebenen Wörter dienen nur als Orientierungshilfe im Baum. Sie gehören nicht zum Typ.&lt;br /&gt;
&lt;br /&gt;
Ein Pfad muss nicht beim Element &#039;&#039;hierarchy&#039;&#039; beginnen. Man kann den Pfad beginnend mit einem beliebigen Element des Baumes bilden. Man kann also verkürzt auch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.TextView&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
schreiben. Der Pfad führt zum selben &#039;&#039;TextView&#039;&#039;-Element, da es nur ein Element dieses Typs gibt. Anders verhält es sich bei dem Pfad&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da es zwei Elemente vom Typ &#039;&#039;Button&#039;&#039; gibt, passt dieser Pfad auf zwei Elemente, nämlich den Button, der mit &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; markiert ist, und den &#039;&#039;Button&#039;&#039;, der mit &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; markiert ist. Es würde an dieser Stelle aber auch nicht helfen den langen Pfad von &#039;&#039;hierarchy&#039;&#039; aus beginnend anzugeben. Um einen mehrdeutigen Pfad weiter zu differenzieren, kann man explizit ein Element aus einer Menge wählen, indem man den numerischen Index in eckigen Klammern dahinter schreibt. Der Pfad aus dem obigen Beispiel lässt sich damit so anpassen, dass er eindeutig auf den &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; weist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button[1].&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ihnen fällt sicher auf, dass der Index eine 1 ist obwohl das zweite Element gemeint ist. Das kommt daher, dass die Zählung bei 0 beginnt. Der Button mit der Markierung &amp;quot;An&amp;quot; hat also die Nummer 0 und der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; hat die Nummer 1.&lt;br /&gt;
&lt;br /&gt;
Dieser Ansatz, einen expliziten Index zu verwenden, hat zwei Nachteile: Zum einen lässt sich an dem Pfad nur schwer ablesen welches Element gemeint ist, zum andern ist der Pfad sehr empfindlich schon gegenüber kleinsten Änderungen, wie zum Beispiel dem Vertauschen der beiden &#039;&#039;Button&#039;&#039;-Elemente oder dem Einfügen eines weiteren &#039;&#039;Button&#039;&#039;-Elements in der App.&lt;br /&gt;
&lt;br /&gt;
Es wäre daher wünschenswert, das gemeinte Element über eine ihm charakteristische Eigenschaft wie einem Attributwert, zu adressieren. Der XPath-Standard erlaubt solche Auswahlbedingungen zu einem Element anzugeben. Angenommen, der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Aus&#039;&#039;&amp;quot; hat die Eigenschaft &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;off&#039;&#039; und der &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; hat als &#039;&#039;resource-id&#039;&#039; den Wert &#039;&#039;on&#039;&#039;, dann kann man als eindeutigen Pfad für den &amp;quot;Aus&amp;quot;-&#039;&#039;Button&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.Button[@resource-id=&#039;off&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
formulieren. Wie an dem Beispiel zu sehen werden solche Bedingungen wie ein Index in eckigen Klammern an den Elementtyp angehängt. Der Name eines Attributes wird mit einem @ eingeleitet und der Wert mit einem = in Anführungszeichen angehängt. Ist der Attributwert global eindeutig, kann man den vorausgehenden Pfad sogar durch den globalen Platzhalter * ersetzen, der auf jedes Element passt. Das obige Beispiel mit dem GTIN-13-&#039;&#039;Button&#039;&#039; war ein solcher Fall.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBaum2.png | frame | Abb. 3: Elementbaum einer fiktiven App mit Erweiterungen]]&lt;br /&gt;
&lt;br /&gt;
Abb. 3 zeigt eine Erweiterung des Beispiels aus Abb. 2. Die App hat nun ein weiteres, nahezu identisches &#039;&#039;LinearLayout&#039;&#039; bekommen. Die &#039;&#039;Buttons&#039;&#039; sind in ihren Attributen jeweils ununterscheidbar. Deshalb funktioniert der vorige Ansatz nicht, einen eindeutigen Pfad nur mithilfe eines Attributwerts zu formulieren. Offensichtlich unterscheiden sich aber ihre benachbarten &#039;&#039;TextViews&#039;&#039;. Es ist möglich die jeweilige &#039;&#039;TextView&#039;&#039; in den Pfad mit aufzunehmen, um einen &#039;&#039;Button&#039;&#039; dennoch eindeutig zu adressieren. Ein Pfad zum &#039;&#039;Button&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;An&#039;&#039;&amp;quot; unterhalb der &#039;&#039;TextView&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Druckschalter&#039;&#039;&amp;quot; kann dabei wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;//android.widget.TextView[@resource-id=&#039;push&#039;]/../android.widget.Button[@resource-id=&#039;on&#039;]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der erste Teil beschreibt den Pfad zu der &#039;&#039;TextView&#039;&#039; mit der Markierung &amp;quot;&#039;&#039;Druckschalter&#039;&#039;&amp;quot; und der &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;push&#039;&#039;. Danach folgt ein Schrägstrich gefolgt von zwei Punkten. Die zwei Punkte sind eine spezielle Elementbezeichnung, die nicht ein Kindelement benennt, sondern zum Elternelement wechselt, in diesem Fall also das &#039;&#039;LinearLayout&#039;&#039;, in dem die &#039;&#039;TextView&#039;&#039; eingebettet ist. Im Kontext dieses &#039;&#039;LinearLayout&#039;&#039; ist der restliche Pfad, nämlich der &#039;&#039;Button&#039;&#039; mit der &#039;&#039;resource-id&#039;&#039; mit dem Wert &#039;&#039;on&#039;&#039;, eindeutig.&lt;br /&gt;
&lt;br /&gt;
Der XPath-Standard bietet noch sehr viel mehr Ausdrucksmittel. Mit der hier knapp vorgestellten Auswahl ist es aber bereits möglich für die meisten praktischen Testfälle gute Pfade zu formulieren. Eine vollständige Einführung in XPath ginge über den Umfang dieser Einführung weit hinaus. Sie finden zahlreiche weiterführende Dokumentationen im Web und in Büchern.&lt;br /&gt;
&lt;br /&gt;
Eine universelle Strategie zum Erstellen guter XPaths gibt es nicht, da sie von den Testanforderungen abhängt. In der Regel ist es sinnvoll, den XPath kurz und dennoch eindeutig zu halten. Häufig lassen sich Elemente über Eigenschaften identifizieren wie beispielsweise ihren Text. Will man aber gerade den Text eines Elements auslesen, kann dieser natürlich nicht im Pfad verwendet werden, da er vorher nicht bekannt ist. Ebenso wird der Text variieren, wenn die App mit verschiedenen Sprachen gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Jeder Baustein, der auf einem Element arbeitet, hat einen Eingangspin für den XPath. Im GUI-Browser finden Sie in der Mitte oben eine Liste von Bausteinen mit Aktionen, die Sie auf das ausgewählte Element anwenden können. Suchen Sie den Baustein &#039;&#039;Click&#039;&#039; (8) im Ordner Elements und wählen Sie ihn aus (Abb. 1). Er wird im rechten Teil unter &#039;&#039;Test&#039;&#039; eingefügt, der Pin für den XPath ist mit dem automatisch generierten Pfad des Elements vorbelegt (9). Sie können den Baustein hier auch ausführen. Die Ansicht wechselt dann auf &#039;&#039;Lauf&#039;&#039;. Ändert sich durch die Aktion der Zustand Ihrer App, müssen Sie den Baum anschließend aktualisieren (10).&lt;br /&gt;
&lt;br /&gt;
Wenn Sie in der unteren Liste eine Eigenschaft auswählen, wechselt die Anzeige der Bausteine zu &#039;&#039;Eigenschaften&#039;&#039;, wo Sie die eigenschaftsbezogenen Bausteine finden. Wie bei den Aktionen können Sie auch hier einen Baustein auswählen, der dann rechts in Test mit dem Pfad des Elements und der ausgewählten Eigenschaft eingetragen wird, sodass Sie ihn direkt ausführen können.&lt;br /&gt;
&lt;br /&gt;
= Beispiele =&lt;br /&gt;
Bei den Demo-Testsuiten für expecco finden Sie auch Beispiele für Tests mit dem Mobile Testing Plugin. Die beginnen jeweils mit dem Buchstaben &#039;&#039;m&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Mobile Testing Demo ==&lt;br /&gt;
Die Testsuite enthält zwei einfache Testpläne: &#039;&#039;Simple CalculatorTest&#039;&#039; und &#039;&#039;Complex Calculator and Messaging Test&#039;&#039;. Beide Tests verwenden einen Android-Emulator, den Sie vor Beginn starten müssen. Die Apps, die im Test verwendet werden, gehören zur Grundausstattung des Emulators und müssen daher nicht mehr installiert werden. Da sich die Apps unter jeder Android-Version unterscheiden können, ist es wichtig, dass Ihr Emulator unter Android 6.0 läuft. Außerdem muss die Sprache auf Englisch gestellt sein.&lt;br /&gt;
&lt;br /&gt;
; Simple CalculatorTest&lt;br /&gt;
: Dieser Test verbindet sich mit dem Taschenrechner und gibt die Formel &#039;&#039;2+3&#039;&#039; ein. Das Ergebnis des Rechners wird mit dem erwarteten Wert &#039;&#039;5&#039;&#039; verglichen.&lt;br /&gt;
&lt;br /&gt;
; Complex Calculator and Messaging Test&lt;br /&gt;
: Dieser Test verbindet sich mit dem Taschenrechner und öffnet anschließend den Nachrichtendienst. Dort wartet er auf eine einkommende Nachricht von der Nummer &#039;&#039;15555215556&#039;&#039;, in der eine zu berechnende Formel gesendet wird. Die Nachricht wird zuvor über einen Socket beim Emulator erzeugt. Nach dem Eintreffen der Nachricht wird diese vom Test geöffnet und deren Inhalt gelesen. Danach wird wieder der Taschenrechner geöffnet, die erhaltene Formel eingegeben und das Ergebnis gelesen. Anschließend wechselt der Test wieder zum Nachrichtendienst und sendet das Ergebnis als Antwort.&lt;br /&gt;
&lt;br /&gt;
== expeccoMobileDemo ==&lt;br /&gt;
Die Testsuite ist Bestandteil des Tutorials zum Mobile Testing Plugin. Der enthaltene Testfall ist unvollständig und wird im Zuge des Tutorials ergänzt. Lesen Sie dazu den Abschnitt [[#Tutorial|Tutorial]].&lt;br /&gt;
&lt;br /&gt;
= Tutorial =&lt;br /&gt;
Dieses Tutorial beschreibt das grundsätzliche Vorgehen zur Erstellung von Tests mit dem Mobile Testing Plugin. Grundlage dafür ist ein mitgeliefertes Beispiel, bestehend aus einer einfachen App und einer expecco-Testsuite.&lt;br /&gt;
&lt;br /&gt;
Die App &#039;&#039;expecco Mobile Demo&#039;&#039; berechnet und überprüft verschiedene alltägliche Codes: die IBAN aus dem europäischen Zahlungsverkehr, die internationalen GTIN-13-Produktcodes, wie man sie bei Strichcodes im Einzelhandel findet, und die Seriennummern auf Euro-Banknoten.&lt;br /&gt;
&lt;br /&gt;
Die Testsuite enthält Testfälle für einzelne Funktionen der App. Dabei sind noch nicht alle Funktionen abgedeckt, sondern werden im Laufe des Tutorials ergänzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Versionen dieses Tutorials: für [[#Erste_Schritte_mit_Android|Android]]- und für [[#Erste_Schritte_mit_iOS|iOS]]-Geräte. Der Test, der dabei erstellt wird, ist nahezu identisch, lediglich die Verbindungskonfigurationen werden unterschiedlich erzeugt.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte mit Android ==&lt;br /&gt;
Es wird vorausgesetzt, dass Sie das Kapitel [[#Installation_und_Aufbau|Installation und Aufbau]] bereits gelesen und die nötigen Vorbereitungen für die Verwendung von Android-Geräten unter Windows abgeschlossen haben.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Demo ausführen ===&lt;br /&gt;
Starten Sie expecco und öffnen Sie die Testsuite &#039;&#039;m02_expeccoMobileDemo.ets&#039;&#039; über die Schaltfläche &#039;&#039;Beispiel aus Datei&#039;&#039; (Abb. 1). In dieser befindet sich bereits ein vorgefertigter Testplan mit einigen Testfällen für diese App.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingBeispielÖffnen.png | frame | left | Abb. 1: Beispiel-Testsuite öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
In der Testsuite ist das Paket der Demo-App als Anhang enthalten (&#039;&#039;expeccoMobileDemo-debug.apk&#039;&#039;). Mithilfe des bereitgestellten Bausteins &#039;&#039;Export Demo App&#039;&#039; können Sie die Datei an einen beliebigen Ort auf Ihrem Rechner exportieren. Wählen Sie dazu den Baustein aus (1) und klicken Sie auf den grünen Play-Knopf (2) um den Baustein auszuführen (Abb. 2). Der Baustein öffnet einen Dateidialog, in dem Sie angeben, wo das Paket gespeichert werden soll.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingExportApp.png | frame | left | Abb. 2: App exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bevor wir uns mit dem weiteren Inhalt der Testsuite beschäftigen, konfigurieren Sie zuerst die Verbindung und welches Gerät Sie benutzen wollen. Schließen Sie dazu ein Gerät über USB an Ihren Rechner an oder starten Sie einen Emulator.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingVerbinden.png | frame | left | Abb. 3: Verbindungseditor öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Öffnen Sie nun den GUI-Browser (1) und wählen Sie unter &#039;&#039;Verbinden&#039;&#039; (2) den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (3) (Abb. 3), um den Verbindungsdialog zu öffnen.&lt;br /&gt;
&lt;br /&gt;
Sie sehen eine Liste aller angeschlossenen Android-Geräte (1) (Abb. 3). Sollte Ihr Gerät nicht in der Liste auftauchen, stellen Sie sicher, dass es eingeschaltet und über USB verbunden ist. Lesen Sie ansonsten den Abschnitt [[#Android-Ger.C3.A4t_vorbereiten|Android-Gerät vorbereiten]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätAuswählen.png | frame | left | Abb. 4: Gerät im Verbindungsdialog auswählen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Haben Sie Ihr Gerät in der Liste gefunden, wählen Sie es aus und klicken Sie auf &#039;&#039;Weiter&#039;&#039; (2).&lt;br /&gt;
&lt;br /&gt;
Als nächstes geben Sie an, welche App Sie verwenden wollen (Abb. 5). Dabei können Sie wählen, ob Sie eine App starten möchten, die bereits auf dem Gerät installiert ist (&#039;&#039;App auf dem Gerät&#039;&#039;) oder ob eine App installiert und gestartet werden soll (&#039;&#039;App installieren&#039;&#039;). Für den Fall, dass Sie eine bereits installierte App benutzen wollen, erhalten Sie eine Liste aller auf dem Gerät installierten Pakete (1), die in Systempakete und Fremdpakete (2) unterteilt sind, sowie deren Activities (3). Diese können Sie dann einfach in den jeweiligen Feldern auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppAuswählen.png | frame | left | Abb. 5: Auf dem Gerät installierte App angeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Für dieses Tutorial soll die App installiert werden, die Sie eben aus der Testsuite exportiert haben. Wählen Sie also &#039;&#039;App installieren&#039;&#039; aus und tragen Sie bei App (1) den entsprechenden Pfad ein (Abb. 6). Sie können den Knopf links benutzen (2), um einen Dateidialog zu öffnen, mit dem Sie zu der Datei navigieren können, um sie einzugeben. Das Paket (3) und die Activity (4) der App werden automatisch eingetragen. Sollte die App mehrere Activities besitzen, können Sie die gewünschte auswählen. Klicken Sie nun auf &#039;&#039;Weiter&#039;&#039; (5).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingAppInstallieren.png | frame | left | Abb. 6: App angeben, die auf dem Gerät installiert werden soll]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Auf der letzten Seite sehen Sie eine Übersicht aller bisherigen Angaben (1) (Abb. 7). Darunter können Sie einen Namen für die Verbindung angeben, unter dem sie im GUI-Browser angezeigt wird (2). Außerdem lässt sich eine Verbindung über diesen Namen identifizieren und in Bausteinen verwenden; der Name muss daher eindeutig sein. Falls Sie keinen Namen angeben, wird generisch einer erzeugt. Geben Sie als Namen &#039;&#039;expeccoMobileDemo&#039;&#039; ein. Im Feld darunter ist die Adresse zum Appium-Server eingetragen (3). Appium ist die Schnittstelle, über die die angeschlossenen Geräte gesteuert werden. Für dieses Tutorial wird die Verwaltung der Instanzen des Appium-Servers von expecco übernommen. Dafür ist die lokale Standard-Adresse &#039;&#039;&amp;lt;nowiki&amp;gt;http://localhost:4723/wd/hub&amp;lt;/nowiki&amp;gt;&#039;&#039; eingetragen und die Option &#039;&#039;Bei Bedarf starten&#039;&#039; aktiviert (4). expecco überprüft dann, ob an der Adresse bereits ein Appium-Server läuft und startet und beendet ihn bei Bedarf automatisch. Wenn der Port &#039;&#039;4723&#039;&#039; bereits belegt ist oder wenn Sie einmal mehrere Verbindungen parallel betreiben wollen, verwenden Sie an dieser Stelle entsprechend einen anderen Port. Es ist dabei üblich die ungeraden Portnummern oberhalb von &#039;&#039;4723&#039;&#039; zu verwenden, also &#039;&#039;4725&#039;&#039;, &#039;&#039;4727&#039;&#039; usw. Natürlich können Sie auch entfernte Server verwenden, das automatische Starten und Beenden eines Servers kann expecco aber nur lokal für Sie übernehmen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingServerkonfiguration.png | frame | left | Abb. 7: Verbindungsnamen und Appium-Server konfigurieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Speichern&#039;&#039; (5) um die Einstellungen für die Testausführung zu speichern. Einstellungen können als Anhang einer Testsuite oder in eine externe Datei gespeichert werden (Abb. 8). Falls Sie mehrere Projekte gleichzeitig offen haben, können Sie in der Liste das Projekt auswählen, in dem der Anhang angelegt werden soll. Klicken Sie auf &#039;&#039;Speichern&#039;&#039; im Bereich &#039;&#039;Einstellungen im Anhang speichern&#039;&#039; und geben Sie als Name &#039;&#039;expeccoMobileDemo&#039;&#039; an. Klicken Sie nun auf &#039;&#039;Server starten und verbinden&#039;&#039; (6) um mit der angegebenen Konfiguration eine Verbindung herzustellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungenSpeichern.png | frame | left | Abb. 8: Einstellungen speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Der Verbindungsaufbau kann eine Weile dauern. Warten Sie bis die Verbindung aufgebaut ist und im GUI-Browser angezeigt wird. Sie sehen, dass die App auf dem Gerät gestartet wird. Nun wissen Sie, dass die Konfiguration funktioniert. Die gespeicherten Einstellungen sollen nun für den Test verwendet werden, der dann die gleiche Verbindung aufbaut. Wählen Sie die Verbindung im GUI-Browser aus, machen Sie einen Rechtsklick und wählen Sie im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039;, damit es zu keinem Konflikt kommt. Wechseln Sie dann zurück zum Reiter der Testsuite.&lt;br /&gt;
&lt;br /&gt;
In der Testsuite wurden die Einstellungen als Anhang &#039;&#039;expeccoMobileDemo&#039;&#039; angelegt (Abb 9). Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; (1) aus und wechseln Sie rechts zur Ansicht &#039;&#039;Netzwerk&#039;&#039; (2). Ziehen Sie per Drag-and-drop die Einstellungen in das Netzwerk des Bausteins (3). Verbinden Sie den Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[1]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039; (4). Mit &#039;&#039;Übernehmen&#039;&#039; (5) bestätigen Sie die Änderungen. Dieser Baustein wird zu Beginn des Tests die Verbindung zur App herstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingConnectblock.png | frame | left | Abb. 9: Verbindungsbaustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wechseln Sie nun zum Testplan &#039;&#039;Demo-Test&#039;&#039; (1) (Abb. 10). Dieser Testplan enthält bereits einige fertige Testfälle. Vor und nach der Ausführung (2) ist außerdem jeweils ein Baustein eingetragen: Der eben bearbeitete Baustein &#039;&#039;Connect&#039;&#039; für den Aufbau und der Baustein &#039;&#039;Disconnect&#039;&#039; für den Verbindungsabbau. Durch das Eintragen der beiden Bausteine an dieser Stelle geschieht der Verbindungsabbau insbesondere auch dann, wenn der Test vorzeitig abgebrochen wird, z. B. weil einer der Testfälle fehlschlägt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingTestplan.png | frame | left | Abb. 10: Testplanausführung]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Jetzt können Sie den Testplan &#039;&#039;Demo-Test&#039;&#039; starten, indem Sie auf den grünen Play-Knopf (3) klicken. Der Testplan sollte ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: Einen Baustein mit dem Recorder erstellen ===&lt;br /&gt;
Mit Hilfe des integrierten Recorders lassen sich einfach Ausführungssequenzen aufnehmen und in einem Baustein speichern. Dafür muss eine Verbindung zu einem Testgerät bestehen, mit dessen Hilfe der Test erstellt wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Verbindung aufzubauen, wechseln Sie zurück zum GUI-Browser. In diesem ist nun die Verbindung eingetragen, die eben bei der Ausführung des Testplans benutzt wurde. Allerdings ist sie nicht mehr aktiv, da sie am Ende der Ausführung abgebaut wurde. Die Einstellungen sind dort aber noch eingetragen. Um die Verbindung mit dieser Konfiguration wieder aufzubauen, wählen Sie sie aus, gefolgt von einem Rechtsklick und &#039;&#039;Verbinden&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Warten Sie, bis die Verbindung aufgebaut ist (1) und drücken Sie dann den Aufnahme-Knopf (2), um eine Aufzeichnung zu starten (Abb. 11).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorderStarten.png | frame | left | Abb. 11: Recorder starten]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Es öffnet sich ein Fenster mit dem Mobile Testing Recorder (Abb. 12). Dieser zeigt einen Screenshot des verbundenen Geräts. Über diese Anzeige können Sie das Gerät fernsteuern. Dabei wird jede Aktion, die Sie ausführen, im Hintergrund aufgezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der oberen Menüleiste können Sie das Werkzeug auswählen (1), mit dem Sie eine Aktion eingeben möchten. Als Voreinstellung ist das Werkzeug &#039;&#039;Auto&#039;&#039; ausgewählt. Sie können damit bestimmte Aktionen aufzeichnen, indem Sie mit dem Mauszeiger entsprechende Gesten auf der Anzeige ausführen. Wenn Sie zum Beispiel mit der linken Maustaste lange klicken, entspricht das einem langen Antippen auf dem Touchscreen des Gerätes. Anstatt die gewünschte Aktion mit der entsprechenden Geste zu bestimmen, können Sie diese alternativ auch manuell auswählen.&lt;br /&gt;
&lt;br /&gt;
Es soll nun ein neuer Test für das Erkennen korrekter GTIN-13-Codes aufgenommen werden. Klicken Sie zunächst in der Anzeige kurz auf den Button &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; (2) der App um einen entsprechenden Klick auf dem Gerät auszulösen. Falls der Recorder danach nicht die aktuelle Ansicht der App darstellen sollte, klicken Sie im Recorder auf das Aktualisierungssymbol (3).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder1.png | frame | left | Abb. 12: Über Recorder zur GTIN-13-Activity wechseln]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Anschließend soll im Eingabefeld der neuen Seite eine korrekte GTIN-13 eingegeben werden. Führen Sie dazu einen Rechtsklick auf dem Eingabefeld (1) aus und wählen Sie im Kontextmenü die Aktion &#039;&#039;Text anhängen&#039;&#039; (2) (Abb. 13). Geben Sie in den sich daraufhin öffnenden Dialog eine beliebige gültige Artikelnummer im GTIN-13-Format ein, bspw. &#039;&#039;4006381333986&#039;&#039; (3). Dieser Text wird nun in der App gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder2.png | frame | left | Abb. 13: GTIN-13-Code über Recorder eingeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Verify&#039;&#039; (1) (Abb. 14). In der App erscheint nun als Ergebnis &#039;&#039;OK&#039;&#039; (2). Der Test soll feststellen, ob tatsächlich dieses Ergebnis angezeigt wird. Nach einem Rechtsklick darauf können Sie im Kontextmenü die Aktion &#039;&#039;Attribut zusichern&#039;&#039; (3) auswählen. Wählen Sie im Dialog, der sich daraufhin öffnet, die Eigenschaft &#039;&#039;text&#039;&#039; (4) aus und bestätigen Sie mit &#039;&#039;OK&#039;&#039; (5). Dieses Mal wird keine Aktion auf dem Gerät ausgelöst, sondern nur ein Baustein aufgezeichnet, der fehlschlägt, sollte das Ergebnis vom erwarteten Wert &#039;&#039;OK&#039;&#039; abweichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder3.png | frame | left | Abb. 14: Antwort der App über Recorder auslesen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Schließen Sie nun den Recorder. Im &#039;&#039;Arbeitsbereich&#039;&#039; des GUI-Browsers sehen Sie, dass für jede der aufgenommenen Aktionen ein Baustein angelegt wurde (Abb. 15). Sie können nun testen, ob sich das Aufgenommene wieder abspielen lässt. Dazu müssen Sie zunächst die App auf Ihrem Gerät in den Anfangszustand zurückbringen, indem Sie auf dem Gerät die Schaltfläche &#039;&#039;HOME&#039;&#039; oben rechts benutzen. Klicken Sie dann in expecco auf den grünen Play-Knopf (1). Wird alles grün, war die Ausführung erfolgreich. Erstellen Sie nun daraus einen neuen Baustein in der Testsuite, indem Sie auf das Bausteinsymbol (2) in der rechten oberen Ecke klicken. Geben Sie ihm den Namen &#039;&#039;GTIN_Verify_OK&#039;&#039; (3) und bestätigen Sie (4).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingArbeitsbereich.png | frame | left | Abb. 15: Neuen Baustein aus Arbeitsbereich exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bauen Sie nun die Verbindung ab, indem Sie die Verbindung auswählen, rechtsklicken und im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie zurück zum Reiter der Testsuite. Dort wurde der neue Baustein angelegt. Wählen Sie wieder den Testplan &#039;&#039;Demo-Test&#039;&#039; aus und fügen Sie den aufgenommenen Testfall &#039;&#039;GTIN_Verify_OK&#039;&#039; per Drag-and-drop am Ende des Testplans hinzu. Übernehmen Sie die Änderung und starten Sie erneut. Der Testplan sollte wieder ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: XPath anpassen mithilfe des GUI-Browsers ===&lt;br /&gt;
Ihr neuer Baustein funktioniert auf anderen Geräten möglicherweise nicht. Die verwendeten Elemente werden über einen XPath adressiert und dieser kann auf anderen Geräten nicht stimmen. Lesen Sie dazu den Abschnitt [[#XPath_anpassen_mithilfe_des_GUI-Browsers|XPath anpassen mithilfe des GUI-Browsers]]. Falls Ihnen ein weiteres Gerät zur Verfügung steht, können Sie nun versuchen, die Pfade in Ihren erstellten Bausteinen zu verallgemeinern. Sie können diesen Schritt aber auch überspringen.&lt;br /&gt;
&lt;br /&gt;
Wenn es Ihnen schwerfällt, verkürzte Pfade zu finden, orientieren Sie sich dabei an den Pfaden der bereits vorhandenen Bausteine. Starten Sie den Test erneut. Sollte der Test jetzt fehlschlagen, überprüfen Sie die Pfade noch einmal im GUI-Browser.&lt;br /&gt;
Um den Test nun auf einem zweiten Gerät auszuführen, öffnen Sie im Menü &#039;&#039;Erweiterungen&#039;&#039; &amp;gt; &#039;&#039;Mobile Testing&#039;&#039; &amp;gt; &#039;&#039;Verbindungseinstellungen erstellen&#039;&#039;. Sie erhalten einen Dialog ähnlich zum Verbindungsdialog. Allerdings können Sie hier nur Einstellungen erstellen und speichern aber keine Verbindung herstellen. Sie haben jedoch die Möglichkeit, einzelne Aspekte der Einstellungen zu speichern wie bspw. nur das Gerät. Wählen Sie das neue Gerät aus und klicken Sie länger auf das Symbol zum Speichern im Anhang bis sich das verzögerte Menü öffnet (Abb. 16). Wählen Sie hier &#039;&#039;Geräte-Einstellungen speichern&#039;&#039;. Benennen Sie den Anhang am besten nach dem Gerät. Danach können Sie den Dialog wieder schließen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätSpeichern.png | frame | left | Abb. 16: Einstellungen für ein Gerät speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; aus und ziehen Sie die Einstellungen für das neue Gerät in dessen Netzwerk. Verbinden Sie nun dessen Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[2]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039;. Der Baustein Connect from File liest die Angaben an den Eingangspins von oben nach unten ein, mehrfache Eigenschaften werden dabei ersetzt. In diesem Fall werden also die Einstellungen zum verwendeten Gerät ersetzt, während die übrigen Einstellungen gleich bleiben. Wenn Sie die Pfade geschickt gewählt haben, wird der Test nun auch auf dem anderen Gerät erfolgreich ablaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Noch einen Baustein erstellen ===&lt;br /&gt;
Falls sich gleiche Abläufe im Test wiederholen, können Sie dafür bereits erstellte Bausteine wieder-verwenden oder abwandeln. Der in Schritt 2 erstellte Baustein prüft die Erkennung korrekter GTIN-13-Codes. Es fehlt noch ein Test, der umgekehrt das Erkennen eines falschen GTIN-13-Codes prüft. Die Struktur der beiden Tests ist identisch, sie unterscheiden sich lediglich in ihren Parametern. Kopieren Sie daher den Baustein &#039;&#039;GTIN_Verify_OK&#039;&#039; und benennen Sie die Kopie in &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039; um. Ändern Sie die Eingabe der GTIN-13 in einen falschen Code zum Beispiel durch Ändern der letzten Ziffer (&#039;&#039;4006381333987&#039;&#039;) und setzen Sie den Überprüfungswert der Ausgabe auf &#039;&#039;NOT OK&#039;&#039; (Abb. 17).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGTIN_Verify_NOT_OK.png | frame | left | Abb. 17: Baustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Fügen Sie diesen neuen Test ebenfalls zum Testplan Demo-Test hinzu und setzen Sie ihn ans Ende. Führen Sie den Testplan aus, aber vergessen Sie nicht, vorher die Verbindung im GUI-Browser abzubauen.&lt;br /&gt;
&lt;br /&gt;
Der neue Test wird fehlschlagen, weil Ihr aufgenommener Baustein nicht wieder zur Startseite der App zurückkehrt, die Tests aber jeweils von dort aus starten. In den anderen Bausteinen ist dies bereits berücksichtigt; sie führen abschließend immer den Baustein &#039;&#039;Back to main menu&#039;&#039; aus. Sie sehen das, indem Sie einen der anderen Bausteine, z. B. &#039;&#039;GTIN_Calculate&#039;&#039;, auswählen und auf seine Schema-Ansicht wechseln. Dort steht der Baustein &#039;&#039;Back to main menu&#039;&#039; im Feld &#039;&#039;Nach Ausführung&#039;&#039; (Abb. 18). Wie beim entsprechenden Feld beim Testplan wird auch dieser Baustein immer am Ende ausgeführt, unabhängig davon, ob der Test erfolgreich verläuft oder abbricht. Ergänzen Sie diesen Eintrag nun in Ihren Bausteinen &#039;&#039;GTIN_Verify_OK&#039;&#039; und &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039;. Wählen Sie dazu den Baustein aus und ziehen Sie in der Schema-Ansicht den Baustein &#039;&#039;Back to main menu&#039;&#039; einfach auf das Eingabefeld &#039;&#039;Nach Ausführung&#039;&#039;. Nun können Sie den Testplan starten und alle Tests sollten wieder problemlos ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumDemo Nach Ausführung.png | frame | left | Abb. 18: Nach-Ausführungs-Baustein setzen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Test vervollständigen ===&lt;br /&gt;
Für die Activity IBAN sind bereits alle Antwortmöglichkeiten der App mit Testfällen abgedeckt. In der GTIN-13-Activity werden ein korrekter und ein fehlerhafter Code getestet und eine Prüfziffer berechnet, das Verhalten der App bei Eingaben falscher Länge wird aber bisher nicht getestet (Bei Verify &#039;&#039;&#039;Input must be exactly 13 digits&#039;&#039;. und &#039;&#039;…12 digits&#039;&#039;. bei Calculate). Die Activity zum Prüfen der Seriennummern von Eurobanknoten wird noch gar nicht getestet. Wie bei der IBAN können hier drei Fälle auftreten: eine korrekte Seriennummer wurde eingegeben (Antwort: &#039;&#039;OK&#039;&#039;), eine falsche Seriennummer wurde eingegeben (Antwort: &#039;&#039;NOT OK&#039;&#039;) oder die Angabe entspricht nicht dem Format (Antwort: &#039;&#039;A serial number consists of 12 characters with the first one or two being capital letters (A-Z).&#039;&#039;). Sie können die Testabdeckung jetzt noch erweitern, indem Sie entsprechende Testfälle erstellen. Die Bausteine dafür können Sie wie in Schritt 2 mit dem Recorder erstellen und die XPaths bei Bedarf verallgemeinern. Wenn Sie mit dem grundsätzlichen Umgang mit expecco vertraut sind, können Sie Bausteine natürlich auch ohne Recorder erstellen, indem Sie sie manuell aus vorhandenen Bausteinen der Bibliothek zusammensetzen. Sie können auch beide Vorgehensweisen nach Belieben kombinieren.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass die hier vorgestellten Testfälle jeweils nur einzelne Eingaben prüfen. Wenn Sie Testfälle für Ihre eigenen Apps schreiben, wollen Sie vermutlich engmaschiger testen, indem Sie noch weitere unterschiedliche Werte eingeben, die insbesondere auch Randfälle enthalten.&lt;br /&gt;
&lt;br /&gt;
== Erste Schritte mit iOS ==&lt;br /&gt;
Es wird vorausgesetzt, dass Sie das Kapitel [[#Installation_und_Aufbau|Installation und Aufbau]] bereits gelesen und die nötigen Vorbereitungen für die Verwendung von iOS-Geräten unter Mac OS abgeschlossen haben. Starten Sie expecco. Mit expecco 2.11 können Sie die Testsuite m03_expeccoMobileDemoIOS.ets über die Schaltfläche Beispiel aus Datei öffnen. Ansonsten laden Sie die Testsuite [http://download.exept.de/transfer/h-expecco-2.10.0/m03_expeccoMobileDemoIOS.ets m03_expeccoMobileDemoIOS.ets] auf den Rechner, auf dem sich Ihre expecco-Installation befindet. Schließen Sie das Gerät, das Sie verwenden wollen, an den Mac an. Laden Sie die iOS-Version der [http://download.exept.de/transfer/h-expecco-2.11.0-pre/expeccoMobileDemo.ipa expeccoMobileDemo-App] auf den Mac herunter. Falls Sie expecco 2.10 verwenden, müssen Sie die App für Ihr Gerät signieren (siehe [[#iOS-Ger.C3.A4t_und_App_vorbereiten|iOS-Gerät und App vorbereiten]]). Starten Sie nun einen Appium-Server auf dem Mac.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: Demo ausführen ===&lt;br /&gt;
Öffnen Sie die Testsuite &#039;&#039;expeccoMobileDemo.ets&#039;&#039; mit expecco. In dieser befindet sich bereits ein vorgefertigter Testplan mit einigen Testfällen für diese App.&lt;br /&gt;
&lt;br /&gt;
Bevor wir uns mit dem weiteren Inhalt der Testsuite beschäftigen, konfigurieren Sie zuerst die Verbindung und welches Gerät Sie benutzen wollen. Öffnen Sie nun den GUI-Browser (1) und wählen Sie unter &#039;&#039;Verbinden&#039;&#039; (2) den Eintrag &#039;&#039;Mobile Testing&#039;&#039; (3) (Abb. 1), um den Verbindungsdialog zu öffnen.&lt;br /&gt;
[[Datei:MobileTestingVerbinden.png | frame | left | Abb. 1: Verbindungseditor öffnen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier können Sie ein iOS-Gerät nur von Hand eintragen. Wählen Sie dazu &#039;&#039;iOS-Gerät eingeben&#039;&#039; (Abb. 2). Den Namen und die iOS-Version des Geräts können Sie dessen Eigenschaften entnehmen. Um die die Gerätekennung des Geräts zu erfahren, öffnen Sie auf dem Mac in Xcode das Fenster Devices (Command-Shift-2). Dort werden alle angeschlossenen Geräte sowie die zur Verfügung stehenden Simulatoren angezeigt. Hier sehen Sie auch die Gerätekennung (udid) Ihres Geräts und welche Apps installiert wurden. Nachdem Sie das Gerät im Verbindungseditor eingegeben haben, wählen Sie es in der Liste aus. Wenn Sie expecco 2.11 verwenden wählen Sie nun bei &#039;&#039;Automatisierung durch&#039;&#039; den Wert &#039;&#039;XCUITest&#039;&#039; aus. Klicken Sie dann auf Weiter.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingIOSGerät.png | frame | left | Abb. 2: Hinzufügen eines iOS-Geräts]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes geben Sie an, welche App Sie verwenden wollen. Dabei können Sie wählen, ob Sie eine App starten möchten, die bereits auf dem Gerät installiert ist (&#039;&#039;App auf dem Gerät&#039;&#039;) oder ob eine App installiert und gestartet werden soll (&#039;&#039;App installieren&#039;&#039;). Für den Fall, dass Sie eine bereits installierte App benutzen wollen, müssen Sie deren Bundle-ID angeben. Diese erfahren Sie ebenfalls im Devices-Fenster von XCode. Für die Demo-App lautet sie beispielsweise &#039;&#039;de.exept.expeccoMobileDemo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Für dieses Tutorial soll die Demo-App erst installiert werden. Wählen Sie also &#039;&#039;App installieren&#039;&#039; aus und tragen Sie bei App den Pfad zu der Datei auf dem Mac ein (Abb. 3). Klicken Sie nun auf &#039;&#039;Weiter&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingIOSAppInstallieren.png | frame | left | Abb. 3: App angeben, die auf dem Gerät installiert werden soll]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf der letzten Seite sehen Sie eine Übersicht aller bisherigen Angaben (1) (Abb. 4). Wenn Sie expecco 2.11 verwenden, können Sie hier noch die Team-ID zu Ihrem Zertifikat angeben (s. Abschnitt [[#Mac_OS | Installation und Aufbau für Mac OS]]). Wenn Sie immer dasselbe Zertifikat verwenden, ist diese Angabe nur für die erste Verbindung nötig. Klicken Sie &#039;&#039;Bearbeiten&#039;&#039; um in die [[#Erweiterte_Ansicht | erweiterte Ansicht]] zu gelangen. Fügen Sie die Capability &#039;&#039;xcodeOrgId &#039;&#039; zur Liste hinzu und setzen Sie die Team-ID als Wert. Klicken Sie dann auf &#039;&#039;Zurück&#039;&#039;, um zur Normalansicht zurückzukehren.&lt;br /&gt;
&lt;br /&gt;
Unterhalb der Capabilityliste können Sie einen Namen für die Verbindung angeben, unter dem sie im GUI-Browser angezeigt wird (2). Außerdem lässt sich eine Verbindung über diesen Namen identifizieren und in Bausteinen verwenden; der Name muss daher eindeutig sein. Falls Sie keinen Namen angeben, wird generisch einer erzeugt. Geben Sie als Namen &#039;&#039;expeccoMobileDemo&#039;&#039; ein. Im Feld darunter ist die Adresse zum Appium-Server eingetragen (3). Wenn Sie den Appium-Server mit Standardeinstellungen gestartet haben, müssen Sie dazu nur in der eingetragenen Standardadresse &#039;&#039;localhost&#039;&#039; durch die IP-Adresse des Macs ersetzen (im Bild &#039;&#039;172.23.1.49&#039;&#039;). Um sicher zu gehen, auf welchem Port der Appium-Server lauscht, sehen Sie in dessen Ausgabe. Dort finden am Anfang die Zeile&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;info: Appium REST http interface listener started on 0.0.0.0:4723&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Steht hier am Ende nicht der Standardport &#039;&#039;4723&#039;&#039; ändern Sie diese Angabe entsprechend ebenfalls in der Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Wenn die Option &#039;&#039;Bei Bedarf starten&#039;&#039; (4) aktiviert ist, überprüft expecco, ob an der Adresse bereits ein Appium-Server läuft, und startet und beendet ihn bei Bedarf automatisch. Das ist allerdings nur für lokale Serveradressen möglich, schalten Sie diese Option daher ab.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingServerkonfigurationIOS.png | frame | left | Abb. 4: Verbindungsnamen und Appium-Server konfigurieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Speichern&#039;&#039; (5) um die Einstellungen für die Testausführung zu speichern. Einstellungen können als Anhang einer Testsuite oder in eine externe Datei gespeichert werden (Abb. 5). Falls Sie mehrere Projekte gleichzeitig offen haben, können Sie in der Liste das Projekt auswählen, in dem der Anhang angelegt werden soll. Klicken Sie auf &#039;&#039;Speichern&#039;&#039; im Bereich &#039;&#039;Einstellungen im Anhang speichern&#039;&#039; und geben Sie als Name &#039;&#039;expeccoMobileDemo&#039;&#039; an. Klicken Sie nun auf &#039;&#039;Verbinden&#039;&#039; (6) um mit der angegebenen Konfiguration eine Verbindung herzustellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingEinstellungenSpeichern.png | frame | left | Abb. 5: Einstellungen speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Verbindungsaufbau kann eine Weile dauern. Wenn Sie die Server-Adresse korrekt angegeben haben, sollten Sie in der Ausgabe des Appium-Servers den Verbindungsversuch erkennen. Auf Ihrem iOS-Gerät sollte dabei die App gestartet werden. Passiert nichts auf dem Gerät, kann es daran liegen, dass entweder das Gerät oder die App nicht gefunden wird. Versucht Appium hingegen, die App zu starten und dies schlägt fehl, ist wahrscheinlich die App falsch signiert. Deinstallieren Sie in diesem Fall die App, damit sie mit einer neuen Signatur wieder installiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Warten Sie bis die Verbindung aufgebaut ist und im GUI-Browser angezeigt wird. Nun wissen Sie, dass die Konfiguration funktioniert. Die gespeicherten Einstellungen sollen nun für den Test verwendet werden, der dann die gleiche Verbindung aufbaut. Wählen Sie die Verbindung im GUI-Browser aus, machen Sie einen Rechtsklick und wählen Sie im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039;, damit es zu keinem Konflikt kommt. Wechseln Sie dann zurück zum Reiter der Testsuite.&lt;br /&gt;
&lt;br /&gt;
In der Testsuite wurden die Einstellungen als Anhang &#039;&#039;expeccoMobileDemo&#039;&#039; angelegt (Abb 6). Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; (1) aus und wechseln Sie rechts zur Ansicht &#039;&#039;Netzwerk&#039;&#039; (2). Ziehen Sie per Drag-and-drop die Einstellungen in das Netzwerk des Bausteins (3). Verbinden Sie den Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[1]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039; (4). Mit &#039;&#039;Übernehmen&#039;&#039; (5) bestätigen Sie die Änderungen. Dieser Baustein wird zu Beginn des Tests die Verbindung zur App herstellen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingConnectblock.png | frame | left | Abb. 6: Verbindungsbaustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie nun zum Testplan &#039;&#039;Demo-Test&#039;&#039; (1) (Abb. 7). Dieser Testplan enthält bereits einige fertige Testfälle. Vor und nach der Ausführung (2) ist außerdem jeweils ein Baustein eingetragen: Der eben bearbeitete Baustein &#039;&#039;Connect&#039;&#039; für den Aufbau und der Baustein &#039;&#039;Disconnect&#039;&#039; für den Verbindungsabbau. Durch das Eintragen der beiden Bausteine an dieser Stelle geschieht der Verbindungsabbau insbesondere auch dann, wenn der Test vorzeitig abgebrochen wird, z. B. weil einer der Testfälle fehlschlägt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingTestplan.png | frame | left | Abb. 7: Testplanausführung]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Jetzt können Sie den Testplan &#039;&#039;Demo-Test&#039;&#039; starten, indem Sie auf den grünen Play-Knopf (3) klicken. Der Testplan sollte ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: Einen Baustein mit dem Recorder erstellen ===&lt;br /&gt;
Mit Hilfe des integrierten Recorders lassen sich einfach Ausführungssequenzen aufnehmen und in einem Baustein speichern. Dafür muss eine Verbindung zu einem Testgerät bestehen, mit dessen Hilfe der Test erstellt wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Verbindung aufzubauen, wechseln Sie zurück zum GUI-Browser. In diesem ist nun die Verbindung eingetragen, die eben bei der Ausführung des Testplans benutzt wurde. Allerdings ist sie nicht mehr aktiv, da sie am Ende der Ausführung abgebaut wurde. Die Einstellungen sind dort aber noch eingetragen. Um die Verbindung mit dieser Konfiguration wieder aufzubauen, wählen Sie sie aus, gefolgt von einem Rechtsklick und &#039;&#039;Verbinden&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Warten Sie, bis die Verbindung aufgebaut ist (1) und drücken Sie dann den Aufnahme-Knopf (2), um eine Aufzeichnung zu starten (Abb. 8).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorderStarten.png | frame | left | Abb. 8: Recorder starten]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Es öffnet sich ein Fenster mit dem Mobile Testing Recorder (Abb. 9). Dieser zeigt einen Screenshot des verbundenen Geräts. Über diese Anzeige können Sie das Gerät fernsteuern. Dabei wird jede Aktion, die Sie ausführen, im Hintergrund aufgezeichnet.&lt;br /&gt;
&lt;br /&gt;
In der oberen Menüleiste können Sie das Werkzeug auswählen (1), mit dem Sie eine Aktion eingeben möchten. Als Voreinstellung ist das Werkzeug &#039;&#039;Auto&#039;&#039; ausgewählt. Sie können damit bestimmte Aktionen aufzeichnen, indem Sie mit dem Mauszeiger entsprechende Gesten auf der Anzeige ausführen. Wenn Sie zum Beispiel mit der linken Maustaste lange klicken, entspricht das einem langen Antippen auf dem Touchscreen des Gerätes. Anstatt die gewünschte Aktion mit der entsprechenden Geste zu bestimmen, können Sie diese alternativ auch manuell auswählen.&lt;br /&gt;
&lt;br /&gt;
Es soll nun ein neuer Test für das Erkennen korrekter GTIN-13-Codes aufgenommen werden. Klicken Sie zunächst in der Anzeige kurz auf den Button &#039;&#039;GTIN-13 (EAN-13)&#039;&#039; (2) der App um einen entsprechenden Klick auf dem Gerät auszulösen. Falls der Recorder danach nicht die aktuelle Ansicht der App darstellen sollte, klicken Sie im Recorder auf das Aktualisierungssymbol (3).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder1iOS.png | frame | left | Abb. 9: Über Recorder zur GTIN-13-Activity wechseln]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Anschließend soll im Eingabefeld der neuen Seite eine korrekte GTIN-13 eingegeben werden. Führen Sie dazu einen Rechtsklick auf dem Eingabefeld (1) aus und wählen Sie im Kontextmenü die Aktion &#039;&#039;Text anhängen&#039;&#039; (2) (Abb. 10). Geben Sie in den sich daraufhin öffnenden Dialog eine beliebige gültige Artikelnummer im GTIN-13-Format ein, bspw. &#039;&#039;4006381333986&#039;&#039; (3). Dieser Text wird nun in der App gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder2iOS.png | frame | left | Abb. 10: GTIN-13-Code über Recorder eingeben]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Klicken Sie nun auf &#039;&#039;Verify&#039;&#039; (1) (Abb. 11). In der App erscheint nun als Ergebnis &#039;&#039;OK&#039;&#039; (2). Der Test soll feststellen, ob tatsächlich dieses Ergebnis angezeigt wird. Nach einem Rechtsklick darauf können Sie im Kontextmenü die Aktion &#039;&#039;Attribut zusichern&#039;&#039; (3) auswählen. Wählen Sie im Dialog, der sich daraufhin öffnet, die Eigenschaft &#039;&#039;value&#039;&#039; (4) aus und bestätigen Sie mit &#039;&#039;OK&#039;&#039; (5). Dieses Mal wird keine Aktion auf dem Gerät ausgelöst, sondern nur ein Baustein aufgezeichnet, der fehlschlägt, sollte das Ergebnis vom erwarteten Wert &#039;&#039;OK&#039;&#039; abweichen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingRecorder3iOS.png | frame | left | Abb. 11: Antwort der App über Recorder auslesen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Schließen Sie nun den Recorder. Im &#039;&#039;Arbeitsbereich&#039;&#039; des GUI-Browsers sehen Sie, dass für jede der aufgenommenen Aktionen ein Baustein angelegt wurde (Abb. 12). Sie können nun testen, ob sich das Aufgenommene wieder abspielen lässt. Dazu müssen Sie zunächst die App auf Ihrem Gerät in den Anfangszustand zurückbringen, indem Sie auf dem Gerät die Schaltfläche &#039;&#039;Home&#039;&#039; oben links benutzen. Klicken Sie dann in expecco auf den grünen Play-Knopf (1). Wird alles grün, war die Ausführung erfolgreich. Erstellen Sie nun daraus einen neuen Baustein in der Testsuite, indem Sie auf das Bausteinsymbol (2) in der rechten oberen Ecke klicken. Geben Sie ihm den Namen &#039;&#039;GTIN_Verify_OK&#039;&#039; (3) und bestätigen Sie (4).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingArbeitsbereich.png | frame | left | Abb. 12: Neuen Baustein aus Arbeitsbereich exportieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Bauen Sie nun die Verbindung ab, indem Sie die Verbindung auswählen, rechtsklicken und im Kontextmenü &#039;&#039;Verbindung abbauen&#039;&#039; auswählen.&lt;br /&gt;
&lt;br /&gt;
Wechseln Sie zurück zum Reiter der Testsuite. Dort wurde der neue Baustein angelegt. Wählen Sie wieder den Testplan &#039;&#039;Demo-Test&#039;&#039; aus und fügen Sie den aufgenommenen Testfall &#039;&#039;GTIN_Verify_OK&#039;&#039; per Drag-and-drop am Ende des Testplans hinzu. Übernehmen Sie die Änderung und starten Sie erneut. Der Testplan sollte wieder ohne Fehler durchlaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: XPath anpassen mithilfe des GUI-Browsers ===&lt;br /&gt;
Ihr neuer Baustein funktioniert auf anderen Geräten möglicherweise nicht. Die verwendeten Elemente werden über einen XPath adressiert und dieser kann auf anderen Geräten nicht stimmen. Lesen Sie dazu den Abschnitt [[#XPath_anpassen_mithilfe_des_GUI-Browsers|XPath anpassen mithilfe des GUI-Browsers]]. Falls Ihnen ein weiteres Gerät zur Verfügung steht, können Sie nun versuchen, die Pfade in Ihren erstellten Bausteinen zu verallgemeinern. Sie können diesen Schritt aber auch überspringen.&lt;br /&gt;
&lt;br /&gt;
Wenn es Ihnen schwerfällt, verkürzte Pfade zu finden, orientieren Sie sich dabei an den Pfaden der bereits vorhandenen Bausteine. Starten Sie den Test erneut. Sollte der Test jetzt fehlschlagen, überprüfen Sie die Pfade noch einmal im GUI-Browser.&lt;br /&gt;
Um den Test nun auf einem zweiten Gerät auszuführen, öffnen Sie im Menü &#039;&#039;Erweiterungen&#039;&#039; &amp;gt; &#039;&#039;Mobile Testing&#039;&#039; &amp;gt; &#039;&#039;Verbindungseinstellungen erstellen&#039;&#039;. Sie erhalten einen Dialog ähnlich zum Verbindungsdialog. Allerdings können Sie hier nur Einstellungen erstellen und speichern aber keine Verbindung herstellen. Sie haben jedoch die Möglichkeit, einzelne Aspekte der Einstellungen zu speichern wie bspw. nur das Gerät. Geben Sie das neue Gerät ein und wählen Sie es aus. Klicken Sie länger auf das Symbol zum Speichern im Anhang bis sich das verzögerte Menü öffnet und wählen Sie hier &#039;&#039;Geräte-Einstellungen speichern&#039;&#039; (Abb. 13). Benennen Sie den Anhang am besten nach dem Gerät. Danach können Sie den Dialog wieder schließen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGerätSpeichern.png | frame | left | Abb. 13: Einstellungen für ein Gerät speichern]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Wählen Sie den Baustein &#039;&#039;Connect&#039;&#039; aus und ziehen Sie die Einstellungen für das neue Gerät in dessen Netzwerk. Verbinden Sie nun dessen Ausgangspin &#039;&#039;pathName&#039;&#039; mit dem Eingangspin &#039;&#039;stringOrFilename[2]&#039;&#039; des Bausteins &#039;&#039;Connect from File&#039;&#039;. Der Baustein Connect from File liest die Angaben an den Eingangspins von oben nach unten ein, mehrfache Eigenschaften werden dabei ersetzt. In diesem Fall werden also die Einstellungen zum verwendeten Gerät ersetzt, während die übrigen Einstellungen gleich bleiben. Wenn Sie die Pfade geschickt gewählt haben, wird der Test nun auch auf dem anderen Gerät erfolgreich ablaufen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Noch einen Baustein erstellen ===&lt;br /&gt;
Falls sich gleiche Abläufe im Test wiederholen, können Sie dafür bereits erstellte Bausteine wieder-verwenden oder abwandeln. Der in Schritt 2 erstellte Baustein prüft die Erkennung korrekter GTIN-13-Codes. Es fehlt noch ein Test, der umgekehrt das Erkennen eines falschen GTIN-13-Codes prüft. Die Struktur der beiden Tests ist identisch, sie unterscheiden sich lediglich in ihren Parametern. Kopieren Sie daher den Baustein &#039;&#039;GTIN_Verify_OK&#039;&#039; und benennen Sie die Kopie in &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039; um. Ändern Sie die Eingabe der GTIN-13 in einen falschen Code zum Beispiel durch Ändern der letzten Ziffer (&#039;&#039;4006381333987&#039;&#039;) und setzen Sie den Überprüfungswert der Ausgabe auf &#039;&#039;NOT OK&#039;&#039; (Abb. 14).&lt;br /&gt;
&lt;br /&gt;
[[Datei:MobileTestingGTIN_Verify_NOT_OK_iOS.png | frame | left | Abb. 14: Baustein editieren]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
Fügen Sie diesen neuen Test ebenfalls zum Testplan Demo-Test hinzu und setzen Sie ihn ans Ende. Führen Sie den Testplan aus, aber vergessen Sie nicht, vorher die Verbindung im GUI-Browser abzubauen.&lt;br /&gt;
&lt;br /&gt;
Der neue Test wird fehlschlagen, weil Ihr aufgenommener Baustein nicht wieder zur Startseite der App zurückkehrt, die Tests aber jeweils von dort aus starten. In den anderen Bausteinen ist dies bereits berücksichtigt; sie führen abschließend immer den Baustein &#039;&#039;Back to main menu&#039;&#039; aus. Sie sehen das, indem Sie einen der anderen Bausteine, z. B. &#039;&#039;GTIN_Calculate&#039;&#039;, auswählen und auf seine Schema-Ansicht wechseln. Dort steht der Baustein &#039;&#039;Back to main menu&#039;&#039; im Feld &#039;&#039;Nach Ausführung&#039;&#039; (Abb. 15). Wie beim entsprechenden Feld beim Testplan wird auch dieser Baustein immer am Ende ausgeführt, unabhängig davon, ob der Test erfolgreich verläuft oder abbricht. Ergänzen Sie diesen Eintrag nun in Ihren Bausteinen &#039;&#039;GTIN_Verify_OK&#039;&#039; und &#039;&#039;GTIN_Verify_NOT_OK&#039;&#039;. Wählen Sie dazu den Baustein aus und ziehen Sie in der Schema-Ansicht den Baustein &#039;&#039;Back to main menu&#039;&#039; einfach auf das Eingabefeld &#039;&#039;Nach Ausführung&#039;&#039;. Nun können Sie den Testplan starten und alle Tests sollten wieder problemlos ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumDemo Nach Ausführung.png | frame | left | Abb. 15: Nach-Ausführungs-Baustein setzen]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: Test vervollständigen ===&lt;br /&gt;
Für die Activity IBAN sind bereits alle Antwortmöglichkeiten der App mit Testfällen abgedeckt. In der GTIN-13-Activity werden ein korrekter und ein fehlerhafter Code getestet und eine Prüfziffer berechnet, das Verhalten der App bei Eingaben falscher Länge wird aber bisher nicht getestet (Bei Verify &#039;&#039;&#039;Input must be exactly 13 digits&#039;&#039;. und &#039;&#039;…12 digits&#039;&#039;. bei Calculate). Die Activity zum Prüfen der Seriennummern von Eurobanknoten wird noch gar nicht getestet. Wie bei der IBAN können hier drei Fälle auftreten: eine korrekte Seriennummer wurde eingegeben (Antwort: &#039;&#039;OK&#039;&#039;), eine falsche Seriennummer wurde eingegeben (Antwort: &#039;&#039;NOT OK&#039;&#039;) oder die Angabe entspricht nicht dem Format (Antwort: &#039;&#039;A serial number consists of 12 characters with the first one or two being capital letters (A-Z).&#039;&#039;). Sie können die Testabdeckung jetzt noch erweitern, indem Sie entsprechende Testfälle erstellen. Die Bausteine dafür können Sie wie in Schritt 2 mit dem Recorder erstellen und die XPaths bei Bedarf verallgemeinern. Wenn Sie mit dem grundsätzlichen Umgang mit expecco vertraut sind, können Sie Bausteine natürlich auch ohne Recorder erstellen, indem Sie sie manuell aus vorhandenen Bausteinen der Bibliothek zusammensetzen. Sie können auch beide Vorgehensweisen nach Belieben kombinieren.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass die hier vorgestellten Testfälle jeweils nur einzelne Eingaben prüfen. Wenn Sie Testfälle für Ihre eigenen Apps schreiben, wollen Sie vermutlich engmaschiger testen, indem Sie noch weitere unterschiedliche Werte eingeben, die insbesondere auch Randfälle enthalten.&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6101</id>
		<title>Appium Plugin Reference en</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6101"/>
		<updated>2016-04-01T08:54:23Z</updated>

		<summary type="html">&lt;p&gt;Ff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Appium is a free open source framework for testing and automation of mobile applications. These tests can be performed either on real mobile devices or on emulated devices. Regarding expecco, both Android and iOS devices are supported. With its Appium plugin expecco offers an interface for executing tests using the Appium framework.&lt;br /&gt;
The first chapter of this document describes the use of the Appium bundle, the Android SDK and the JDK customized by eXept Software. With this compilation you can quickly implement the first tests.&lt;br /&gt;
The first section of the chapter explains how to install the bundle on your operating system. If you have already installed the bundle, you can skip this section.&lt;br /&gt;
Following describes how you can start the individual components of the bundle. To get a quick impression of our Appium implementation, at the end of the chapter a short tutorial describes how you can perform initial tests using the bundles.&lt;br /&gt;
The second chapter is based on an exemplary test setup the Appium plugin and its interaction with the Appium server, and explains testing of mobile applications. The focus is placed on the technologies employed to allow developers a starting point for independent development of modules or to expand the existing function library.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation of the Bundle ==&lt;br /&gt;
 &lt;br /&gt;
To quickly perform your first steps with mobile testing in expecco you can download the Appium Bundle here: https://download.exept.de/transfer/h-expecco-2.8.0/appiumBundleSetup-1.2.exe.&lt;br /&gt;
The download consists of a single installation file. After the download you can start the installation by double-clicking on the file. Then follow the instructions on the screen and choose where to install the bundle. During the installation process the Appium app might start. You may close it as for the test the Appium server will be launched directly.&lt;br /&gt;
&lt;br /&gt;
The PATH environment variable must be extended by the directory in which the adb.exe is located. In order to do this, please search the system control for the environment variables. Double-click on the variable named PATH in order to modify it. If no variable exists with this name, please generate a new one and specify the path of the directory that contains adb.exe, or attach it (separated by a semicolon)to the existing value of the variable. The path usually has the form of &#039;&#039; C: \ Program Files (x86) \ exept \ Appium Bundle \ android-sdk \ platform-tools&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Launching the Appium Server ==&lt;br /&gt;
&lt;br /&gt;
The bundle includes an Appium server that enables communication between expecco and the tester. You can start directly from shortcut on your desktop that was created during installation. Alternatively, you can also start the batch file &amp;quot;start_appium.bat&amp;quot; in the installation directory of the bundle. A window with a console on which the server is running and its log messages are output is openend . The server is ready, when the first log messages appear.&lt;br /&gt;
&lt;br /&gt;
== Connecting a mobile device ==&lt;br /&gt;
&lt;br /&gt;
Before you can control a mobile device with the Appium plugin, you must allow for USB debugging. For Android devices, please see the settings under &#039;&#039; Developer options &#039;&#039; (see https://www.droidwiki.de/USB-Debugging). When a device is connected to the PC via USB, you may have to accept the setup of the connection to the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connection via the Appium connection dialog ==&lt;br /&gt;
&lt;br /&gt;
After lauching the Appium server and a device is connected via USB, you can setup a connection to a mobile application in expecco. Switch to expecco in the GUI browser where you can select &#039;Connect&#039; and then select &#039; &#039;Appium&#039; &#039; from the appearing drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumGUIBrowser.png|border|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thereupon the Appium connection dialog opens (see screenshot), in which you configure the desired parameters for the connection.&lt;br /&gt;
&lt;br /&gt;
First, enter the address of the Appium server in the input box. By default, the Appium server on port &#039;&#039; 4723 &#039;&#039; is started. So enter the following:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://&amp;lt;IP des Appium Hostrechners&amp;gt;:4723/wd/hub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a next step you need to specify the configuration for the connection. For that, the Appium server requires so-called Capabilities.&lt;br /&gt;
&lt;br /&gt;
For tests on Android, it is advisable to use the Android Wizard. The Android Assistant allows you to automatically fill capabilities for any USB-attached devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium GUI AndroidWizard.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Android Wizard &#039; the configuration wizard opens (see screenshot). Using this wizard, you can make the standing on available configurations via drop-down menus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Settings showSystemPackages.png|border|400px|]]&lt;br /&gt;
&lt;br /&gt;
In the top field, please select the device with which you want to connect. In the drop-down menu are all accessible devices. After that the packets on the device are retrieved, this may take a few moments. The packets are divided into external packages and system packages. Your installed applications are among the foreign packages. If havn&#039;t installed any application so far, you can choose the calculator for example, which is already on the device. To do so, select the system packages. In the box below, you can enter a filter to reduce the list of packages. Enter &#039;&#039; Calc &#039;&#039; as a filter and you will find the calculator easier. (Depending on the device, the package is named differently, but still includes &#039;calculator&#039; &#039;)  and select the package, and then in the bottom drop-down menu Activity from this package (z. B.&#039; &#039;. Calculator &#039;&#039;). When you click OK, the capabilities are set according to your choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumSettingsWizard.png| 600px|]]&lt;br /&gt;
&lt;br /&gt;
If you prefer to enter the Capabilities manually, please select the desired capabilities from the bottom left of the dropdown box . To add them to the configuration, click &#039;&#039; Add &#039;&#039;. Then you can enter the appropriate values ​​for each Capabilities in the list. Using &#039;&#039; Remove &#039;&#039; you can delete registered Capabilities from the list.&lt;br /&gt;
&lt;br /&gt;
he following capabilities are necessary for a connection setup:&lt;br /&gt;
&lt;br /&gt;
* PlatformName: Select if you want to automate an Android or an iOS app.&lt;br /&gt;
* UDID: Select here on which device you want to automate the app, for example, &#039;&#039; emulator-5554 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For Android apps the following capabilities are additionally required:&lt;br /&gt;
&lt;br /&gt;
* AppPackage: Please enter the package of the app to be automated, e.g. &#039;&#039; com.apple.calculator &#039;&#039;&lt;br /&gt;
* AppActivity: Please enter the Activity within the package, e.g. &#039;&#039; .Calculator &#039;&#039;&lt;br /&gt;
For iOS apps the following capabilities are additionally required:&lt;br /&gt;
* BundleId: Please enter the bundle ID of the app to be automated, e.g. &#039;&#039;com.apple.calculator &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You will find more information on available capabilities here:&lt;br /&gt;
&lt;br /&gt;
http://appium.io/slate/en/master/?java#appium-server-capabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you have added all the capabilities, you can &#039;&#039; Save &#039;&#039; your settings to a file. Next time, you may import them via &#039;&#039; Load from file &#039;&#039; or use them in your tests.&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Connect &#039;&#039; you start to connect with the specified settings.&lt;br /&gt;
&lt;br /&gt;
== Create tests with the Appium recorder ==&lt;br /&gt;
 &lt;br /&gt;
Once you have setup a connection with a device, you can start the Appium recorder using the recording icon in the GUI browser.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumRecorder.png|1000px|]]&lt;br /&gt;
&lt;br /&gt;
In the menu bar, you can click on &#039;&#039; action &#039;&#039; to select the action you want to execute. The default value is &#039;&#039; touch &#039;&#039;, which triggers a clicking on the selected item. You can now perform an action using the mouse by clicking on the display of the recorder, for example, on a figure of the calculator. You can see that the action on the device is running and the recorder is reloading the current screen contents of the device. In addition, a corresponding block is created in the work space of ​​the GUI browser .&lt;br /&gt;
&lt;br /&gt;
You can choose from the following actions:&lt;br /&gt;
* Actions&lt;br /&gt;
** &#039;&#039; Swipe &#039;&#039;: Swipe across the screen from the position where you press the mouse up to the position where you release it. The duration is also considered.&lt;br /&gt;
** &#039;&#039; Tapping &#039;: Tapping the screen at the cursor position with the same duration as your mouse is pressed (helpful for Long-click).&lt;br /&gt;
** &#039;&#039; Touch element &#039;&#039;: similar to tapping, but for the item at the cursor position.&lt;br /&gt;
** &#039;&#039; Touch &#039;&#039;: short touch of the element at the cursor position (click).&lt;br /&gt;
** &#039;&#039; Zoom &#039;&#039;: not implemented yet.&lt;br /&gt;
** &#039;&#039; Set text &#039;&#039;: after clicking on an item you can enter the text which is to be filled in; this only works for input fields.&lt;br /&gt;
* Test &amp;amp; Verify&lt;br /&gt;
** &#039;&#039; Compare attribute &#039;&#039;: After clicking on an item, you can select one of its attributes. This will create a branch block, which compares the value of the attribute at the time of the tests with the specified value.&lt;br /&gt;
** &#039;&#039; Verify attribute &#039;&#039;: After clicking on an item, you can select one of its attributes. This will create a block that fails when the value of the attribute does not comply with the specified value at the time of the test.&lt;br /&gt;
&lt;br /&gt;
You can also use the four icons on the right-hand side to trigger the keys &#039;&#039; Home &#039;&#039;, &#039;&#039; Previous &#039;&#039; &#039;&#039; menu &#039;&#039; and &#039;&#039; Power &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recording the actions the blocks in the workspace are created linearly. You can also simply change the flow there, for example by using branching blocks or adding additional modules. Using the icon in the upper right corner, you can create the workspace as a new module in your test suite.&lt;br /&gt;
&lt;br /&gt;
To run tests with these devices later on, you need to implement the &#039;&#039; Connect &#039;&#039; block from the Appium library  at the beginning of the test - and at the end a &#039;&#039; Disconnect &#039;&#039; block accordingly. If you want to generate the Capabilities for the &#039;&#039; Connect &#039;&#039; - module you can use the module &#039;&#039; Read from File Capabilities, which is able to read a file created in the connection dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disconnection == &lt;br /&gt;
In order to terminate an existing connection, perform a right-click on the connection entry in the GUI browser and select &#039;&#039; Remove connection &#039;&#039; or &#039;&#039; Disconnect and remove entry &#039;&#039;. In this way, the connection from Appium to the device under test is terminated. Only then, disconnect the device from the PC. You can stop the Appium server by closing the console window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Developer Guide =&lt;br /&gt;
&lt;br /&gt;
== Architecture and Technologies == &lt;br /&gt;
&lt;br /&gt;
The connection to the Appium test framework was implemented via the &#039;Appium Driver&#039;, an advanced version of Selenium WebDriver. This interface is based on HTML and JavaScript and was functionally enhanced so that it can be used as an interface to the Appium server and thus the services can be used for testing mobile applications. These two components communicate via the JSON Wire Protocol.&lt;br /&gt;
Currently, Appium supports testing on iOS and Android systems. Basically, the tests can be written in any programming language. However, when you create the tests you need to define the system on which the application under test is located. The server corresponds with this definition, selects the actions to be executed and sends these commands in a comprehensible form to the devices on the target system. As middleware for Android systems, the Android Debug Bridge is used. For iOS systems, Instruments is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:appium_architekturskizze_mit_konsolenfenster.png | 650px|]]&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6100</id>
		<title>Appium Plugin Reference en</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6100"/>
		<updated>2016-04-01T08:53:05Z</updated>

		<summary type="html">&lt;p&gt;Ff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Appium is a free open source framework for testing and automation of mobile applications. These tests can be performed either on real mobile devices or on emulated devices. Regarding expecco, both Android and iOS devices are supported. With its Appium plugin expecco offers an interface for executing tests using the Appium framework.&lt;br /&gt;
The first chapter of this document describes the use of the Appium bundle, the Android SDK and the JDK customized by eXept Software. With this compilation you can quickly implement the first tests.&lt;br /&gt;
The first section of the chapter explains how to install the bundle on your operating system. If you have already installed the bundle, you can skip this section.&lt;br /&gt;
Following describes how you can start the individual components of the bundle. To get a quick impression of our Appium implementation, at the end of the chapter a short tutorial describes how you can perform initial tests using the bundles.&lt;br /&gt;
The second chapter is based on an exemplary test setup the Appium plugin and its interaction with the Appium server, and explains testing of mobile applications. The focus is placed on the technologies employed to allow developers a starting point for independent development of modules or to expand the existing function library.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation of the Bundle ==&lt;br /&gt;
 &lt;br /&gt;
To quickly perform your first steps with mobile testing in expecco you can download the Appium Bundle here: https://download.exept.de/transfer/h-expecco-2.8.0/appiumBundleSetup-1.2.exe.&lt;br /&gt;
The download consists of a single installation file. After the download you can start the installation by double-clicking on the file. Then follow the instructions on the screen and choose where to install the bundle. During the installation process the Appium app might start. You may close it as for the test the Appium server will be launched directly.&lt;br /&gt;
&lt;br /&gt;
The PATH environment variable must be extended by the directory in which the adb.exe is located. In order to do this, please search the system control for the environment variables. Double-click on the variable named PATH in order to modify it. If no variable exists with this name, please generate a new one and specify the path of the directory that contains adb.exe, or attach it (separated by a semicolon)to the existing value of the variable. The path usually has the form of &#039;&#039; C: \ Program Files (x86) \ exept \ Appium Bundle \ android-sdk \ platform-tools&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launching the Appium Server ==&lt;br /&gt;
&lt;br /&gt;
The bundle includes an Appium server that enables communication between expecco and the tester. You can start directly from shortcut on your desktop that was created during installation. Alternatively, you can also start the batch file &amp;quot;start_appium.bat&amp;quot; in the installation directory of the bundle. A window with a console on which the server is running and its log messages are output is openend . The server is ready, when the first log messages appear.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connecting a mobile device ==&lt;br /&gt;
&lt;br /&gt;
Before you can control a mobile device with the Appium plugin, you must allow for USB debugging. For Android devices, please see the settings under &#039;&#039; Developer options &#039;&#039; (see https://www.droidwiki.de/USB-Debugging). When a device is connected to the PC via USB, you may have to accept the setup of the connection to the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connection via the Appium connection dialog ==&lt;br /&gt;
&lt;br /&gt;
After lauching the Appium server and a device is connected via USB, you can setup a connection to a mobile application in expecco. Switch to expecco in the GUI browser where you can select &#039;Connect&#039; and then select &#039; &#039;Appium&#039; &#039; from the appearing drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumGUIBrowser.png|border|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thereupon the Appium connection dialog opens (see screenshot), in which you configure the desired parameters for the connection.&lt;br /&gt;
&lt;br /&gt;
First, enter the address of the Appium server in the input box. By default, the Appium server on port &#039;&#039; 4723 &#039;&#039; is started. So enter the following:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://&amp;lt;IP des Appium Hostrechners&amp;gt;:4723/wd/hub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a next step you need to specify the configuration for the connection. For that, the Appium server requires so-called Capabilities.&lt;br /&gt;
&lt;br /&gt;
For tests on Android, it is advisable to use the Android Wizard. The Android Assistant allows you to automatically fill capabilities for any USB-attached devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium GUI AndroidWizard.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Android Wizard &#039; the configuration wizard opens (see screenshot). Using this wizard, you can make the standing on available configurations via drop-down menus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Settings showSystemPackages.png|border|400px|]]&lt;br /&gt;
&lt;br /&gt;
In the top field, please select the device with which you want to connect. In the drop-down menu are all accessible devices. After that the packets on the device are retrieved, this may take a few moments. The packets are divided into external packages and system packages. Your installed applications are among the foreign packages. If havn&#039;t installed any application so far, you can choose the calculator for example, which is already on the device. To do so, select the system packages. In the box below, you can enter a filter to reduce the list of packages. Enter &#039;&#039; Calc &#039;&#039; as a filter and you will find the calculator easier. (Depending on the device, the package is named differently, but still includes &#039;calculator&#039; &#039;)  and select the package, and then in the bottom drop-down menu Activity from this package (z. B.&#039; &#039;. Calculator &#039;&#039;). When you click OK, the capabilities are set according to your choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumSettingsWizard.png| 600px|]]&lt;br /&gt;
&lt;br /&gt;
If you prefer to enter the Capabilities manually, please select the desired capabilities from the bottom left of the dropdown box . To add them to the configuration, click &#039;&#039; Add &#039;&#039;. Then you can enter the appropriate values ​​for each Capabilities in the list. Using &#039;&#039; Remove &#039;&#039; you can delete registered Capabilities from the list.&lt;br /&gt;
&lt;br /&gt;
he following capabilities are necessary for a connection setup:&lt;br /&gt;
&lt;br /&gt;
* PlatformName: Select if you want to automate an Android or an iOS app.&lt;br /&gt;
* UDID: Select here on which device you want to automate the app, for example, &#039;&#039; emulator-5554 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For Android apps the following capabilities are additionally required:&lt;br /&gt;
&lt;br /&gt;
* AppPackage: Please enter the package of the app to be automated, e.g. &#039;&#039; com.apple.calculator &#039;&#039;&lt;br /&gt;
* AppActivity: Please enter the Activity within the package, e.g. &#039;&#039; .Calculator &#039;&#039;&lt;br /&gt;
For iOS apps the following capabilities are additionally required:&lt;br /&gt;
* BundleId: Please enter the bundle ID of the app to be automated, e.g. &#039;&#039;com.apple.calculator &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You will find more information on available capabilities here:&lt;br /&gt;
&lt;br /&gt;
http://appium.io/slate/en/master/?java#appium-server-capabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you have added all the capabilities, you can &#039;&#039; Save &#039;&#039; your settings to a file. Next time, you may import them via &#039;&#039; Load from file &#039;&#039; or use them in your tests.&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Connect &#039;&#039; you start to connect with the specified settings.&lt;br /&gt;
&lt;br /&gt;
== Create tests with the Appium recorder ==&lt;br /&gt;
 &lt;br /&gt;
Once you have setup a connection with a device, you can start the Appium recorder using the recording icon in the GUI browser.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumRecorder.png|1000px|]]&lt;br /&gt;
&lt;br /&gt;
In the menu bar, you can click on &#039;&#039; action &#039;&#039; to select the action you want to execute. The default value is &#039;&#039; touch &#039;&#039;, which triggers a clicking on the selected item. You can now perform an action using the mouse by clicking on the display of the recorder, for example, on a figure of the calculator. You can see that the action on the device is running and the recorder is reloading the current screen contents of the device. In addition, a corresponding block is created in the work space of ​​the GUI browser .&lt;br /&gt;
&lt;br /&gt;
You can choose from the following actions:&lt;br /&gt;
* Actions&lt;br /&gt;
** &#039;&#039; Swipe &#039;&#039;: Swipe across the screen from the position where you press the mouse up to the position where you release it. The duration is also considered.&lt;br /&gt;
** &#039;&#039; Tapping &#039;: Tapping the screen at the cursor position with the same duration as your mouse is pressed (helpful for Long-click).&lt;br /&gt;
** &#039;&#039; Touch element &#039;&#039;: similar to tapping, but for the item at the cursor position.&lt;br /&gt;
** &#039;&#039; Touch &#039;&#039;: short touch of the element at the cursor position (click).&lt;br /&gt;
** &#039;&#039; Zoom &#039;&#039;: not implemented yet.&lt;br /&gt;
** &#039;&#039; Set text &#039;&#039;: after clicking on an item you can enter the text which is to be filled in; this only works for input fields.&lt;br /&gt;
* Test &amp;amp; Verify&lt;br /&gt;
** &#039;&#039; Compare attribute &#039;&#039;: After clicking on an item, you can select one of its attributes. This will create a branch block, which compares the value of the attribute at the time of the tests with the specified value.&lt;br /&gt;
** &#039;&#039; Verify attribute &#039;&#039;: After clicking on an item, you can select one of its attributes. This will create a block that fails when the value of the attribute does not comply with the specified value at the time of the test.&lt;br /&gt;
&lt;br /&gt;
You can also use the four icons on the right-hand side to trigger the keys &#039;&#039; Home &#039;&#039;, &#039;&#039; Previous &#039;&#039; &#039;&#039; menu &#039;&#039; and &#039;&#039; Power &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recording the actions the blocks in the workspace are created linearly. You can also simply change the flow there, for example by using branching blocks or adding additional modules. Using the icon in the upper right corner, you can create the workspace as a new module in your test suite.&lt;br /&gt;
&lt;br /&gt;
To run tests with these devices later on, you need to implement the &#039;&#039; Connect &#039;&#039; block from the Appium library  at the beginning of the test - and at the end a &#039;&#039; Disconnect &#039;&#039; block accordingly. If you want to generate the Capabilities for the &#039;&#039; Connect &#039;&#039; - module you can use the module &#039;&#039; Read from File Capabilities, which is able to read a file created in the connection dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disconnection == &lt;br /&gt;
In order to terminate an existing connection, perform a right-click on the connection entry in the GUI browser and select &#039;&#039; Remove connection &#039;&#039; or &#039;&#039; Disconnect and remove entry &#039;&#039;. In this way, the connection from Appium to the device under test is terminated. Only then, disconnect the device from the PC. You can stop the Appium server by closing the console window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Developer Guide =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Architecture and Technologies == &lt;br /&gt;
&lt;br /&gt;
The connection to the Appium test framework was implemented via the &#039;Appium Driver&#039;, an advanced version of Selenium WebDriver. This interface is based on HTML and JavaScript and was functionally enhanced so that it can be used as an interface to the Appium server and thus the services can be used for testing mobile applications. These two components communicate via the JSON Wire Protocol.&lt;br /&gt;
Currently, Appium supports testing on iOS and Android systems. Basically, the tests can be written in any programming language. However, when you create the tests you need to define the system on which the application under test is located. The server corresponds with this definition, selects the actions to be executed and sends these commands in a comprehensible form to the devices on the target system. As middleware for Android systems, the Android Debug Bridge is used. For iOS systems, Instruments is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:appium_architekturskizze_mit_konsolenfenster.png | 650px|]]&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6099</id>
		<title>Appium Plugin Reference en</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6099"/>
		<updated>2016-04-01T08:48:53Z</updated>

		<summary type="html">&lt;p&gt;Ff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Appium is a free open source framework for testing and automation of mobile applications. These tests can be performed either on real mobile devices or on emulated devices. Regarding expecco, both Android and iOS devices are supported. With its Appium plugin expecco offers an interface for executing tests using the Appium framework.&lt;br /&gt;
The first chapter of this document describes the use of the Appium bundle, the Android SDK and the JDK customized by eXept Software. With this compilation you can quickly implement the first tests.&lt;br /&gt;
The first section of the chapter explains how to install the bundle on your operating system. If you have already installed the bundle, you can skip this section.&lt;br /&gt;
Following describes how you can start the individual components of the bundle. To get a quick impression of our Appium implementation, at the end of the chapter a short tutorial describes how you can perform initial tests using the bundles.&lt;br /&gt;
The second chapter is based on an exemplary test setup the Appium plugin and its interaction with the Appium server, and explains testing of mobile applications. The focus is placed on the technologies employed to allow developers a starting point for independent development of modules or to expand the existing function library.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation of the Bundle ==&lt;br /&gt;
 &lt;br /&gt;
To quickly perform your first steps with mobile testing in expecco you can download the Appium Bundle here: https://download.exept.de/transfer/h-expecco-2.8.0/appiumBundleSetup-1.2.exe.&lt;br /&gt;
The download consists of a single installation file. After the download you can start the installation by double-clicking on the file. Then follow the instructions on the screen and choose where to install the bundle. During the installation process the Appium app might start. You may close it as for the test the Appium server will be launched directly.&lt;br /&gt;
&lt;br /&gt;
The PATH environment variable must be extended by the directory in which the adb.exe is located. In order to do this, please search the system control for the environment variables. Double-click on the variable named PATH in order to modify it. If no variable exists with this name, please generate a new one and specify the path of the directory that contains adb.exe, or attach it (separated by a semicolon)to the existing value of the variable. The path usually has the form of &#039;&#039; C: \ Program Files (x86) \ exept \ Appium Bundle \ android-sdk \ platform-tools&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Launching the Appium Server ==&lt;br /&gt;
&lt;br /&gt;
The bundle includes an Appium server that enables communication between expecco and the tester. You can start directly from shortcut on your desktop that was created during installation. Alternatively, you can also start the batch file &amp;quot;start_appium.bat&amp;quot; in the installation directory of the bundle. A window with a console on which the server is running and its log messages are output is openend . The server is ready, when the first log messages appear.&lt;br /&gt;
&lt;br /&gt;
== Connecting a mobile device ==&lt;br /&gt;
&lt;br /&gt;
Before you can control a mobile device with the Appium plugin, you must allow for USB debugging. For Android devices, please see the settings under &#039;&#039; Developer options &#039;&#039; (see https://www.droidwiki.de/USB-Debugging). When a device is connected to the PC via USB, you may have to accept the setup of the connection to the device.&lt;br /&gt;
&lt;br /&gt;
== Connection via the Appium connection dialog ==&lt;br /&gt;
&lt;br /&gt;
After lauching the Appium server and a device is connected via USB, you can setup a connection to a mobile application in expecco. Switch to expecco in the GUI browser where you can select &#039;Connect&#039; and then select &#039; &#039;Appium&#039; &#039; from the appearing drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumGUIBrowser.png|border|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thereupon the Appium connection dialog opens (see screenshot), in which you configure the desired parameters for the connection.&lt;br /&gt;
&lt;br /&gt;
First, enter the address of the Appium server in the input box. By default, the Appium server on port &#039;&#039; 4723 &#039;&#039; is started. So enter the following:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://&amp;lt;IP des Appium Hostrechners&amp;gt;:4723/wd/hub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a next step you need to specify the configuration for the connection. For that, the Appium server requires so-called Capabilities.&lt;br /&gt;
&lt;br /&gt;
For tests on Android, it is advisable to use the Android Wizard. The Android Assistant allows you to automatically fill capabilities for any USB-attached devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium GUI AndroidWizard.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Android Wizard &#039; the configuration wizard opens (see screenshot). Using this wizard, you can make the standing on available configurations via drop-down menus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Settings showSystemPackages.png|border|400px|]]&lt;br /&gt;
&lt;br /&gt;
In the top field, please select the device with which you want to connect. In the drop-down menu are all accessible devices. After that the packets on the device are retrieved, this may take a few moments. The packets are divided into external packages and system packages. Your installed applications are among the foreign packages. If havn&#039;t installed any application so far, you can choose the calculator for example, which is already on the device. To do so, select the system packages. In the box below, you can enter a filter to reduce the list of packages. Enter &#039;&#039; Calc &#039;&#039; as a filter and you will find the calculator easier. (Depending on the device, the package is named differently, but still includes &#039;calculator&#039; &#039;)  and select the package, and then in the bottom drop-down menu Activity from this package (z. B.&#039; &#039;. Calculator &#039;&#039;). When you click OK, the capabilities are set according to your choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumSettingsWizard.png| 600px|]]&lt;br /&gt;
&lt;br /&gt;
If you prefer to enter the Capabilities manually, please select the desired capabilities from the bottom left of the dropdown box . To add them to the configuration, click &#039;&#039; Add &#039;&#039;. Then you can enter the appropriate values ​​for each Capabilities in the list. Using &#039;&#039; Remove &#039;&#039; you can delete registered Capabilities from the list.&lt;br /&gt;
&lt;br /&gt;
he following capabilities are necessary for a connection setup:&lt;br /&gt;
&lt;br /&gt;
* PlatformName: Select if you want to automate an Android or an iOS app.&lt;br /&gt;
* UDID: Select here on which device you want to automate the app, for example, &#039;&#039; emulator-5554 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For Android apps the following capabilities are additionally required:&lt;br /&gt;
&lt;br /&gt;
* AppPackage: Please enter the package of the app to be automated, e.g. &#039;&#039; com.apple.calculator &#039;&#039;&lt;br /&gt;
* AppActivity: Please enter the Activity within the package, e.g. &#039;&#039; .Calculator &#039;&#039;&lt;br /&gt;
For iOS apps the following capabilities are additionally required:&lt;br /&gt;
* BundleId: Please enter the bundle ID of the app to be automated, e.g. &#039;&#039;com.apple.calculator &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You will find more information on available capabilities here:&lt;br /&gt;
&lt;br /&gt;
http://appium.io/slate/en/master/?java#appium-server-capabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you have added all the capabilities, you can &#039;&#039; Save &#039;&#039; your settings to a file. Next time, you may import them via &#039;&#039; Load from file &#039;&#039; or use them in your tests.&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Connect &#039;&#039; you start to connect with the specified settings.&lt;br /&gt;
&lt;br /&gt;
== Create tests with the Appium recorder ==&lt;br /&gt;
 &lt;br /&gt;
Once you have setup a connection with a device, you can start the Appium recorder using the recording icon in the GUI browser.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumRecorder.png|1000px|]]&lt;br /&gt;
&lt;br /&gt;
In the menu bar, you can click on &#039;&#039; action &#039;&#039; to select the action you want to execute. The default value is &#039;&#039; touch &#039;&#039;, which triggers a clicking on the selected item. You can now perform an action using the mouse by clicking on the display of the recorder, for example, on a figure of the calculator. You can see that the action on the device is running and the recorder is reloading the current screen contents of the device. In addition, a corresponding block is created in the work space of ​​the GUI browser .&lt;br /&gt;
&lt;br /&gt;
You can choose from the following actions:&lt;br /&gt;
* Actions&lt;br /&gt;
** &#039;&#039; Swipe &#039;&#039;: Swipe across the screen from the position where you press the mouse up to the position where you release it. The duration is also considered.&lt;br /&gt;
** &#039;&#039; Tapping &#039;: Tapping the screen at the cursor position with the same duration as your mouse is pressed (helpful for Long-click).&lt;br /&gt;
** &#039;&#039; Touch element &#039;&#039;: similar to tapping, but for the item at the cursor position.&lt;br /&gt;
** &#039;&#039; Touch &#039;&#039;: short touch of the element at the cursor position (click).&lt;br /&gt;
** &#039;&#039; Zoom &#039;&#039;: not implemented yet.&lt;br /&gt;
** &#039;&#039; Set text &#039;&#039;: after clicking on an item you can enter the text which is to be filled in; this only works for input fields.&lt;br /&gt;
* Test &amp;amp; Verify&lt;br /&gt;
** &#039;&#039; Compare attribute &#039;&#039;: After clicking on an item, you can select one of its attributes. This will create a branch block, which compares the value of the attribute at the time of the tests with the specified value.&lt;br /&gt;
** &#039;&#039; Verify attribute &#039;&#039;: After clicking on an item, you can select one of its attributes. This will create a block that fails when the value of the attribute does not comply with the specified value at the time of the test.&lt;br /&gt;
&lt;br /&gt;
You can also use the four icons on the right-hand side to trigger the keys &#039;&#039; Home &#039;&#039;, &#039;&#039; Previous &#039;&#039; &#039;&#039; menu &#039;&#039; and &#039;&#039; Power &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recording the actions the blocks in the workspace are created linearly. You can also simply change the flow there, for example by using branching blocks or adding additional modules. Using the icon in the upper right corner, you can create the workspace as a new module in your test suite.&lt;br /&gt;
&lt;br /&gt;
To run tests with these devices later on, you need to implement the &#039;&#039; Connect &#039;&#039; block from the Appium library  at the beginning of the test - and at the end a &#039;&#039; Disconnect &#039;&#039; block accordingly. If you want to generate the Capabilities for the &#039;&#039; Connect &#039;&#039; - module you can use the module &#039;&#039; Read from File Capabilities, which is able to read a file created in the connection dialog.&lt;br /&gt;
&lt;br /&gt;
== Disconnection == &lt;br /&gt;
In order to terminate an existing connection, perform a right-click on the connection entry in the GUI browser and select &#039;&#039; Remove connection &#039;&#039; or &#039;&#039; Disconnect and remove entry &#039;&#039;. In this way, the connection from Appium to the device under test is terminated. Only then, disconnect the device from the PC. You can stop the Appium server by closing the console window.&lt;br /&gt;
&lt;br /&gt;
= Developer Guide =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Architecture and Technologies == &lt;br /&gt;
&lt;br /&gt;
The connection to the Appium test framework was implemented via the &#039;Appium Driver&#039;, an advanced version of Selenium WebDriver. This interface is based on HTML and JavaScript and was functionally enhanced so that it can be used as an interface to the Appium server and thus the services can be used for testing mobile applications. These two components communicate via the JSON Wire Protocol.&lt;br /&gt;
Currently, Appium supports testing on iOS and Android systems. Basically, the tests can be written in any programming language. However, when you create the tests you need to define the system on which the application under test is located. The server corresponds with this definition, selects the actions to be executed and sends these commands in a comprehensible form to the devices on the target system. As middleware for Android systems, the Android Debug Bridge is used. For iOS systems, Instruments is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:appium_architekturskizze_mit_konsolenfenster.png | 650px|]]&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6093</id>
		<title>Appium Plugin Reference en</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Appium_Plugin_Reference_en&amp;diff=6093"/>
		<updated>2016-03-31T17:35:53Z</updated>

		<summary type="html">&lt;p&gt;Ff: Die Seite wurde neu angelegt: „= Introduction =  Appium is a free open source framework for testing and automation of mobile applications. These tests can be performed either on real mobile …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Appium is a free open source framework for testing and automation of mobile applications. These tests can be performed either on real mobile devices or on emulated devices. Regarding expecco, both Android and iOS devices are supported. With its Appium plugin expecco offers an interface for executing tests using the Appium framework.&lt;br /&gt;
The first chapter of this document describes the use of the Appium bundle, the Android SDK and the JDK customized by eXept Software. With this compilation you can quickly implement the first tests.&lt;br /&gt;
The first section of the chapter explains how to install the bundle on your operating system. If you have already installed the bundle, you can skip this section.&lt;br /&gt;
Following describes how you can start the individual components of the bundle. To get a quick impression of our Appium implementation, at the end of the chapter a short tutorial describes how you can perform initial tests using the bundles.&lt;br /&gt;
The second chapter is based on an exemplary test setup the Appium plugin and its interaction with the Appium server, and explains testing of mobile applications. The focus is placed on the technologies employed to allow developers a starting point for independent development of modules or to expand the existing function library.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation of the Bundle ==&lt;br /&gt;
 &lt;br /&gt;
To quickly perform your first steps with mobile testing in expecco you can download the Appium Bundle here: https://download.exept.de/transfer/h-expecco-2.8.0/appiumBundleSetup-1.2.exe.&lt;br /&gt;
The download consists of a single installation file. After the download you can start the installation by double-clicking on the file. Then follow the instructions on the screen and choose where to install the bundle. During the installation process the Appium app might start. You may close it as for the test the Appium server will be launched directly.&lt;br /&gt;
&lt;br /&gt;
The PATH environment variable must be extended by the directory in which the adb.exe is located. In order to do this, please search the system control for the environment variables. Double-click on the variable named PATH in order to modify it. If no variable exists with this name, please generate a new one and specify the path of the directory that contains adb.exe, or attach it (separated by a semicolon)to the existing value of the variable. The path usually has the form of &#039;&#039; C: \ Program Files (x86) \ exept \ Appium Bundle \ android-sdk \ platform-tools&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Launching the Appium Server ==&lt;br /&gt;
&lt;br /&gt;
The bundle includes an Appium server that enables communication between expecco and the tester. You can start directly from shortcut on your desktop that was created during installation. Alternatively, you can also start the batch file &amp;quot;start_appium.bat&amp;quot; in the installation directory of the bundle. A window with a console on which the server is running and its log messages are output is openend . The server is ready, when the first log messages appear.&lt;br /&gt;
&lt;br /&gt;
== Connecting a mobile device ==&lt;br /&gt;
&lt;br /&gt;
Before you can control a mobile device with the Appium plugin, you must allow for USB debugging. For Android devices, please see the settings under &#039;&#039; Developer options &#039;&#039; (see https://www.droidwiki.de/USB-Debugging). When a device is connected to the PC via USB, you may have to accept the setup of the connection to the device.&lt;br /&gt;
&lt;br /&gt;
== Connection via the Appium connection dialog ==&lt;br /&gt;
&lt;br /&gt;
After lauching the Appium server and a device is connected via USB, you can setup a connection to a mobile application in expecco. Switch to expecco in the GUI browser where you can select &#039;Connect&#039; and then select &#039; &#039;Appium&#039; &#039; from the appearing drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumGUIBrowser.png|border|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thereupon the Appium connection dialog opens (see screenshot), in which you configure the desired parameters for the connection.&lt;br /&gt;
&lt;br /&gt;
First, enter the address of the Appium server in the input box. By default, the Appium server on port &#039;&#039; 4723 &#039;&#039; is started. So enter the following:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://&amp;lt;IP des Appium Hostrechners&amp;gt;:4723/wd/hub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a next step you need to specify the configuration for the connection. For that, the Appium server requires so-called Capabilities.&lt;br /&gt;
&lt;br /&gt;
For tests on Android, it is advisable to use the Android Wizard. The Android Assistant allows you to automatically fill capabilities for any USB-attached devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium GUI AndroidWizard.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By clicking on &#039;&#039; Android Wizard &#039; the configuration wizard opens (see screenshot). Using this wizard, you can make the standing on available configurations via drop-down menus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Settings showSystemPackages.png|border|400px|]]&lt;br /&gt;
&lt;br /&gt;
In the top field, please select the device with which you want to connect. In the drop-down menu are all accessible devices. After that the packets on the device are retrieved, this may take a few moments. The packets are divided into external packages and system packages. Your installed applications are among the foreign packages. If havn&#039;t installed any application so far, you can choose the calculator for example, which is already on the device. To do so, select the system packages. In the box below, you can enter a filter to reduce the list of packages. Enter &#039;&#039; Calc &#039;&#039; as a filter and you will find the calculator easier. (Depending on the device, the package is named differently, but still includes &#039;calculator&#039; &#039;)  and select the package, and then in the bottom drop-down menu Activity from this package (z. B.&#039; &#039;. Calculator &#039;&#039;). When you click OK, the capabilities are set according to your choice.&lt;br /&gt;
&lt;br /&gt;
Wählen Sie im obersten Feld das Gerät aus, mit dem Sie sich verbinden wollen. In der Liste des Dropdown-Menüs finden Sie alle erreichbaren Geräte. Daraufhin werden die auf dem Gerät vorhandenen Pakete abgerufen, dies kann einen Moment dauern. Die Pakete werden in Fremdpakete und Systempakete unterteilt. Von Ihnen installierte Anwendungen befinden sich unter den Fremdpaketen. Haben Sie noch keine Anwendung installiert, können Sie beispielsweise auch den Taschenrechner auswählen, der sich bereits auf dem Gerät befindet. Wählen Sie dazu die Systempakete aus. Im Eingabefeld darunter können Sie einen Filter eingeben, um die Liste der Pakete zu verkleinern. Geben Sie &#039;&#039;Calc&#039;&#039; als Filter ein und Sie finden Ihren Taschenrechner einfacher. (Das Paket heißt je nach Gerät verschieden, hat aber &#039;&#039;calculator&#039;&#039; im Namen.) Wählen Sie im Dropdown-Menü das gewünschte Paket aus und anschließend im untersten Dropdown-Menü eine Activity aus diesem Paket (z. B. &#039;&#039;.Calculator&#039;&#039;). Durch Klicken auf OK werden die Capabilities entsprechend Ihrer Auswahl gesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumSettingsWizard.png| 600px|]]&lt;br /&gt;
&lt;br /&gt;
Um die Capabilities manuell einzutragen, wählen Sie links unten aus der Dropdownbox die gewünschten Capabilities aus. Um sie der Konfiguration hinzuzufügen, klicken Sie auf &#039;&#039;Hinzufügen&#039;&#039;. Danach können Sie in der Liste im Dialog die entsprechenden Werte für die einzelnen Capabilities eingeben. Mit &#039;&#039;Entfernen&#039;&#039; können Sie eingetragene Capabilities wieder aus der Liste löschen.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Capabilities sind für einen Verbindungsaufbau notwendig:&lt;br /&gt;
&lt;br /&gt;
* plattformName Wählen Sie hier aus, ob Sie eine Android-App oder eine iOS-App automatisieren wollen.&lt;br /&gt;
* udid Wählen Sie hier aus, auf welchem Gerät Sie die App automatisieren wollen, z.B. &#039;&#039;emulator-5554&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Für Android-Apps sind folgende Capabilities zusätzlich notwendig:&lt;br /&gt;
&lt;br /&gt;
* appPackage Geben Sie hier das Package der zu automatisierenden App an, z.B. &#039;&#039;com.apple.calculator&#039;&#039;&lt;br /&gt;
* appActivity Geben Sie hier die Activity innerhalb des Packages an, &#039;&#039;.Calculator&#039;&#039;&lt;br /&gt;
Für iOS-Apps sind folgende Capabilities zusätzlich notwendig:&lt;br /&gt;
* bundleId Geben Sie hier die Bundle-ID der zu automatisierenden App an, z.B. &#039;&#039;com.apple.calculator&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zu verfügbaren Capabilities finden Sie unter:&lt;br /&gt;
&lt;br /&gt;
http://appium.io/slate/en/master/?java#appium-server-capabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nachdem Sie alle gewünschten Capabilities hinzugefügt haben, können Sie mit &#039;&#039;Speichern&#039;&#039; Ihre Einstellungen in einer Datei speichern. Diese können Sie dann beim nächsten Mal über &#039;&#039;Laden aus Datei&#039;&#039; einlesen oder auch in den Tests verwenden.&lt;br /&gt;
&lt;br /&gt;
Mit einem Klick auf &#039;&#039;Verbinden&#039;&#039; starten Sie den Verbindungsaufbau mit den angegebenen Einstellungen.&lt;br /&gt;
&lt;br /&gt;
== Tests mit dem Appium-Recorder erstellen ==&lt;br /&gt;
 &lt;br /&gt;
Nachdem Sie die Verbindung zu einem Gerät hergestellt haben, können Sie im GUI-Browser den Appium-Recorder über das Aufnahme-Symbol starten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumRecorder.png|1000px|]]&lt;br /&gt;
&lt;br /&gt;
In der Menüleiste können Sie bei &#039;&#039;Aktion&#039;&#039; auswählen, welche Aktion Sie ausführen wollen. Voreingestellt ist &#039;&#039;Berühren&#039;&#039;, was ein Anklicken des ausgewählten Elements erzeugt. Sie können nun mit der Maus eine Aktion auslösen, indem Sie in der Anzeige des Recorders beispielsweise auf eine Ziffer des Taschenrechners klicken. Sie sehen, dass die Aktion auf dem Gerät ausgeführt wird und der Recorder den aktuellen Bildschirminhalt des Geräts nachlädt. Außerdem wird im Arbeitsbereich des GUI-Browsers ein entsprechender Baustein erzeugt.&lt;br /&gt;
&lt;br /&gt;
Sie können aus folgenden Aktionen wählen:&lt;br /&gt;
* Aktionen&lt;br /&gt;
** &#039;&#039;Wischen&#039;&#039;: Wischen über den Bildschirm von der Position, an der Sie die Maus drücken, bis zu der Position, an der Sie sie wieder loslassen. Die Dauer wird ebenfalls berücksichtigt&lt;br /&gt;
** &#039;&#039;Antippen&#039;&#039;: Antippen des Bildschirms an der Cursorposition mit der selben Dauer wie Sie Ihre Maus gedrückt halten (hilfreich für Long-Clicks)&lt;br /&gt;
** &#039;&#039;Element antippen&#039;&#039;: wie Antippen, aber für das Element an der Cursorposition&lt;br /&gt;
** &#039;&#039;Berühren&#039;&#039;: kurzes Berühren des Elements an der Cursorposition (Click)&lt;br /&gt;
** &#039;&#039;Zoom&#039;&#039;: noch nicht implementiert&lt;br /&gt;
** &#039;&#039;Text setzen&#039;&#039;: nach dem Klicken auf ein Element können Sie den Text eingeben, mit dem dieses befüllt werden soll; funktioniert nur für Eingabefelder&lt;br /&gt;
* Test &amp;amp; Verify&lt;br /&gt;
** &#039;&#039;Attribut vergleichen&#039;&#039;: Nach dem Klicken auf ein Element können Sie eines seiner Attribute auswählen. Es wird ein Verzweigungsbaustein erstellt, der den Wert des Attributs zum Zeitpunkt des Tests mit dem angegebenen Wert vergleicht.&lt;br /&gt;
** &#039;&#039;Attribut verifizieren&#039;&#039;: Nach dem Klicken auf ein Element können Sie eines seiner Attribute auswählen. Es wird ein Baustein erstellt, der fehlschlägt, wenn der Wert des Attributs zum Zeitpunkt des Tests mit dem angegebenen Wert nicht übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
Außerdem können Sie mit den vier Icons an der rechten Seite die Tasten &#039;&#039;Home&#039;&#039;, &#039;&#039;Zurück&#039;&#039; &#039;&#039;Menü&#039;&#039; und &#039;&#039;Power&#039;&#039; auslösen.&lt;br /&gt;
&lt;br /&gt;
Beim Aufnehmen der Aktionen werden die Bausteine im Arbeitsbereich lediglich linear angelegt. Sie können den Ablauf dort aber auch einfach ändern, zum Beispiel wenn Sie Verzweigungsbausteine verwenden oder zusätzliche Bausteine einfügen wollen. Über das Icon in der rechten oberen Ecke können Sie den Arbeitsbereich als neuen Baustein in Ihrer Testsuite anlegen.&lt;br /&gt;
&lt;br /&gt;
Um später Tests mit diesen Bausteinen ausführen zu können, müssen Sie am Anfang des Tests den &#039;&#039;Connect&#039;&#039;-Baustein aus der Appium-Library einbauen und am Ende entsprechend ein &#039;&#039;Disconnect&#039;&#039;. Zur Erzeugung der Capabilities für den &#039;&#039;Connect&#039;&#039;-Baustein können Sie den Baustein &#039;&#039;Read Capabilities from File&#039;&#039; verwenden, der eine im Verbindungsdialog erstellte Datei einlesen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verbindungsabbau ==&lt;br /&gt;
Um eine bestehende Verbindung abzubauen, führen Sie einen Rechtsklick auf den Verbindungseintrag im GUI-Browser aus und wählen Sie &#039;&#039;Verbindung abbauen&#039;&#039; oder &#039;&#039;Verbindung abbauen und Eintrag entfernen&#039;&#039; aus. Dadurch wird die Verbindung von Appium zum Testgerät abgebaut. Trennen Sie erst anschließend das Gerät vom PC. Den Appium-Server können Sie stoppen, indem Sie das Konsolenfenster schließen.&lt;br /&gt;
&lt;br /&gt;
= Entwicklerguide =&lt;br /&gt;
&lt;br /&gt;
== Architektur und Technologien ==&lt;br /&gt;
&lt;br /&gt;
Die Anbindung an das Appium Testframework wurde über den &#039;Appium Driver&#039;, einer Weiterentwicklung des Selenium WebDriver, umgesetzt. Das auf HTML und JavaScript basierende Interface wurde funktional so erweitert, dass es als Schnittstelle zum Appium Server verwendet werden kann und dadurch dessen Dienste zum Testen von mobilen Anwendungen genutzt werden können. Diese beiden Komponenten kommunizieren über das JSON Wire Protokoll miteinander.&lt;br /&gt;
Zur Zeit unterstützt Appium das Testen auf iOS und Android Systemen. Grundsätzlich können die Test in diversen Programmiersprachen geschrieben werden. Jedoch muss beim Erstellen der Tests definiert werden, auf welchem System sich die zu testende Anwendung befindet. An dieser Definition orientiert sich der Server, sucht sich die auszuführenden Aktionen heraus und sendet diese Befehle in einer dem Zielsystem verständlichen Form an die Endgeräte. Als Middleware für Android-Systeme wird die Android Debug Bridge genutzt. Für iOS-Systeme hingegen wird Instruments verwendet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:appium_architekturskizze_mit_konsolenfenster.png | 650px|]]&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Appium_Plugin_Reference&amp;diff=5966</id>
		<title>Appium Plugin Reference</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Appium_Plugin_Reference&amp;diff=5966"/>
		<updated>2016-02-05T12:59:07Z</updated>

		<summary type="html">&lt;p&gt;Ff: /* Installation des Bundles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
Appium ist ein freies Open Source Framework zum Testen und Automatisieren von mobilen Anwendungen. Diese Tests können entweder auf realen mobilen Endgeräten, oder auf emulierten / simulierten Geräten durchgeführt werden. Hierbei werden sowohl Android- als auch iOS-Geräte unterstützt. expecco bietet mit seinem Appium Plugin eine Schnittstelle zur Ausführung von Tests mithilfe von Appium an.&lt;br /&gt;
Das erste Kapitel dieser Dokumentation beschreibt die Verwendung des Appium Bundles, einer von eXept erstellten Zusammenstellung von Appium, dem Android SDK und des JDK. Mit dieser können Sie schnell erste Tests umsetzen. &lt;br /&gt;
Der erste Abschnitt des Kapitels erläutert die Installation des Bundles auf Ihrem Betriebssystem. Sollten Sie das Bundle bereits installiert haben, so können Sie diesen Abschnitt überspringen. &lt;br /&gt;
Im Anschluss wird beschrieben, wie Sie die einzelnen Komponenten des Bundles starten können. Um einen praktischen Eindruck von unserer Appium Implementierung zu bekommen, wird zum Ende des Kapitels ein kurzes Tutorial beschrieben, wie Sie erste Tests mithilfe des Bundles ausführen können.&lt;br /&gt;
Im zweiten Kapitel soll anhand eines beispielhaften Testaufbaus das Appium Plugin und dessen Interaktion mit dem Appium Server, zum Testen von mobilen Anwendungen, näher erläutert werden. Hierbei wird der Fokus auf die dazu verwendeten Technologien gesetzt um Entwicklern einen Ansatzpunkt zum selbständigen entwickeln von Bausteinen oder zur Erweiterung der bestehenden Funktionsbibliothek zu ermöglichen.  &lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation des Bundles ==&lt;br /&gt;
 &lt;br /&gt;
Um schnell Ihre ersten Schritte mit dem mobilen Testen in expecco durchzuführen, können Sie unter folgender Adresse das Appium Bundle herunterladen: [here be link].&lt;br /&gt;
Der Download besteht aus einer einzelnen Installationsdatei. Nachdem Sie diese heruntergeladen haben, können Sie die Installation mit einem Doppelklick auf die Datei starten. Folgen Sie dann den Anweisungen des Installationsprogramms und wählen Sie einen Installationsort für das Bundle aus. Während des Installationsvorgangs wird unter Umstände die Appium App gestartet. Diese können Sie wieder schließen, da der Appium Server für den Test später direkt gestartet wird.( Nach erfolgreicher Installation können Sie, wie im nächsten Abschnitt beschrieben, Ihren ersten Test ausführen.)&lt;br /&gt;
&lt;br /&gt;
== Appium Server und Android Emulator starten ==&lt;br /&gt;
 &lt;br /&gt;
Die beiden Hauptkomponenten des Bundles sind zum einen der Android Emulator, auf dem die Test ausgeführt werden, sowie der Appium Server, welcher die Kommunikation zwischen expecco und dem Emulator ermöglicht. Sie können diese beiden Komponenten direkt über die beiden Shortcuts auf dem Desktop starten, die während der Installation angelegt wurden. Alternativ können Sie auch die beiden Batchdateien &amp;quot;start_appium.bat&amp;quot; und &amp;quot;start_emulator_arm.bat&amp;quot; (für n-Emulatoren n-mal die Batch-Datei &amp;quot;start_emulator_arm.bat&amp;quot; ausführen) im Installationsverzeichnis des Bundles starten. Der Emulator benötigt in der Regel einige Minuten zum Hochfahren.&lt;br /&gt;
Beim ersten Start zeigt der Emulator ein kurzes Tutorial an, welches durchgearbeitet werden muss, bevor mit dem Testen begonnen werden kann. Klicken Sie zunächst, wie auf dem Bildschirm angezeigt, auf den Launcher-Icon unten in der Mitte. Nachdem der Launcher sich geöffnet hat, wird auf dem Bildschirm die Anweisung angezeigt, die Kamera-App zu starten. Klicken Sie stattdessen einfach auf den blauen OK-Button rechts unten. Der Emulator wird speichern, dass Sie das Tutorial bereits durchgearbeitet haben und es in Zukunft nicht mehr anzeigen. &lt;br /&gt;
 &lt;br /&gt;
== Verbindungsaufbau über den Appium Verbindungsdialog ==&lt;br /&gt;
&lt;br /&gt;
Um über den Appium-Server eine Verbindung zu einer mobilen Anwendung aufzubauen, wechseln Sie zunächst in expecco in den GUI-Browser. Dort können Sie auf der linken Seite &amp;quot;Verbinden&amp;quot; auswählen und dann im erscheinenden Dropdownmenü &amp;quot;Appium&amp;quot; auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumGUIBrowser.png|border|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daraufhin öffnet sich der Appium Verbindungsdialog (siehe Screenshot) in dem Sie die gewünschten Parameter für die Verbindung konfigurieren. Wenn Sie das Appium Bundle verwenden, dann können Sie durch einen Klick auf &amp;quot;Emulator Settings&amp;quot; rechts oben den Dialog automatisch mit den korrekten Einstellungen befüllen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Emulator Settings.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit einem Klick auf &amp;quot;Connect&amp;quot; wird dann die Verbindung zum Gerät und der zu steuernden Anwendung aufgebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich empfiehlt es sich aber den &amp;quot;Android-Wizard&amp;quot; zu verwenden. Der &amp;quot;Android-Wizard&amp;quot; ermöglicht es Ihnen den Verbindungdialog individuell zu konfigurieren. Individuell konfigurieren soll heissen, dass man eine Verbindung zu einem beliebigen aber auch angeschlossenen Gerät konfigurieren und aufbauen kann.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium GUI AndroidWizard.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch klicken auf &amp;quot;Android Wizard&amp;quot; öffnet sich der Einrichtungsassisten (siehe screenshot). Mit Hilfe dieses Assistenten können Sie über Dropdown-Menüs die zu Verfügung stehenden konfigurationen vornehmen. Für das Beispiel gehen Sie wie folgt vor.&lt;br /&gt;
Wählen Sie zunächst den in unserem Beispiel verwendeten Emulator aus(&amp;quot;emulator-5554&amp;quot;). Anschließend das verwendete &amp;quot;appPackage&amp;quot; (&amp;quot;com.android.calculator2&amp;quot;). Zum Schluss müssen Sie noch die &amp;quot;appActivity&amp;quot; selektieren. Diese finden Sie unter den &amp;quot;system packages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Settings showSystemPackages.png|border|400px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch aktivieren des &amp;quot;Show system packages&amp;quot; Feld, wird Ihnen im Dropdown-Menü die in unserem Beispiel verwendete Anwendung angezeigt. Bitte wählen Sie &amp;quot;.Calculator&amp;quot; aus. Durch klicken auf &amp;quot;OK&amp;quot; werden die Einstellungen übernommen und in Verbindungsdialog automatisch übertragen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumSettingsWizard.png| 600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geben Sie zunächst die Adresse des Appium Server in das Eingabefeld ein. Standardmäßig wird der Appium Server auf Port &#039;&#039;4723&#039;&#039; gestartet. Geben Sie also folgendes ein:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://&amp;lt;IP des Appium Hostrechners&amp;gt;:4723/wd/hub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes müssen Sie die Konfiguration für die Verbindung angeben. &lt;br /&gt;
Um den Dialog zu befüllen, wählen Sie links unten aus der Dropdownbox die gewünschten sogenannten Capabilities aus. Um sie der Konfiguration hinzuzufügen, klicken Sie auf &#039;&#039;Entfernen&#039;&#039;. Danach können Sie in der Liste im Dialog die entsprechenden Werte für die einzelnen Capabilities eingeben.&lt;br /&gt;
Die folgenden Capabilities sind für einen Verbindungsaufbau notwendig:&lt;br /&gt;
&lt;br /&gt;
* plattformName Wählen Sie hier aus, ob Sie eine Android-App oder eine iOS-App automatisieren wollen.&lt;br /&gt;
* udid Wählen Sie hier aus, auf welchem Gerät Sie die App automatisieren wollen, z.B. &#039;&#039;emulator-5554&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Für Android-Apps sind folgende Capabilities zusätzlich notwendig:&lt;br /&gt;
&lt;br /&gt;
* appPackage Geben Sie hier das Package der zu automatisierenden App an, z.B. &#039;&#039;com.apple.calculator&#039;&#039;&lt;br /&gt;
* appActivity Geben Sie hier die Activity innerhalb des Packages an, &amp;quot;.Calculator&amp;quot;&lt;br /&gt;
Für iOS-Apps sind folgende Capabilities zusätzlich notwendig:&lt;br /&gt;
* bundleId Geben Sie hier die Bundle-ID der zu automatisierenden App an, z.B. &amp;quot;com.apple.calculator&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nachdem Sie alle gewünschten Capabilities hinzugefügt haben, können Sie mit einem Klick auf &#039;&#039;Verbinden&#039;&#039; den Verbindungsaufbau starten.&lt;br /&gt;
Weitere Informationen zu verfügbaren Capabilities finden Sie unter:&lt;br /&gt;
&lt;br /&gt;
http://appium.io/slate/en/master/?java#appium-server-capabilities&lt;br /&gt;
&lt;br /&gt;
== Ersten Test ausführen ==&lt;br /&gt;
 &lt;br /&gt;
Um einen ersten Einblick ins Testen mobiler Anwendungen mit expecco zu bekommen, können Sie nun einen der Beispieltests ausführen. Starten Sie zunächst expecco über die entsprechende Verknüpfung auf dem Desktop oder im Startmenü. In expecco klicken Sie &amp;quot;Datei -&amp;gt; Öffnen ...&amp;quot; in der Menüleiste aus und navigieren ins &lt;br /&gt;
Verzeichnis &amp;quot;&amp;lt;expeccoInstallationsverzeichnis&amp;gt;\testsuites\examples&amp;quot;. &lt;br /&gt;
Dort wählen Sie die Testsuite &amp;quot;m01_Appium.ets&amp;quot; aus. Diese enthält einige Beispieltestfälle, welche über Appium auf dem Android Emulator ausgeführt werden können. Bevor Sie den ersten Test ausführen, stellen Sie bitte sicher, dass Sie sowohl den Appium Server als auch den Android Emulator gestartet haben und beide bereit sind. Der Emulator sollte fertig hochgefahren und das oben erwähnte Tutorial mindestens einmal durch gearbeitet worden sein. Der Appium Server ist bereit, wenn er die ersten Logeinträge auf seiner Konsole ausgibt. Der erste Test, welchen Sie ausführen können, befindet sich im Testplan &amp;quot;Simple Calculator Test&amp;quot;. Dieser öffnet auf dem Emulator den Standardtaschenrechner und nutzt ihn um eine einfache Rechnung durchzuführen. Sie führen ihn aus indem sie einfach den entsprechenden Testplan navigieren und im Editor auf der rechten Seite auf den kleinen grünen Pfeil klicken (siehe Screenshot).&lt;br /&gt;
&lt;br /&gt;
= Entwicklerguide =&lt;br /&gt;
&lt;br /&gt;
== Architektur und Technologien ==&lt;br /&gt;
&lt;br /&gt;
Die Anbindung an das Appium Testframework wurde über den &#039;Appium Driver&#039;, einer Weiterentwicklung des Selenium WebDriver, umgesetzt. Das auf HTML und JavaScript basierende Interface wurde funktional so erweitert, dass es als Schnittstelle zum Appium Server verwendet werden kann und dadurch dessen Dienste zum Testen von mobilen Anwendungen genutzt werden können. Diese beiden Komponenten kommunizieren über das JSON Wire Protokoll miteinander.&lt;br /&gt;
Zur Zeit unterstützt Appium das Testen auf iOS und Android Systemen. Grundsätzlich können die Test in diversen Programmiersprachen geschrieben werden. Jedoch muss beim Erstellen der Tests, definiert werden, auf welchem System sich die zu testende Anwendung befindet. An dieser Definition orientiert sich der Server, sucht sich die auszuführenden Aktionen heraus und sendet diese Befehle in einer dem Zielsystem verständlichen Form an die Endgeräte. Als Middleware für Android Systeme wird die Android Debug Bridge genutzt. Für iOS Systeme hingegen wird Instruments verwendet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:appium_architekturskizze_mit_konsolenfenster.png | 650px|]]&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
	<entry>
		<id>https://doc.expecco.de/index.php?title=Appium_Plugin_Reference&amp;diff=5965</id>
		<title>Appium Plugin Reference</title>
		<link rel="alternate" type="text/html" href="https://doc.expecco.de/index.php?title=Appium_Plugin_Reference&amp;diff=5965"/>
		<updated>2016-02-05T12:58:25Z</updated>

		<summary type="html">&lt;p&gt;Ff: /* Installation des Bundles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
Appium ist ein freies Open Source Framework zum Testen und Automatisieren von mobilen Anwendungen. Diese Tests können entweder auf realen mobilen Endgeräten, oder auf emulierten / simulierten Geräten durchgeführt werden. Hierbei werden sowohl Android- als auch iOS-Geräte unterstützt. expecco bietet mit seinem Appium Plugin eine Schnittstelle zur Ausführung von Tests mithilfe von Appium an.&lt;br /&gt;
Das erste Kapitel dieser Dokumentation beschreibt die Verwendung des Appium Bundles, einer von eXept erstellten Zusammenstellung von Appium, dem Android SDK und des JDK. Mit dieser können Sie schnell erste Tests umsetzen. &lt;br /&gt;
Der erste Abschnitt des Kapitels erläutert die Installation des Bundles auf Ihrem Betriebssystem. Sollten Sie das Bundle bereits installiert haben, so können Sie diesen Abschnitt überspringen. &lt;br /&gt;
Im Anschluss wird beschrieben, wie Sie die einzelnen Komponenten des Bundles starten können. Um einen praktischen Eindruck von unserer Appium Implementierung zu bekommen, wird zum Ende des Kapitels ein kurzes Tutorial beschrieben, wie Sie erste Tests mithilfe des Bundles ausführen können.&lt;br /&gt;
Im zweiten Kapitel soll anhand eines beispielhaften Testaufbaus das Appium Plugin und dessen Interaktion mit dem Appium Server, zum Testen von mobilen Anwendungen, näher erläutert werden. Hierbei wird der Fokus auf die dazu verwendeten Technologien gesetzt um Entwicklern einen Ansatzpunkt zum selbständigen entwickeln von Bausteinen oder zur Erweiterung der bestehenden Funktionsbibliothek zu ermöglichen.  &lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation des Bundles ==&lt;br /&gt;
 &lt;br /&gt;
Um schnell Ihre ersten Schritte mit dem mobilen Testen in expecco durchzuführen, können Sie unter folgender Adresse das Appium Bundle herunterladen: http://doc.expecco.de/wiki2.6/Appium_Plugin_Reference.&lt;br /&gt;
Der Download besteht aus einer einzelnen Installationsdatei. Nachdem Sie diese heruntergeladen haben, können Sie die Installation mit einem Doppelklick auf die Datei starten. Folgen Sie dann den Anweisungen des Installationsprogramms und wählen Sie einen Installationsort für das Bundle aus. Während des Installationsvorgangs wird unter Umstände die Appium App gestartet. Diese können Sie wieder schließen, da der Appium Server für den Test später direkt gestartet wird.( Nach erfolgreicher Installation können Sie, wie im nächsten Abschnitt beschrieben, Ihren ersten Test ausführen.)&lt;br /&gt;
&lt;br /&gt;
== Appium Server und Android Emulator starten ==&lt;br /&gt;
 &lt;br /&gt;
Die beiden Hauptkomponenten des Bundles sind zum einen der Android Emulator, auf dem die Test ausgeführt werden, sowie der Appium Server, welcher die Kommunikation zwischen expecco und dem Emulator ermöglicht. Sie können diese beiden Komponenten direkt über die beiden Shortcuts auf dem Desktop starten, die während der Installation angelegt wurden. Alternativ können Sie auch die beiden Batchdateien &amp;quot;start_appium.bat&amp;quot; und &amp;quot;start_emulator_arm.bat&amp;quot; (für n-Emulatoren n-mal die Batch-Datei &amp;quot;start_emulator_arm.bat&amp;quot; ausführen) im Installationsverzeichnis des Bundles starten. Der Emulator benötigt in der Regel einige Minuten zum Hochfahren.&lt;br /&gt;
Beim ersten Start zeigt der Emulator ein kurzes Tutorial an, welches durchgearbeitet werden muss, bevor mit dem Testen begonnen werden kann. Klicken Sie zunächst, wie auf dem Bildschirm angezeigt, auf den Launcher-Icon unten in der Mitte. Nachdem der Launcher sich geöffnet hat, wird auf dem Bildschirm die Anweisung angezeigt, die Kamera-App zu starten. Klicken Sie stattdessen einfach auf den blauen OK-Button rechts unten. Der Emulator wird speichern, dass Sie das Tutorial bereits durchgearbeitet haben und es in Zukunft nicht mehr anzeigen. &lt;br /&gt;
 &lt;br /&gt;
== Verbindungsaufbau über den Appium Verbindungsdialog ==&lt;br /&gt;
&lt;br /&gt;
Um über den Appium-Server eine Verbindung zu einer mobilen Anwendung aufzubauen, wechseln Sie zunächst in expecco in den GUI-Browser. Dort können Sie auf der linken Seite &amp;quot;Verbinden&amp;quot; auswählen und dann im erscheinenden Dropdownmenü &amp;quot;Appium&amp;quot; auswählen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumGUIBrowser.png|border|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daraufhin öffnet sich der Appium Verbindungsdialog (siehe Screenshot) in dem Sie die gewünschten Parameter für die Verbindung konfigurieren. Wenn Sie das Appium Bundle verwenden, dann können Sie durch einen Klick auf &amp;quot;Emulator Settings&amp;quot; rechts oben den Dialog automatisch mit den korrekten Einstellungen befüllen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Emulator Settings.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit einem Klick auf &amp;quot;Connect&amp;quot; wird dann die Verbindung zum Gerät und der zu steuernden Anwendung aufgebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich empfiehlt es sich aber den &amp;quot;Android-Wizard&amp;quot; zu verwenden. Der &amp;quot;Android-Wizard&amp;quot; ermöglicht es Ihnen den Verbindungdialog individuell zu konfigurieren. Individuell konfigurieren soll heissen, dass man eine Verbindung zu einem beliebigen aber auch angeschlossenen Gerät konfigurieren und aufbauen kann.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium GUI AndroidWizard.png|border|600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch klicken auf &amp;quot;Android Wizard&amp;quot; öffnet sich der Einrichtungsassisten (siehe screenshot). Mit Hilfe dieses Assistenten können Sie über Dropdown-Menüs die zu Verfügung stehenden konfigurationen vornehmen. Für das Beispiel gehen Sie wie folgt vor.&lt;br /&gt;
Wählen Sie zunächst den in unserem Beispiel verwendeten Emulator aus(&amp;quot;emulator-5554&amp;quot;). Anschließend das verwendete &amp;quot;appPackage&amp;quot; (&amp;quot;com.android.calculator2&amp;quot;). Zum Schluss müssen Sie noch die &amp;quot;appActivity&amp;quot; selektieren. Diese finden Sie unter den &amp;quot;system packages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Appium Settings showSystemPackages.png|border|400px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch aktivieren des &amp;quot;Show system packages&amp;quot; Feld, wird Ihnen im Dropdown-Menü die in unserem Beispiel verwendete Anwendung angezeigt. Bitte wählen Sie &amp;quot;.Calculator&amp;quot; aus. Durch klicken auf &amp;quot;OK&amp;quot; werden die Einstellungen übernommen und in Verbindungsdialog automatisch übertragen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AppiumSettingsWizard.png| 600px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geben Sie zunächst die Adresse des Appium Server in das Eingabefeld ein. Standardmäßig wird der Appium Server auf Port &#039;&#039;4723&#039;&#039; gestartet. Geben Sie also folgendes ein:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;http://&amp;lt;IP des Appium Hostrechners&amp;gt;:4723/wd/hub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes müssen Sie die Konfiguration für die Verbindung angeben. &lt;br /&gt;
Um den Dialog zu befüllen, wählen Sie links unten aus der Dropdownbox die gewünschten sogenannten Capabilities aus. Um sie der Konfiguration hinzuzufügen, klicken Sie auf &#039;&#039;Entfernen&#039;&#039;. Danach können Sie in der Liste im Dialog die entsprechenden Werte für die einzelnen Capabilities eingeben.&lt;br /&gt;
Die folgenden Capabilities sind für einen Verbindungsaufbau notwendig:&lt;br /&gt;
&lt;br /&gt;
* plattformName Wählen Sie hier aus, ob Sie eine Android-App oder eine iOS-App automatisieren wollen.&lt;br /&gt;
* udid Wählen Sie hier aus, auf welchem Gerät Sie die App automatisieren wollen, z.B. &#039;&#039;emulator-5554&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Für Android-Apps sind folgende Capabilities zusätzlich notwendig:&lt;br /&gt;
&lt;br /&gt;
* appPackage Geben Sie hier das Package der zu automatisierenden App an, z.B. &#039;&#039;com.apple.calculator&#039;&#039;&lt;br /&gt;
* appActivity Geben Sie hier die Activity innerhalb des Packages an, &amp;quot;.Calculator&amp;quot;&lt;br /&gt;
Für iOS-Apps sind folgende Capabilities zusätzlich notwendig:&lt;br /&gt;
* bundleId Geben Sie hier die Bundle-ID der zu automatisierenden App an, z.B. &amp;quot;com.apple.calculator&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nachdem Sie alle gewünschten Capabilities hinzugefügt haben, können Sie mit einem Klick auf &#039;&#039;Verbinden&#039;&#039; den Verbindungsaufbau starten.&lt;br /&gt;
Weitere Informationen zu verfügbaren Capabilities finden Sie unter:&lt;br /&gt;
&lt;br /&gt;
http://appium.io/slate/en/master/?java#appium-server-capabilities&lt;br /&gt;
&lt;br /&gt;
== Ersten Test ausführen ==&lt;br /&gt;
 &lt;br /&gt;
Um einen ersten Einblick ins Testen mobiler Anwendungen mit expecco zu bekommen, können Sie nun einen der Beispieltests ausführen. Starten Sie zunächst expecco über die entsprechende Verknüpfung auf dem Desktop oder im Startmenü. In expecco klicken Sie &amp;quot;Datei -&amp;gt; Öffnen ...&amp;quot; in der Menüleiste aus und navigieren ins &lt;br /&gt;
Verzeichnis &amp;quot;&amp;lt;expeccoInstallationsverzeichnis&amp;gt;\testsuites\examples&amp;quot;. &lt;br /&gt;
Dort wählen Sie die Testsuite &amp;quot;m01_Appium.ets&amp;quot; aus. Diese enthält einige Beispieltestfälle, welche über Appium auf dem Android Emulator ausgeführt werden können. Bevor Sie den ersten Test ausführen, stellen Sie bitte sicher, dass Sie sowohl den Appium Server als auch den Android Emulator gestartet haben und beide bereit sind. Der Emulator sollte fertig hochgefahren und das oben erwähnte Tutorial mindestens einmal durch gearbeitet worden sein. Der Appium Server ist bereit, wenn er die ersten Logeinträge auf seiner Konsole ausgibt. Der erste Test, welchen Sie ausführen können, befindet sich im Testplan &amp;quot;Simple Calculator Test&amp;quot;. Dieser öffnet auf dem Emulator den Standardtaschenrechner und nutzt ihn um eine einfache Rechnung durchzuführen. Sie führen ihn aus indem sie einfach den entsprechenden Testplan navigieren und im Editor auf der rechten Seite auf den kleinen grünen Pfeil klicken (siehe Screenshot).&lt;br /&gt;
&lt;br /&gt;
= Entwicklerguide =&lt;br /&gt;
&lt;br /&gt;
== Architektur und Technologien ==&lt;br /&gt;
&lt;br /&gt;
Die Anbindung an das Appium Testframework wurde über den &#039;Appium Driver&#039;, einer Weiterentwicklung des Selenium WebDriver, umgesetzt. Das auf HTML und JavaScript basierende Interface wurde funktional so erweitert, dass es als Schnittstelle zum Appium Server verwendet werden kann und dadurch dessen Dienste zum Testen von mobilen Anwendungen genutzt werden können. Diese beiden Komponenten kommunizieren über das JSON Wire Protokoll miteinander.&lt;br /&gt;
Zur Zeit unterstützt Appium das Testen auf iOS und Android Systemen. Grundsätzlich können die Test in diversen Programmiersprachen geschrieben werden. Jedoch muss beim Erstellen der Tests, definiert werden, auf welchem System sich die zu testende Anwendung befindet. An dieser Definition orientiert sich der Server, sucht sich die auszuführenden Aktionen heraus und sendet diese Befehle in einer dem Zielsystem verständlichen Form an die Endgeräte. Als Middleware für Android Systeme wird die Android Debug Bridge genutzt. Für iOS Systeme hingegen wird Instruments verwendet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:appium_architekturskizze_mit_konsolenfenster.png | 650px|]]&lt;/div&gt;</summary>
		<author><name>Ff</name></author>
	</entry>
</feed>