Wie viel kostet Appium für die Menschen?

In diesem Artikel werden wir uns das Appium-Tool ansehen. Dieser Artikel ist eine Einführung in die Einführung des automatisierten Testens mobiler Anwendungen. Es wird gezeigt, mit welchen Schwierigkeiten Sie bei der Verwendung dieses Tools möglicherweise konfrontiert sind.

Betrachten Sie eine kleine Aufgabe am Beispiel eines „Taschenrechners“, versuchen Sie, automatisierte Tests zu schreiben, um sie zu testen, und ... Beginnen wir von vorne :)

Inhalt


  • Was ist Appium?
  • Notwendiges Minimum.
  • Erklärung und Lösung des Problems.
  • Zusammengeführt :)

Was ist Appium?


Ein paar Worte zum mobilen Testen. Sie können keinen Computer oder Laptop zu Hause haben, aber wir nehmen unser Leben ohne mobile Geräte nicht wahr. Das Testen mobiler Anwendungen nimmt eine große Nische in ... Testen ... Mmmm ... Butter ist Butter, aber es ist. Diese Nische ist ziemlich kompliziert.

Es gibt so viele Geräte mit ihren Betriebssystemen, mit eigenen grafischen Oberflächen, Bildschirmauflösungen usw. Ich denke, diese Liste ist endlos. Aufgrund der großen Vielfalt mobiler Geräte wäre es daher schön, automatisierte Tests für unsere Anwendungen durchzuführen, um das Leiden der Tester zu verringern und das Testen einer Funktionalität auf Hunderten von Geräten nicht zur „echten Hölle“ zu machen (siehe Abbildung unten).

Bild

Es gibt viele Tools zum Schreiben von Autotests für mobile Geräte. Um die vor mir liegenden Aufgaben zu lösen, habe ich mich für Appium entschieden, da es gleichzeitig für Android und iOS geeignet ist und Sie Selbsttests mit "jedermanns Lieblings" Java schreiben können.

Appium ist ein kostenloses, plattformübergreifendes Open-Source-Tool, mit dem Anwendungen für Android und iOS automatisiert werden können. Appium verfolgt den gleichen Ansatz wie Selenium WebDriver, der JSON-HTTP-Anforderungen von Clients empfängt und diese abhängig von der Plattform, auf der es arbeitet, konvertiert.

Bild

Minimum erforderlich


Was brauchen wir also, um mit Appium zu arbeiten?

Um Tests für Android zu erstellen, werden folgende Anforderungen gestellt:

  • Java (Version> = 7)
  • Android SDK API (Version> = 17)
  • Android Virtual Device (AVD) / reales Gerät
  • Intel Hardware Accelerated Execution Manager

Damit der Android-Geräteemulator mit einer Geschwindigkeit arbeitet, die der Geschwindigkeit des realen Geräts nahe kommt, müssen Sie Intel Hardware Accelerated Execution Manager installieren. Dies verkürzt die Zeit, die zum Starten und Debuggen der Anwendung benötigt wird.

Für iOS:

  • Mac OS X (Version> = 10.7)
  • Xcode (Version> = 5.1)
  • Java (Version> = 7)
  • Homebrew
  • NodeJS
  • npm

Ich empfehle außerdem, Appium-Doctor zu installieren, um mögliche Probleme bei der Installation und Konfiguration der erforderlichen Komponenten auf beiden Plattformen zu diagnostizieren.

Bild

Erklärung und Lösung des Problems


Stellen wir uns also vor, wir müssen automatisierte Tests für eine Taschenrechneranwendung für Android-Geräte schreiben. Dazu müssen wir Appium von der offiziellen Website herunterladen und auf unserer „Maschine“ installieren.

Bild

Starten Sie Appium.

Bild

Standardmäßig ist Appium bereit, localhost mit Port 4723 abzuhören. Hier lassen wir alles unverändert und starten den Server.

Bild

Jetzt ist Appium bereit, unsere Anfragen zu bearbeiten.

Unser zukünftiger Autotest muss entweder auf dem Emulator oder auf einem realen Gerät ausgeführt werden. Berücksichtigen Sie für die Vielseitigkeit dieses Artikels die Arbeit des Tests am Emulator. Dafür brauchen wir Android Studio. Laden Sie es herunter und installieren Sie es selbst. Öffnen Sie dann und gehen Sie zu Extras - AVD Manager.

Bild

Bild

Bild

Bild

Bild

Bild

Öffnen Sie nun das Terminal und führen Sie den Befehl adb device aus. Sie zeigt die Liste der angeschlossenen Geräte an.

Bild

Wir sehen, dass die Liste der Geräte leer ist, da kein Emulator ausgeführt wird und kein echtes Gerät mit unserer „Maschine“ verbunden ist.

Führen Sie alle Emulatoren aus, die wir haben. In meinem Fall sind dies zwei Emulatoren. Führen Sie den Befehl adb device erneut aus.

Bild

Jetzt haben wir eine nicht leere Liste, die die ID unserer angeschlossenen Geräte enthält - Emulatoren und Geräte, falls vorhanden.

Nachdem der Emulator aussortiert ist, beginnen wir mit dem Schreiben von Code. Wie oben beschrieben, verwende ich in meinen Tests Java.

Erstellen Sie zunächst eine Instanz von AndroidDriver. Der Konstruktor dieser Klasse erwartet die Eingabe von zwei Parametern:

Bild

Gewünschte Funktionen - JSON-Objekt (eine Reihe von Schlüssel-Wert-Paaren), das vom Client an den Server gesendet wird.

Gewünschte Funktionen beschreiben die Funktionen der erstellten Sitzung (Name des Geräts / Emulators, Betriebssystem (OS), Betriebssystemversion, gestartete Anwendung usw.).

Beispiel für Funktionen:

Bild

Wir beschreiben unsere Funktionen und erstellen AndroidDriver.

Bild

Gerätename ist ein erforderlicher Parameter, für Android wird er jedoch nicht aktiviert. Wenn wir über iOS sprechen, müssen Sie bei der Angabe des Namens einen der reservierten Namen verwenden (ein Beispiel für solche Namen finden Sie in den Kommentaren zum Code). Die Beschreibung anderer Parameter finden Sie im Code (siehe Abbildung oben), wir werden uns jedoch auf einige konzentrieren.

udid ist eine eindeutige Kennung für das Gerät. Wir können diese Gerätekennung mit dem Befehl adb Geräte abrufen.

Bild

appPackage ist der Name des Java-Pakets der Android-Anwendung, die wir ausführen möchten.

appActivities ist der Name der Aktivitäten, die wir öffnen.

appPackage und appActivities können auf verschiedene Arten abgerufen werden. Am einfachsten ist es jedoch, die Anwendung „APK Info“ von Google Play zu installieren.

Nach dem Öffnen dieses Programms wird eine Liste aller installierten Anwendungen angezeigt. Wir interessieren uns für Rechner. Wählen Sie es aus der Liste aus.

Bild

Und hier finden Sie alle Informationen, die wir brauchen.

Bild

Bild

Füllte sie. Erstellen Sie als Nächstes eine Instanz von AndroidDriver: Registrieren Sie die Appium-URL und übergeben Sie das Capabilities-Objekt als zweiten Parameter.

Bild

Dieser Code führt nur den Rechner auf dem Emulator aus. Wir müssen lernen, wie man die Elemente des Rechners irgendwie verwaltet, damit wir einen einfachen Test schreiben können. Das Prinzip ist hier ähnlich wie im Selenium Web Driver. Wir müssen über alle Locators auf die Elemente zugreifen. Appium Inspector wird uns helfen, sie zu bekommen. Öffnen Sie Appium.

Bild

Bild

Jetzt müssen alle im Code beschriebenen Funktionen an den Inspektor auf der Registerkarte Gewünschte Funktionen übertragen werden.

Bild

Sitzung starten.

Bild

Der Inspektor übersetzt, was auf dem Gerät angezeigt wird. Ein wenig rechts ist ein Baum aller Elemente der aktuellen Aktivität. Um die Attribute eines Elements zu erhalten, müssen Sie nur das Element auswählen, das wir benötigen.

Bild

Nach der Auswahl werden alle Attribute angezeigt, die für dieses Element verfügbar sind. In diesem Fall ist es für uns nicht so wichtig, wie auf das Element zugegriffen werden soll: per ID oder xPath. In großen und komplexen Anwendungen ist es jedoch besser, IDs zu verwenden, da xPath den Testdurchgang erheblich verlangsamt. Beim Testen von Hybridanwendungen ist die ID eine für Android und iOS, und xPath ist unterschiedlich. Wir haben gelernt, wie man die notwendigen Attribute erhält. In Analogie zum Selenium Web Driver erhalten wir nun die erforderlichen Elemente im Code.

Bild

Um das Element zu erhalten, verwende ich die findElementById-Methode. Sie können eine Instanz der MobileElement-Klasse erstellen und damit arbeiten oder ohne eine zu erstellen. Hier definieren wir die Elemente der Zahlen 2, + und 3. Am Ende erwarte ich ein Ergebnis von 5. Am Ende ist das Ergebnis wie folgt:

Bild

Ich stelle den Test und arbeite daran, die Sitzung in separate Methoden zu erstellen. Jetzt werde ich versuchen zu demonstrieren, was wir getan haben.


Zusammengeführt :)


Bild

In diesem Artikel habe ich gezeigt, wie man schnell mit Appium anfängt und was dafür benötigt wird. Wie Sie vielleicht bemerkt haben, ist es nicht so schwierig, mit dem Schreiben einfacher Tests zu beginnen. Anschließend können Sie den Bericht an das Projekt anhängen, z. B. Allure. Aber das ist eine ganz andere Geschichte :)

Vielleicht haben Sie individuelle Probleme, wenn Sie verschiedene Tools installieren, die für die Arbeit mit Appium erforderlich sind. Aber all diese Probleme lassen sich leicht durch die Google-Suche lösen :)

Das Thema Testen für iOS wurde nicht veröffentlicht, aber ich möchte „sagen“ oder lieber ein paar Worte darüber schreiben.

Um die Anwendung über Appium unter iOS auszuführen, habe ich viel Zeit damit verbracht, die Umgebung einzurichten (xCode, Appium, Entwicklerzertifikate usw.). Es war notwendig, das Appium-Projekt über xCode zu öffnen, die Entwicklerzertifikate und andere Einstellungen anzugeben, das Projekt zusammenzustellen, und erst dann stellte sich heraus, dass die Befehle über das Appium auf iOS-Geräten ausgeführt wurden. Nach jedem Update von Appium müssen Sie dieses Verfahren ausführen. Vielleicht fällt Ihnen alles viel leichter, Sie sollten daran glauben. Bisher habe ich keine andere Lösung gefunden, vielleicht ist es das, aber bisher passt es mir.

Ich möchte noch einmal darauf hinweisen, dass es besser ist, beim Zugriff auf Elemente IDs zu verwenden als xPath. Auch wenn das Element keine ID enthält, bitten Sie den Entwickler, die ID anzugeben. Dies erleichtert Ihnen das Leben und erhöht die Geschwindigkeit der Testausführung.

Und je realer Ihre Geräte sind, desto wahrscheinlicher ist es, dass ein Fehler gefunden wird, bevor Endbenutzer ihn finden. Grundsätzlich können Sie eine eigene Gerätefabrik erstellen. Es erscheint mir jedoch ratsamer, sich mit Cloud-Lösungen wie BrowserStack, SauceLabs und anderen zu befassen.

Das ist alles was ich sagen wollte!

PS- Projekt auf GitHub

PPS Ein bisschen von meiner Gruppe

Nun, das ist alles!

All Articles