Calabash Android Tutorial zum Testtool
⚡ Intelligente Zusammenfassung
Calabash ist ein Open-Source-Akzeptanztest-Framework, das echte Benutzeroberflächenaktionen auslöst. Android und iOS-Anwendungen, in einfacher Sprache Cucumber Szenarien, die durch Ruby-Schrittdefinitionen und einen geräteseitigen Testserver unterstützt werden.

Was ist Calabash?
Calabash ist eine Open-Source-Akzeptanz Tests Framework, mit dem Sie Tests für iOS schreiben und ausführen können Android Apps.
Es handelt sich um ein automatisiertes Benutzeroberflächen-Framework, das es ermöglicht, Tests in Ruby zu schreiben. Cucumber.
Calabash Es ermöglicht automatische UI-Interaktionen innerhalb einer mobilen Anwendung, wie z. B. das Drücken von Schaltflächen, die Texteingabe, die Validierung von Antworten usw. Es kann für die Ausführung auf verschiedenen Systemen konfiguriert werden. Android und iOS-Geräte, die Echtzeit-Feedback und -Validierungen bieten.
⚠️ Versionshinweis: Microsoft beendete seine Beiträge zu Calabash nach der endgültigen iOS 11 und Android 8 Veröffentlichungen und die calabash-android Repository Das Projekt wird nun als solches beschrieben, das einen Betreuer sucht. Die unten stehende Anleitung bleibt unverändert, die modernen Alternativen werden im letzten Abschnitt erläutert.
Warum Calabash Automatisierung?
Vor der Installation von irgendetwas ist es hilfreich, abzuwägen, welchen Nutzen das System bringt und welche Wartungskosten anfallen.
| Vorteile | Nachteile |
| Es hilft, den Durchsatz/die Produktivität zu steigern. | Zum Schreiben der Automatisierungstestskripte sind Kenntnisse erforderlich. |
| Verbesserte Qualität oder erhöhte Vorhersagbarkeit der Qualität | Das Debuggen des Testskripts ist ein großes Problem. |
| Verbesserte Robustheit (Konsistenz) von Prozessen oder Produkten. | Bei Wiedergabemethoden ist die Testwartung kostspielig. |
| Erhöhte Konstanz der Produktion und Reduzierung der Arbeitskosten und -ausgaben | Die Pflege von Testdatendateien ist schwierig, wenn das Testskript mehr Bildschirme testet |
Calabash und BDD
- Calabash is Verhaltensgesteuerte Entwicklung (BDD)Es ist dasselbe wie Testgetriebene Entwicklung (TDD)Anstatt jedoch Tests zu erstellen, die die Struktur von APIs beschreiben, wird das Anwendungsverhalten spezifiziert.
- BDD ist ein Prozess, bei dem mehrere Interessengruppen zusammenwirken, um ein gemeinsames Verständnis darüber zu schaffen, was aufgebaut werden muss.
- BDD ist hilfreich beim Erstellen der richtigen Software und beim Entwerfen aus der Sicht des Geschäftsinhabers.
Das untenstehende Diagramm zeigt, wie ein Calabash Die Suite ist geschichtet, von der für Geschäftsanwender lesbaren Funktionsdatei ganz oben bis hin zur Geräteinteraktion ganz unten.
Wie installiert man Calabash
Calabash on Windows Es werden vier Voraussetzungen benötigt, die in der vorgegebenen Reihenfolge installiert werden müssen. Schließen Sie jeden Schritt vollständig ab, bevor Sie mit dem nächsten beginnen, da das Calabash-Android-Gem Ruby und die Android-Bibliothek überprüft. Android SDK während der Installation.
Teil I) Installation Java JDK – Lesen Sie diese Anleitung – /install-java.html
Teil II) Laden Sie Ruby herunter und installieren Sie es.
Schritt 1) Laden Sie Ruby von der URL https://rubyinstaller.org/downloads
Schritt 2) Öffnen Sie die .exe-Datei und folgen Sie den Anweisungen auf dem Bildschirm. Nach Abschluss der Installation wird der folgende Bildschirm angezeigt. Klicken Sie auf „Fertigstellen“.
Starten Sie die Eingabeaufforderung mit aktiviertem Ruby Windows 10 & geben Sie unten den Befehl ein.
ruby -v
Die Konsole gibt die installierte Interpreterversion aus, wie unten dargestellt.
Teil III) Herunterladen und installieren Android
Schritt 1) Herunterladen Android Studio at https://developer.android.com/studio
Schritt 2) Öffnen Sie die EXE-Datei, folgen Sie den Anweisungen auf dem Bildschirm und schließen Sie die Installation ab. Klicken Sie anschließend auf die Schaltfläche „Fertigstellen“.
Teil IV) Installieren Calabash Android
Schritt 1) Geben Sie in der Konsole „gem install calabash-android“ ein. Die Installation wird gestartet und kann einige Zeit dauern.
Schritt 2) Nach Abschluss der Installation geben Sie calabash-android version ein
In Zusammenarbeit mit Calabash
Nach der Installation des Gems besteht die nächste Aufgabe darin, den Framework-Ordner zu finden und das darin enthaltene Grundgerüst zu verstehen.
Öffnen Sie den Ordner „calabash-android-0.9.0“. Er befindet sich unter dem Pfad C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Die Ordnernamen ändern sich synchron mit der Ruby-/Calabash-Version, die Sie auf Ihrem Computer installieren.
Öffnen Sie den Feature-Gerüstordner. Achten Sie auf dieses Grundgerüst.
- Die *.feature-Datei enthält Szenarien, die wir automatisieren werden.
- Die von der Feature-Datei verwendete Methode wird in die *.rb-Datei im Ordner „step_definitions“ geschrieben.
- Gängige Methoden, Umgebungseinrichtung, App-Installation und Hooks sollten im Ordner „support“ abgelegt werden.
Zurücktreten und die App erstellen
- Calabash-android resign *.apk
- Calabash-android build *.apk
Durch das erneute Signieren wird die Entwicklersignatur durch einen Debug-Schlüssel ersetzt, damit der Testserver die Anwendung instrumentieren kann. Der Build-Schritt erzeugt dann diesen Testserver, wie die untenstehende Konsolenausgabe zeigt.
Schließen Sie das Gerät an das System an / Öffnen Sie den Emulator
Überprüfen Sie das angeschlossene Gerät. Geben Sie den Befehl ein
adb devices
Die Liste der angeschlossenen Geräte sollte angezeigt werden. Falls das Gerät fehlt, führen Sie die Schritte zum USB-Debugging und zur Kopplung durch. ADB-Verbindungsanleitung Die meisten Fälle werden gelöst.
So finden Sie den Element-Locator
- Öffnen Sie die Konsole. Geben Sie den Befehl ein.
calabash-android console "APK Path" start_test_server_in_background
- Der obige Befehl startet die App auf dem Gerät. Um den Element-Locator zu finden, verwenden Sie den folgenden Befehl.
query "*"
Dadurch werden alle Element-Locators auf dem aktuellen Bildschirm angezeigt. Tester, die einen visuellen Inspektor bevorzugen, können dieselbe Hierarchie mit folgenden Tools überprüfen: uiautomatorviewer.
Calabash Projektstruktur und vordefinierte Schritte
Anstatt den Gem-Ordner manuell zu kopieren, kann das Framework ein funktionierendes Projekt für Sie generieren. Durch Ausführen des Generators in Ihrem Projektverzeichnis wird der Standard erstellt. Cucumber Layout, das jedes Calabash Suite erwartet.
calabash-android gen
Der generierte Baum trennt die drei Belange einer BDD-Suite:
- Eigenschaften/ — die Gherkin-Szenarien, eines .Besonderheit Datei pro Benutzerreise.
- features/step_definitions/ — die Ruby-Methoden, die zu jeder Gherkin-Zeile passen, einschließlich der mitgelieferten calabash_steps.rb.
- Funktionen/Unterstützung/ — Umgebungskonfiguration und die Hooks, die die Anwendung in jedem Szenario installieren, starten und beenden.
Die mitgelieferte Datei calabash_steps.rb ist wichtiger als man zunächst vermuten würde. Sie enthält eine Vielzahl vorgefertigter englischer Schritte, sodass in einem ersten Szenario bereits Schaltflächen gedrückt, Text eingegeben und sichtbare Zeichenketten überprüft werden können, bevor auch nur eine einzige eigene Methode geschrieben werden muss. Eigene Schritte sind erst dann erforderlich, wenn ein Ablauf über diese vorgefertigten Phrasen hinausgeht.
Zwei Projekteinstellungen sind besonders wichtig. Screenshots werden standardmäßig im aktuellen Arbeitsverzeichnis gespeichert. Die Umgebungsvariable `SCREENSHOT_PATH` leitet sie jedoch an einen anderen Ort um, wodurch die Build-Artefakte auf einem gemeinsam genutzten Rechner übersichtlich bleiben. Für die Interaktion mit Systemdialogen oder anderen Anwendungen ist das UIAutomator2-Backend erforderlich, das mit `start_test_server_in_background(with_uiautomator: true)` gestartet wird.
Neue Skripte erstellen
Öffnen Sie die Feature-Datei und die folgenden Zeilen
Feature: Login feature Scenario: As a valid user I can log into my app When I press "Login" And I enter my username And I enter my password Then I see "Welcome to coolest app ever"
Öffnen Sie die Schrittdefinitionsdatei und definieren Sie die Methode in der *.rb-Datei.
Given /^I am on the login windows$/ do wait_for(:timeout =>100) { element_exists("* id:'loginInput;")} check_element_exists("* id:'loginInput;") end
Führen Sie das Testprojekt aus
Um das Testprojekt auszuführen, verwenden Sie den folgenden Befehl
calabash-android run "APK Path" "feature file Path" --tags "tag name"
Cucumber Gibt jeden Schritt während der Ausführung aus, und ein erfolgreicher Durchlauf endet mit dem hier angezeigten Szenario und der Gesamtzahl der Schritte.
gemeinsam Calabash Fehler und wie man sie behebt
Die meisten Fehler beim ersten Start sind auf die Paketierungs- und Berechtigungsregeln zurückzuführen, von denen der Testserver abhängt, nicht auf das Szenario selbst. Die folgende Tabelle ordnet die am häufigsten gemeldeten Symptome ihren dokumentierten Ursachen zu.
| Symptom | Wahrscheinliche Ursache und Lösung |
| Die Anwendung stürzt ab, sobald ein Test startet. | Die APK-Datei enthält nicht die Berechtigung android.permission.INTERNET, die der Testserver benötigt, um Befehle entgegenzunehmen. Deklarieren Sie die Berechtigung in der Datei. AndroidManifest.xml und neu erstellen. |
| Schaltflächen und Text reagieren nicht auf Berührungen. | Es wurde keine targetSdkVersion angegeben. Fügen Sie einen uses-sdk-Eintrag hinzu, der die SDK-Version angibt, für die die Anwendung erstellt wurde. |
| Der Testserver kann keine Verbindung zur Anwendung herstellen. | Die APK-Datei wurde nicht mit dem Debug-Schlüssel neu signiert. Führen Sie den Befehl zum Neusignieren aus und erstellen Sie die Datei anschließend erneut, bevor Sie sie ausführen. |
| Zur Laufzeit sind keine Geräte aufgelistet. | USB-Debugging ist deaktiviert oder der Treiber fehlt. Prüfen Sie zuerst, ob die Seriennummer in der Ausgabe von „adb devices“ angezeigt wird. |
| Schritte schlagen mit einem undefinierten Schrittfehler fehl | Der Gherkin-Formulierungscode stimmt mit keinem regulären Ausdruck in step_definitions überein. Kopieren Sie den vorgeschlagenen Codeausschnitt. Cucumber druckt es aus und setzt es um. |
Zwei Manifesteinträge korrigieren die ersten beiden Zeilen. Fügen Sie diese vor dem erneuten Signieren der APK hinzu.
<uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:targetSdkVersion="SDK_VERSION" />
Timeout-Fehler sind meist umweltbedingt und nicht funktional bedingt. Ein langsamer Emulator, ein Kaltstart der Anwendung oder eine Hintergrundsynchronisierung können dazu führen, dass ein Bildschirm das Wartezeitfenster überschreitet. Erhöhen Sie daher das Timeout, bevor Sie einen eigentlich korrekten Schritt wiederholen.
Is Calabash Noch gepflegt? Alternativen für moderne mobile Tests
Calabash wird nicht mehr aktiv weiterentwickelt. Microsoft Die Mitarbeit wurde nach der Unterstützung der letzten iOS 11-Version eingestellt. Android Nach acht Releases ist das Projekt nun eine archivierte Open-Source-Codebasis ohne Betreuer. Bestehende Testversionen laufen zwar noch auf älteren Geräten, die Weiterentwicklung sollte aber auf einem unterstützten Framework beginnen.
| Unser Ansatz | Plattform | am besten geeignet für |
| Appium | Android und iOS | Plattformübergreifende Suiten in Java, Python, Ruby oder JavaSkript und der nächstliegende Ersatz für ein Calabash Team. |
| Espresso | Android einzige | Schnelle In-Process-Tests, geschrieben in Kotlin oder Java von den Anwendungsentwicklern selbst. |
| XCUITest | Nur für iOS | Ureinwohner Xcode Suiten, der unterstützte Nachfolger des ausgemusterten UIAutomation-Framework. |
| Maestro und Detox | Android und iOS | Neuere Open-Source-Projekte mit dem Ziel, Ausfallsicherheit und React Native-Anwendungen zu gewährleisten. |
Die BDD-Gewohnheit selbst lässt sich problemlos übertragen. Gherkin-Feature-Dateien bleiben exakt unverändert, und nur die Schrittdefinitionen ändern sich, weil Cucumber Es befindet sich oberhalb des Treibers, nicht darin. Teams, die migrieren, behalten normalerweise die Feature-Dateien bei und schreiben die Ruby-Schritte entsprechend um. Appiumund wiederverwenden mobile Tests Gerätematrix und Automatisierungstests Die Pipeline betreiben sie bereits.
















