Bekanntschaft mit Appium-Treibern (oder wie man die erforderlichen auswählt)

Hinweis Ich habe diesen Artikel übersetzt, um diejenigen zu unterstützen, die ihre ersten Schritte in der Testautomatisierung machen und mehr über das Appium-Tool erfahren möchten. Es beschreibt das allgemeine Funktionsprinzip von Appium-Treibern sowie deren Art und Zweck. Zu Beginn der Reise fehlen vielen Testern geordnete Informationen, und dieses Material hilft bei der Auswahl des richtigen Werkzeugs.



Appium ist ein plattformübergreifendes Tool, mit dem Sie das Testen von Mobil- (iOS und Android) und Desktop-Anwendungen gleichzeitig automatisieren können. Um dieses plattformübergreifende Modell zu implementieren, müssen verschiedene Treiber verwendet werden. Appium hat im Wesentlichen die gleiche Architektur wie Selenium WebDriver, der auch eine Reihe unabhängiger Treiber zur Unterstützung der browserübergreifenden Testautomatisierung verwendet.

Es gibt separate Appium-Treiber für verschiedene Automatisierungstools. Dies bedeutet normalerweise, dass für jede Plattform ein Treiber verwendet wird (einer für iOS, einer für Android usw.). Es gibt jedoch Ausnahmen. Sie hängen damit zusammen, dass bei der Automatisierung von Testanwendungen für einige Plattformen (z. B. für Android) mehrere Tools in Verbindung mit Appium verwendet werden. Tatsächlich gibt es drei Treiber für Android: basierend auf UiAutomator, UiAutomator 2 und Espresso.

Das Funktionsprinzip der Fahrer


Treiber sind möglicherweise die wichtigste Komponente des gesamten Tools, da ihre Aufgabe darin besteht, die Befehle der Appium-API (bekannt als WebDriver-Protokoll) auf einer bestimmten Plattform auszuführen. Treiber sind im Wesentlichen Übersetzer, die Appium-Client-Code in etwas verwandeln, das Befehle unter iOS, Android usw. ausführt.

Unter anderem aus Gründen der Einfachheit der Architektur ist jeder einzelne Treiber selbst ein eigenständiger WebDriver-kompatibler Server (obwohl nicht alle Optionen des Haupt-Appium-Servers verfügbar sind). Innerhalb des Treibers werden die empfangenen Befehle auf besondere Weise verarbeitet. Sie können beispielsweise an einen separaten Prozess übertragen werden, in dem Java-Code auf einem Android-Gerät ausgeführt wird.

Die Treiber selbst haben eine recht komplexe interne Architektur, die manchmal auf einer ganzen Reihe von Technologien basiert. Nachfolgend sehen Sie ein Diagramm, in dem die verschiedenen Technologien des XCUITest-Treibers (aktueller iOS-Treiber) dargestellt sind:

Wie Sie sehen, ist das Prinzip des XCUITest-Treibers nicht so einfach. Es ist als Teil von Appium verfügbar und wird immer dann gestartet, wenn Sie eine iOS-Sitzung starten. Innerhalb des Treibers wird ein anderes Tool namens WebDriverAgent verwendet, das für die Konvertierung von WebDriver-Protokollbefehlen in XCUITest-Bibliotheksaufrufe zuständig ist.

Viele Treiber haben eine ähnliche Architektur, obwohl jeder von ihnen eine eigene implementieren kann, da der Treiber letztendlich in npm als Klasse veröffentlicht wird, die die Appium BaseDriver-Klasse erbt. Dies ermöglicht den Treibern eine einfache Verbindung zu Appium.

Arten von Treibern


Wie viele Fahrer gibt es? Ehrlich gesagt ist es ziemlich schwierig, sicher zu sein, da es neben den offiziellen Appium-Treibern auch inoffizielle gibt. Wenn wir uns jedoch den Quellcode von Appium ansehen, werden wir Folgendes sehen:

const AUTOMATION_NAMES = { APPIUM: 'Appium', UIAUTOMATOR2: 'UiAutomator2', UIAUTOMATOR1: 'UiAutomator1', XCUITEST: 'XCUITest', YOUIENGINE: 'YouiEngine', ESPRESSO: 'Espresso', TIZEN: 'Tizen', FAKE: 'Fake', INSTRUMENTS: 'Instruments', WINDOWS: 'Windows', MAC: 'Mac', }; 

Automatisierungsnamen sind Schlüssel für verschiedene Treiber, die von Appium verwendet werden. Dieser Codeabschnitt bestimmt, welche Zeilen als Werte für die automationName-Funktion verwendet werden dürfen. Jeder Treiber unterstützt normalerweise nur eine Plattform. Hier ist eine kurze Beschreibung jedes Treibers basierend auf seinem automationName:

  • Appium ist nur ein Zeiger auf den Standardtreiber für die ausgewählte Plattform und kein separater Treiber.
  • UiAutomator2 ( Repository ) - der aktuelle Treiber für die Android-Plattform, der standardmäßig verwendet wird und auf dem Google UiAutomator-Tool basiert.
  • UiAutomator1 ( Repository ) ist ein alter Android-Treiber, der auf einer älteren Version von UiAutomator basiert. Dieser Treiber wird in Zukunft nicht mehr unterstützt. Es ist daher besser, ihn zugunsten von UiAutomator2 aufzugeben.
  • XCUITest ( Repository ) - der Standardtreiber für iOS, basierend auf dem Apple XCUITest-Tool;
  • YouiEngine ( Repository ) - ein Treiber von Entwicklern von You.i Labs, der zum Automatisieren von Anwendungstests für verschiedene Plattformen verwendet wird, die auf der Grundlage ihres SDK erstellt wurden.
  • Espresso ( Repository ) - der neueste Treiber für Android, basierend auf dem Google Espresso-Tool;
  • Tizen ( Repository ) - ein Treiber von Samsung-Entwicklern zur Automatisierung des Testens von Xamarin-basierten Anwendungen, die in Tizen OS verwendet werden.
  • Fake (der Name spricht für sich selbst) wird als internes Testwerkzeug für Appium verwendet. Sie werden es niemals benutzen müssen;
  • Instrumente ( Repository ) - ein veralteter Treiber, der für Anwendungen mit iOS 9.3 und niedriger verwendet wird;
  • Windows ( Repository ) - Microsoft hat einen mit Appium kompatiblen Server namens WinAppDriver zusammengestellt, und dieser Treiber verbindet ihn mit dem Appium-Hauptserver. Entwickelt direkt für die Automatisierung von Desktop-Anwendungen für Windows;
  • Mac ( Repository ) - Ein Treiber, mit dem Sie das Testen von Desktop-Anwendungen für Mac automatisieren können.

Wie bereits erwähnt, verfügt jeder dieser Treiber über eine eigene Architektur, die sich aus dem folgenden Diagramm ergibt:


FAQ für Fahrer


Woher wissen Sie, welchen Treiber Sie verwenden sollen?

Wenn Sie Autotests für Anwendungen für iOS, Windows, Mac oder Tizen schreiben müssen, liegt die Wahl auf der Hand - verwenden Sie für jede dieser Plattformen den Standardtreiber. Für Android müssen Sie hier zwischen UiAutomator2 und Espresso wählen. Informieren Sie sich am besten im Voraus über jedes dieser Tools und finden Sie heraus, welches für Ihren Fall am besten geeignet ist. Die Funktionen der UiAutomator2- und Espresso-Treiber sind ähnlich, jedoch nicht vollständig identisch.

Unterstützen alle Treiber dieselben Befehle?

Ja und nein Grundsätzlich sind wir durch die Automatisierungsmöglichkeiten der Plattformanbieter eingeschränkt. Das Tippen auf ein Android-Gerät funktioniert genauso wie auf einem iOS-Gerät. Die Ausführung anderer Befehle kann jedoch variieren. Appium-Entwickler versuchen nach Möglichkeit, dasselbe Treiberverhalten auf verschiedenen Plattformen zu gewährleisten.

Kann ich von einem Treiber zum anderen wechseln und damit rechnen, dass meine Tests fehlschlagen?

Ja und nein Es hängt alles davon ab, über welche Fahrer wir sprechen. Einer der Vorteile von Appium besteht darin, dass Sie von einem Automatisierungstool zu einem anderen wechseln können (z. B. von UiAutomator2 zu Espresso), ohne auf eine fertige Testsuite verzichten zu müssen. Trotzdem sollten Sie langsam und methodisch migrieren und sicherstellen, dass alles so abläuft, wie Sie es erwarten. Das Appium-Team veröffentlicht manchmal Migrationsrichtlinien für den Wechsel von einem Treiber zu einem anderen. Beachten Sie diese Richtlinien, bevor Sie mit der Migration beginnen.

Kann ich meinen eigenen Treiber erstellen?

Ja Viele haben dies bereits getan, insbesondere Jason Huggins und ich (auf der AppiumConf 2019). Es gibt jedoch auch andere proprietäre Treiber, z. B. den hbbtv- Treiber von Christian Broman .

Ändern sich die Treiber in Appium 2.0?

Das ist eine sehr gute Frage! Einer der negativen Aspekte des Appium-Treibersystems ist, dass alle in der Appium-Server-Abhängigkeit enthalten sind. Wir bemühen uns jedoch, sicherzustellen, dass die Treiber in einem weniger zusammenhängenden System vorhanden sind, in dem Sie auswählen können, welche spezifischen Treiber mit Appium verwendet werden sollen. Wenn Sie dieses Problem lösen, müssen Sie den alten UiAutomator2-Treiber nicht installieren und seine Abhängigkeiten verbinden, wenn Sie Appium nur zum Ausführen von iOS-Tests verwenden. (Wissen Sie, dass es einen Vorschlag für die Entwicklung von Appium 2.0 gibt ?)

Ich hoffe, dieser Artikel hat Ihnen geholfen. Ich werde mich freuen, in den Kommentaren über Ihre Erfahrungen mit Appium-Treibern zu lesen.

Source: https://habr.com/ru/post/de480490/


All Articles