Die Testautomatisierung hilft bei der gleichzeitigen Lösung mehrerer Probleme - auch bei mobilen Anwendungen. Anstatt routinemäßige arbeitsintensive Verfahren manuell durchzuführen, können Spezialisten einen erheblichen Teil davon an die Frameworks delegieren. Die Automatisierung vereinfacht das Testen und beschleunigt das Testen von Regressionen. Außerdem können zuvor unzugängliche Testtypen verwendet werden.
Wir werden verschiedene Tools vergleichen, die sich auf dem Markt etabliert haben und weiterentwickeln. Dieses Wissen hilft Ihnen bei der Auswahl der Lösung zum Testen einer bestimmten mobilen Anwendung.

Es ist unwahrscheinlich, dass dieser Artikel Fachleuten neue Horizonte eröffnet. Er kann jedoch für Anfänger nützlich sein, die die Grundlagen des mobilen Testens erlernen möchten, und in gewissem Maße für mittelständische Spezialisten.
Werkzeugklassifizierung
Das erste, worauf Sie aufbauen sollten, ist die Plattform, auf der die Anwendung ausgeführt wird. Auf dieser Grundlage klassifizieren wir die Liste der Werkzeuge wie folgt:
AndroidiOSUniversal- Detox
- Appium
- Ranorex
- TestComplete Mobile
Testautomatisierung für Android-Anwendungen
UI Automator
Leistungsstarkes Testtool mit erweiterter externer Integration. Dies bedeutet, dass Sie mit diesem Framework nicht nur die Anwendung selbst testen können, sondern auch mit dem Betriebssystem und anderen Anwendungen „kommunizieren“ können. Aktivieren und deaktivieren Sie beispielsweise Wi-Fi und GPS, öffnen Sie das Einstellungsmenü während des Tests und führen Sie andere externe Interaktionen durch.
Der Zweck von UI Automator ist das Black-Box-Testen. Dies bedeutet, dass die Analyse von der Position eines externen Benutzers aus ohne Zugriff auf den Code durchgeführt wird.
Zu den Hauptmerkmalen gehören:
- UI Automator Viewer zum Verfolgen und Analysieren von Komponenten, die während des Tests auf dem Bildschirm angezeigt werden. Es enthält Informationen zu Elementen und ihren Eigenschaften, wodurch es einfacher wird, relevantere Tests zu erstellen.
- API zum Abrufen von Informationen zum Status des Geräts und zum Ausführen von Prozessen auf dem Gerät.
- UI Automator-APIs für plattformübergreifende Tests.
Link zur Dokumentation .
Espresso
Ein leichteres Tool als UI Automator, das nicht für die Interaktion mit externen Anwendungen geeignet ist, aber zum Testen einer White-Box mit Zugriff auf den Quellcode einer bestimmten Anwendung oder zum Testen einer Gray-Box mit geeignet ist die Zugriff auf einige interne Prozesse und Strukturen hat.
Espresso zeichnet sich jedoch durch seine leistungsstarke API
https://github.com/hamcrest aus . Die Benutzeroberfläche fügt praktische Methoden zum Überprüfen von Autotests hinzu, zum Beispiel:
assert_that (1, less_or_equal (2)). Zum Testen der Webansicht werden
spezielle Methoden verwendet.
UI Automator und Espresso ergänzen sich gegenseitig und können in Kombination innerhalb desselben Projekts verwendet werden.
Link zur Dokumentation .
Testautomatisierung für iOS-Anwendungen
XCUITest
Ein Tool zum Black-Box-Testen ohne Zugriff auf den Anwendungscode. Es funktioniert nur mit nativen Produkten - leider funktionieren app-übergreifende Tests nicht.
Andererseits ist die native Natur des Frameworks unter dem Gesichtspunkt von Vorteil, dass bei Verwendung von XCUITest der Grad des gegenseitigen Verständnisses von Entwicklern und Testern auf einem viel höheren Niveau liegt als in Fällen, in denen die eine und die andere unterschiedliche Sprachen verwenden.
Eine nützliche Ergänzung ist der Testrekorder, mit dem Tests geschrieben werden können, indem Aktionen in der Anwendung aufgezeichnet werden, auch für diejenigen, die nicht mit dem Code arbeiten.
Mit dem Tool können Sie häufige Fehler und unnötige, für den Benutzer unzugängliche Manipulationen mit dem Code vermeiden. XCUITest hat jedoch auch einige Nachteile.
XCUITest arbeitet im Gegensatz zu Espresso in einem separaten Thread. Während des Tests müssen Sie auf das Erscheinen bestimmter Elemente und Parameter warten. Der aktuelle Status der Anwendung wird nicht gelesen, und Verzögerungen beim Aktualisieren von Daten können dazu führen, dass die angeforderten Elemente nicht erkannt werden können.
XCTest- und XCUITest-Dokumentation .
Earlgrey
EarlGreys Schwerpunkt liegt auf der Reproduktion der Benutzererfahrung. Solange die Elemente auf dem Bildschirm nicht visuell dargestellt werden, wird die Simulation der Arbeit mit der Anwendung nicht gestartet.
Gleichzeitig werden eine Reihe von Annehmlichkeiten und Vorteilen festgestellt. Zuallererst mögen Experten die Art und Weise, wie das Framework Anforderungen, Benutzeroberflächen und Threads synchronisiert. Es sind keine Wartezeiten und Wartezeiten erforderlich.
Zweitens wird, wie bereits erwähnt, besonderes Augenmerk auf die Verfolgung der Sichtbarkeit von Elementen gelegt. Das Tool verfügt über eine zusätzliche Ebene zum Überprüfen des Ladens der Benutzeroberfläche und reproduziert Benutzergesten - Wischen, Klicken - direkt auf der Ebene des Anwendungsereignisses.
Repository-Links:
github.com/google/EarlGrey und
google.imtqy.com/EarlGrey .
Universalwerkzeuge
Mit universellen Tools (oder „Mähdreschern“) können Sie Ihre Auswahl nicht nur auf Android oder iOS beschränken, sondern mit beiden Plattformen arbeiten.
Solche Tools eignen sich zum Testen von Anwendungen der folgenden Typen:
- Native Apps (native Apps) - direkt unter dem Android-, iOS- und Windows-SDK geschrieben.
- Mobile Web-Apps - Verfügbar über einen mobilen Browser wie Safari oder Chrome.
- Hybridanwendungen (Hybridanwendungen) - Der Benutzer arbeitet mit der Shell der Webanwendung, dh er interagiert mit Webinhalten über die Schnittstelle der nativen Anwendung.
Detox
Unserer Meinung nach eignet sich Detox für Anwendungen, die in React Native geschrieben wurden. Tests werden in JavaScript geschrieben, während iOS- und Android-Anwendungen aus demselben JavaScript-Code generiert werden und so ähnlich wie möglich sind. Auf diese Weise können Sie für beide Plattformen dieselben Tests verwenden.
Ein wichtiges Merkmal von Detox sind Gray-Box-Tests. In diesem Fall hat das Framework Zugriff auf interne Mechanismen, mit denen Sie das externe Verhalten der Anwendung mit dem korrelieren können, was auf einer tieferen Ebene geschieht.
Detox kann auf den Speicher zugreifen und laufende Prozesse verfolgen. Das Gray-Box-Prinzip hilft bei der Bekämpfung der Instabilität, was sich in der Tatsache widerspiegelt, dass bei End-to-End-Tests:
- Der Test kann auch ohne Änderungen im Code zufällig abstürzen.
- Die Ergebnisse sind nicht deterministisch - aufgrund der großen Anzahl heterogener Funktionen und Prozesse innerhalb der Anwendung können sich die Ergebnisse jedes Starts unvorhersehbar voneinander unterscheiden.
- Tester sind gezwungen, manuell zu synchronisieren, was zu einer Verringerung der Zuverlässigkeit und Qualität der Ergebnisse führt.
Seltsamerweise zeigt die „graue Box“ nicht nur eine bessere Stabilität, sondern auch eine höhere Geschwindigkeit als die „schwarze Box“. Wenn Sie alle Arten von Pausen vermeiden, kann waitUntil, grey-box 5-10 mal schneller sein.
Detox benötigt keinen WebDriver und arbeitet mit dem nativen Treiber über JSON. Es verwendet native Methoden direkt auf dem Gerät. In diesem Framework werden EarlGrey für iOS und Espresso für Android verwendet.
Das Framework funktioniert sowohl mit Emulatoren als auch mit physischen Geräten.
Link zur Dokumentation .
Appium
Der Vorteil von Appium besteht darin, dass Tests für jede Plattform mit einer einzigen API geschrieben werden können, ohne dass die Anwendung in eine spezielle Form konvertiert werden muss, die mit dem Framework kompatibel ist.
Beim Testen werden Frameworks von Anbietern verwendet - das heißt, Sie arbeiten mit der ursprünglichen Anwendung. Für Android 4.2+ wird UiAutomator / UiAutomator2 und für iOS 9.3+ - XCUITest verwendet. WebDriver (auch bekannt als Selenium WebDriver) wird als Framework-Framework verwendet.
Appium-Prinzipien:
- Sie müssen die Anwendung nicht neu kompilieren oder ändern, um das Testen zu automatisieren.
- Es ist nicht erforderlich, an eine Sprache oder ein Framework gebunden zu sein.
- Es ist nicht erforderlich, das Rad neu zu erfinden, wenn es um Automatisierungs-APIs geht.
Die Verwendung von Appium ist gerechtfertigt, wenn Sie ein Tool benötigen, um das Testen auf mehreren Plattformen gleichzeitig zu automatisieren. Dies ist nützlich, wenn Sie über Spezialisten mit Erfahrung im Testen von Webanwendungen verfügen, jedoch keine Erfahrung mit der Automatisierung des Testens mobiler Anwendungen haben.
Im Allgemeinen ist dies ein flexibles Tool, das an die Anforderungen des Projekts angepasst werden kann, ohne dass eine Anpassung an eine begrenzte Anzahl von Entwicklungssprachen erforderlich ist.
Link zur Dokumentation .
Ranorex
Bezahltes umfassendes Tool zum Testen von Desktop-, Mobil- und Webanwendungen. Es ermöglicht das Testen sowohl mit der Programmierung als auch ohne Verwendung von Skripten. Bietet die Möglichkeit, nicht nur über Emulatoren, sondern auch auf Live-Geräten zu testen.
Mit dem Tool können Sie Tests erstellen, konfigurieren und zentral verwalten. Sie können einen Test im Kontrollzentrum erstellen und in verschiedenen externen Umgebungen und auf beliebigen Geräten ausführen.
Einfache Integration in Ihre vorhandene CI-Umgebung: in Anwendungsverwaltungssysteme wie Jira und TFS sowie in Versionskontrollsysteme wie Git und SVN.
Ranorex bietet datengesteuerte Tests mit Daten, die aus SQL, CSV und Excel geladen werden.
Das Tool ist für absolut jedes Gerät geeignet und unterstützt parallele Tests an jedem von ihnen.
Es kombiniert alle drei Testansätze: Black-Box, White-Box und Gray-Box.
Link zur Dokumentation .
Test abgeschlossen
Bezahlte Umgebung zum Testen der Automatisierung von Mobil-, Web- und Desktopanwendungen. Es unterstützt Android und iOS sowie im Kontext der Anwendungstypen: native, Webanwendungen und Hybrid.
Das Tool konzentriert sich hauptsächlich auf Funktions- und Komponententests und bietet auch die Möglichkeit, viele andere Arten von Tests durchzuführen:
- Regression;
- Datengesteuertes Testen;
- Verteilte Tests und mehr.
In TestComplete gibt es einen Rekorder - darin werden Tests erstellt, indem Aktionen aufgezeichnet und Befehle im Editor festgelegt werden. Anschließend können sie entweder direkt im Tool selbst gestartet oder in Anwendungen von Drittanbietern exportiert werden.
Dieses Tool erkennt Objekte und Steuerelemente, indem es spezielle Befehle zum Emulieren der Benutzerinteraktion mit ihnen anbietet. Integriert in Jenkins, Git und Jira, sodass Sie kontinuierliche nahtlose Tests durchführen können.
Link zur Dokumentation .
Zusammenfassend
Beachten Sie beim Testen dieser oder jener mobilen Anwendung die oben aufgeführten Tools. Jeder von ihnen hat seine eigenen Eigenschaften und manchmal Einschränkungen.
Schauen wir uns ein Beispiel an. Wenn Sie vor der Aufgabe stehen, eine kleine Anwendung in kurzer Zeit zu testen, müssen Sie zunächst Faktoren wie die Art der getesteten Anwendung und die Erfahrung Ihrer Spezialisten berücksichtigen. Wenn ein Entwickler Tests schreibt, ist es besser, eine Muttersprache und ein Tool für seine Plattform auszuwählen (siehe Tabelle unten). Wenn die Tests von SDET-Spezialisten durchgeführt werden, die mit anderen Sprachen (Java, JavaScript, Python usw.) vertraut sind und mit Selenium gearbeitet haben, ist es zweckmäßig, Appium zu verwenden. Wenn das Team kein erfahrenes SDET enthält und QS-Spezialisten Tests schreiben, ist es besser, kostenpflichtige Frameworks zu wählen, da diese über Dienstprogramme zum Aufzeichnen von Tests und einen stabileren technischen Support verfügen als Open Source-Frameworks.
Aus unserer Praxis:
Wir haben mit einem Online-Shop gearbeitet, der zwei mobile Anwendungen hatte - auf iOS und Android. Um die Hauptbenutzerszenarien mit Tests zu testen, haben wir uns aus mehreren Gründen für Appium entschieden:
- plattformübergreifend die Möglichkeit, den Code teilweise wiederzuverwenden
- Geeignet für End-to-End-Tests, kann mit Web arbeiten
- die Präsenz von Spezialisten im Team, die sich des Selens bewusst sind, das als Hülle dieses Frameworks dient.
Infolgedessen hat Appium die Erwartungen voll erfüllt und Tests für iOS und Android erfolgreich durchgeführt. Es ist zu beachten, dass solche End-to-End-Tests mit Appium nicht bei jeder Zusammenführungsanforderung durchgeführt werden, da dies viel Zeit in Anspruch nimmt.Abschließend machen wir Sie auf eine Tabelle aufmerksam, die Ihnen bei der Auswahl des Tools für Ihr Projekt hilft. Es ist zu beachten, dass in einigen Fällen die Aufteilung in der Tabelle an Bedingungen geknüpft ist. Der Einfachheit halber wird eine Verallgemeinerung vorgenommen und nur die grundlegendsten Parameter angegeben. Die Testwerkzeuge werden ständig weiterentwickelt. Bei der Auswahl eines Frameworks ist es daher wichtig, die aktuelle Dokumentation zu überprüfen.

Vielen Dank für Ihre Aufmerksamkeit!