Appium Plugin Reference: Unterschied zwischen den Versionen
Matilk (Diskussion | Beiträge) |
Matilk (Diskussion | Beiträge) |
||
Zeile 18: | Zeile 18: | ||
== Appium-Server starten == |
== Appium-Server starten == |
||
Das Bundle beinhaltet einen Appium-Server, der die Kommunikation zwischen expecco und dem Testgerät ermöglicht. Sie können diesen direkt über die Verknüpfung auf dem Desktop |
Das Bundle beinhaltet einen Appium-Server, der die Kommunikation zwischen expecco und dem Testgerät ermöglicht. Sie können diesen direkt über den Menüpunkt ''Erweiterungen'' > ''Appium'' > ''Appium starten'' starten. Alternativ können Sie auch die Verknüpfung auf dem Desktop benutzen, die während der Installation angelegt wurde, oder die Batchdatei "start_appium.bat" im Installationsverzeichnis des Bundles. Es öffnet sich ein Fenster mit einer Konsole über die der Server läuft und in der seine Lognachrichten ausgegeben werden. Der Server ist bereit, sobald die ersten Lognachrichten erscheinen. |
||
== Mobilgerät verbinden == |
== Mobilgerät verbinden == |
Version vom 28. Juli 2016, 14:53 Uhr
Inhaltsverzeichnis
Einleitung[Bearbeiten]
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 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. Das erste Kapitel dieser Dokumentation beschreibt die Verwendung des Appium-Bundles, einer von eXept erstellten Zusammenstellung von Appium, dem Android SDK und dem JDK. Mit dieser können Sie schnell erste Tests umsetzen. 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. 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. 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.
Setup[Bearbeiten]
Installation des Bundles[Bearbeiten]
Um schnell Ihre ersten Schritte mit dem mobilen Testen in expecco durchzuführen, können Sie unter folgender Adresse das Appium-Bundle herunterladen: http://download.exept.de/transfer/h-expecco-2.9.0/Appium%20Bundle%201.3.0.0%20Setup.exe. 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änden die Appium-App gestartet. Diese können Sie wieder schließen, da der Appium-Server für den Test später direkt gestartet wird.
expecco benutzt den Befehl adb und muss daher das Verzeichnis kennen, in dem die Datei adb.exe liegt. Sie können dies entweder in den Einstellungen zum Appium-Plugin angeben oder die Umgebungsvariable PATH entsprechen erweitern. Suchen Sie dazu in der Systemsteuerung nach den Umgebungsvariablen. Doppelklicken Sie dort auf die Variable mit dem Namen PATH, um diese zu ändern. Falls noch keine Variable mit diesem Namen existiert, legen Sie diese neu an. Geben Sie dort den Pfad des Verzeichnisses an, in dem die adb.exe liegt, beziehungsweise hängen Sie ihn mit einem Semikolon getrennt an den bereits vorhandenen Wert der Variable an. Der Pfad hat in der Regel die Form C:\Program Files (x86)\exept\Appium Bundle\android-sdk\platform-tools.
Appium-Server starten[Bearbeiten]
Das Bundle beinhaltet einen Appium-Server, der die Kommunikation zwischen expecco und dem Testgerät ermöglicht. Sie können diesen direkt über den Menüpunkt Erweiterungen > Appium > Appium starten starten. Alternativ können Sie auch die Verknüpfung auf dem Desktop benutzen, die während der Installation angelegt wurde, oder die Batchdatei "start_appium.bat" im Installationsverzeichnis des Bundles. Es öffnet sich ein Fenster mit einer Konsole über die der Server läuft und in der seine Lognachrichten ausgegeben werden. Der Server ist bereit, sobald die ersten Lognachrichten erscheinen.
Mobilgerät verbinden[Bearbeiten]
Wenn Sie das 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.
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 Entwickleroptionen mit dem Namen USB-Debugging (siehe https://www.droidwiki.de/USB-Debugging). Für iOS-Geräte ab iOS 8 finden Sie diese Option in den Einstellungen unter Entwickler mit dem Namen Enable UI Automation. Beim Verbinden des Geräts mit dem PC über USB müssen Sie ggf. am Gerät noch der Verbindung zustimmen.
Verbindungsaufbau über den Appium-Verbindungsdialog[Bearbeiten]
Nachdem Sie den Appium-Server gestartet haben und ein Gerät über USB verbunden ist, können Sie in expecco eine Verbindung zu einer mobilen Anwendung aufbauen. Wechseln Sie dazu in expecco in den GUI-Browser. Dort können Sie auf der linken Seite Verbinden auswählen und dann im erscheinenden Dropdown-Menü Appium auswählen.
Daraufhin öffnet sich der Appium-Verbindungsdialog (siehe Screenshot), in dem Sie die gewünschten Parameter für die Verbindung konfigurieren.
Geben Sie zunächst die Adresse des Appium-Servers in das Eingabefeld ein. Standardmäßig wird der Appium-Server auf Port 4723 gestartet. Geben Sie also Folgendes ein:
http://<IP des Appium Hostrechners>:4723/wd/hub
Als nächstes müssen Sie die Konfiguration für die Verbindung angeben. Der Appium-Server verlangt hierfür die Angabe sogenannter Capabilitys.
Für Tests unter Android empfiehlt es sich, hierfür den Android-Assistenten zu verwenden. Der Android-Assistent ermöglicht es Ihnen, die Capabilitys für beliebige über USB angeschlossene Geräte automatisch auszufüllen.
Durch Klicken auf Android-Assistent öffnet sich der Einrichtungsassistent (siehe Screenshot). Mit Hilfe dieses Assistenten können Sie über Dropdown-Menüs die zu Verfügung stehenden Konfigurationen vornehmen.
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 Calc als Filter ein und Sie finden Ihren Taschenrechner einfacher. (Das Paket heißt je nach Gerät verschieden, hat aber calculator 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. .Calculator). Durch Klicken auf OK werden die Capabilitys entsprechend Ihrer Auswahl gesetzt.
Um die Capabilitys manuell einzutragen, wählen Sie links unten aus der Dropdownbox die gewünschten Capabilitys aus. Um sie der Konfiguration hinzuzufügen, klicken Sie auf Hinzufügen. Danach können Sie in der Liste im Dialog die entsprechenden Werte für die einzelnen Capabilitys eingeben. Mit Entfernen können Sie eingetragene Capabilitys wieder aus der Liste löschen.
Die folgenden Capabilitys sind für einen Verbindungsaufbau notwendig:
- plattformName Wählen Sie hier aus, ob Sie eine Android-App oder eine iOS-App automatisieren wollen.
- udid Wählen Sie hier aus, auf welchem Gerät Sie die App automatisieren wollen, z.B. emulator-5554
Für Android-Apps sind folgende Capabilitys zusätzlich notwendig:
- installierte App benutzen
- appPackage Geben Sie hier das Package der zu automatisierenden App an, z.B. com.apple.calculator
- appActivity Geben Sie hier die Activity innerhalb des Packages an, .Calculator
- App installieren
- app Geben Sie hier den Pfad zu einer .apk Datei an
Für iOS-Apps sind folgende Capabilitys zusätzlich notwendig:
- installierte App benutzen
- bundleId Geben Sie hier die Bundle-ID der zu automatisierenden App an, z.B. com.apple.calculator
- App installieren
- app Geben Sie hier den Pfad zu einer .app oder .ipa Datei an
Weitere Informationen zu verfügbaren Capabilitys finden Sie unter:
http://appium.io/slate/en/master/?java#appium-server-capabilities
Nachdem Sie alle gewünschten Capabilitys hinzugefügt haben, können Sie mit Speichern Ihre Einstellungen in einer Datei speichern. Diese können Sie dann beim nächsten Mal über Laden aus Datei einlesen oder auch in den Tests verwenden.
Mit einem Klick auf Verbinden starten Sie den Verbindungsaufbau mit den angegebenen Einstellungen.
Tests mit dem Appium-Recorder erstellen[Bearbeiten]
Nachdem Sie die Verbindung zu einem Gerät hergestellt haben, können Sie im GUI-Browser den Appium-Recorder über das Aufnahme-Symbol starten.
In der Menüleiste können Sie bei Aktion auswählen, welche Aktion Sie ausführen wollen. Voreingestellt ist Berühren, 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.
Sie können aus folgenden Aktionen wählen:
- Aktionen
- Wischen: 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
- Antippen: Antippen des Bildschirms an der Cursorposition mit der selben Dauer wie Sie Ihre Maus gedrückt halten (hilfreich für Long-Clicks)
- Element antippen: wie Antippen, aber für das Element an der Cursorposition
- Berühren: kurzes Berühren des Elements an der Cursorposition (Click)
- Text setzen: nach dem Klicken auf ein Element können Sie den Text eingeben, mit dem dieses befüllt werden soll; funktioniert nur für Eingabefelder
- Test & Verify
- Attribut vergleichen: 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.
- Attribut verifizieren: 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.
Außerdem können Sie mit den vier Icons an der rechten Seite die Tasten Home, Zurück Menü und Power auslösen.
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.
Um später Tests mit diesen Bausteinen ausführen zu können, müssen Sie am Anfang des Tests den Connect-Baustein aus der Appium-Library einbauen und am Ende entsprechend ein Disconnect. Zur Erzeugung der Capabilitys für den Connect-Baustein können Sie den Baustein Read Capabilities from File verwenden, der eine im Verbindungsdialog erstellte Datei einlesen kann.
Verbindungsabbau[Bearbeiten]
Um eine bestehende Verbindung abzubauen, führen Sie einen Rechtsklick auf den Verbindungseintrag im GUI-Browser aus und wählen Sie Verbindung abbauen oder Verbindung abbauen und Eintrag entfernen 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.
Hinweise zur Verwendung mit iOS[Bearbeiten]
Der Appium-Server muss ein Mac sein, auf dem Xcode installiert ist. Für Tests auf realen iOS-Geräten ist zu beachten, dass nur Apps verwendet werden können, die als Development Distribution signiert sind und für die das Gerät zum entsprechenden Provisioning Profile gehört. Insbesondere kann dadurch die App während des Testens nicht verlassen werden, da außerhalb keine Steuerung über Appium zugelassen wird.
http://appium.io/slate/en/master/?java#appium-on-real-ios-devices
Beispiel[Bearbeiten]
Bei den Demo-Testsuiten für expecco finden Sie unter dem Namen m01_appium.ets ein Beispiel für Tests mit dem Appium-Plugin. Die Testsuite enthält zwei einfache Testpläne: Simple CalculatorTest und Complex Calculator and Messaging Test. 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. Der Appium-Server muss ebenfalls vor Beginn des Tests lokal gestartet werden.
- Simple CalculatorTest
- Dieser Test verbindet sich mit dem Taschenrechner und gibt die Formel 2+3 ein. Das Ergebnis des Rechners wird mit dem erwarteten Wert 5 verglichen.
- Complex Calculator and Messaging Test
- Dieser Test verbindet sich mit dem Taschenrechner und öffnet anschließend den Nachrichtendienst. Dort wartet er auf eine einkommende Nachricht von der Nummer 15555215556, in der eine zu berechnende Formel gesendet wird. Um eine Nachricht an den Emulator zu schicken können Sie einen zweiten Emulator starten und dort ebenfalls den Nachrichtendienst starten. Von dort schicken Sie eine Nachricht an die Nummer 15555215554. Alternativ können Sie dem Emulator auch über Telnet eine Nachricht schicken:
telnet localhost 5554 sms send 15555215556 1+2
- 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.
Entwicklerguide[Bearbeiten]
Architektur und Technologien[Bearbeiten]
Die Anbindung an das Appium Testframework wurde über den 'Appium Driver', 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. 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.