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.

  • ๐Ÿ”ธ Definition: Calabash Automatisiert Tippvorgรคnge, Texteingaben und Assertions gegenรผber nativen und hybriden mobilen Anwendungen auf realen Gerรคten und Emulatoren.
  • โ˜‘๏ธ Sprachstapel: Szenarien werden in Gherkin-Feature-Dateien geschrieben, und die passenden Methoden befinden sich in Ruby-Dateien innerhalb von step_definitions.
  • โœ… BDD-Grundlagen: Behavior Driven Development ermรถglicht es Geschรคftsinhabern, Entwicklern und Testern, sich auf ein Verhalten zu einigen, bevor รผberhaupt ein Skript existiert.
  • ๐Ÿงช Einrichtungsreihenfolge: Java JDK, dann Ruby, dann Android Studiodann das calabash-android Gem, verifiziert mit einem Versionsbefehl.
  • ๏ธ Ausfรผhrungsablauf: Signieren Sie die APK neu, erstellen Sie den Testserver, verbinden Sie ein Gerรคt, fragen Sie die Locators ab und fรผhren Sie dann die Feature-Dateien aus.
  • ๐Ÿ“Š Aktueller Status: Calabash wird archiviert und nicht mehr gepflegt, daher wรคhlen neue Projekte im Allgemeinen Appium, Espresso oder stattdessen XCUITest.

Calabash Tutorial fรผr Testwerkzeuge Android zeigt Cucumber Funktionsdateien, die eine mobile Anwendung steuern

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.

Calabash BDD-Schichtdiagramm mit Feature-Dateien, Schrittdefinitionen und der Gerรคteautomatisierungsschicht

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

RubyInstaller-Downloadseite mit Auflistung der verfรผgbaren Ruby-Versionen fรผr Windows

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โ€œ.

Abschlussbildschirm des Ruby-Setup-Assistenten mit hervorgehobener Schaltflรคche โ€ž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.

Eingabeaufforderung mit Ruby, die die installierte Ruby-Versionsnummer anzeigt

Teil III) Herunterladen und installieren Android

Schritt 1) โ€‹โ€‹Herunterladen Android Studio at https://developer.android.com/studio

Android Studio Einrichtungsassistent wird ausgefรผhrt Windows wรคhrend der Installation

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โ€œ.

Android Studio Die Installation wurde abgeschlossen, nachdem der Bildschirm mit der Schaltflรคche โ€žFertigโ€œ angezeigt wurde.

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.

Konsolenausgabe wรคhrend der Installation des calabash-android Gems und seiner Abhรคngigkeiten

Schritt 2) Nach Abschluss der Installation geben Sie calabash-android version ein

Konsolenausgabe bestรคtigt die installierte Version des calabash-android Gems

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.

Calabash Feature-Skelett-Ordner mit den Verzeichnissen support und step_definitions

  • 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.

Konsolenausgabe der Befehle `calabash-android resign` und `build`, die einen Testserver erzeugen

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.

adb devices-Befehlsliste (siehe Anhang) Android Gerรคt anhand der Seriennummer

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 Die Konsole gibt den abgefragten Elementbaum fรผr den aktuellen Anwendungsbildschirm aus.

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

Die Anmeldefunktionsdatei wurde in einem Editor geรถffnet und zeigt die Schritte des Gherkin-Szenarios.

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.

Ruby-Schrittdefinitionsdatei-Zuordnungping eine Gurkenlinie zu einem Calabash Elementabfrage

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.

Calabash Die Ausgabe des Programms zeigt jeden Gherkin-Schritt, der auf dem Gerรคt ausgefรผhrt wird.

Calabash Konsolenzusammenfassung mit Bericht รผber bestandene Szenarien und Schrittanzahl nach der Ausfรผhrung

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.

Hรคufig gestellte Fragen

Ja. Ein separates Calabash-iOS-Gem steuerte iOS-Anwendungen รผber dasselbe Ruby und Cucumber Schicht. Sie teilt den veralteten Status der Android Daher eignet sich XCUITest besser fรผr aktuelle iOS-Arbeiten. Appium.

Maschinelle Lernmodelle reparieren nun automatisch defekte Locatoren, kennzeichnen instabile Szenarien durch den Vergleich von Ausfรผhrungsverlรคufen und gruppieren Absturzberichte, sodass die gravierendsten Fehler zuerst auftreten. Die Entscheidung, was zu testen ist, liegt weiterhin beim Tester.

Copilot erstellt die sich wiederholenden Teile gut, wie zum Beispiel einen wait_for-Block-Wrap.ping Eine Elementabfrage. Da sie die Elementbezeichner Ihrer Anwendung nicht kennt, sollten Sie jeden generierten Schritt als Entwurf betrachten und mit einem Live-Abfrageergebnis vergleichen.

Cucumber ist der generische BDD-Runner, der Gherkin liest und Ruby-Methoden aufruft. Calabash ist die mobile Automatisierungsbibliothek, die von diesen Methoden aufgerufen wird. Cucumber entscheidet, was lรคuft; Calabash fรผhrt das Tippen, die Texteingabe und die Bestรคtigung aus.

Screenshots werden standardmรครŸig im aktuellen Arbeitsverzeichnis gespeichert und bei jedem Durchlauf fortlaufend benannt. Durch Setzen der Umgebungsvariablen SCREENSHOT_PATH vor dem Durchlauf werden sie in einen ausgewรคhlten Ordner umgeleitet, wodurch die Artefakte der kontinuierlichen Integration vom Quellcode getrennt bleiben.

Nein. Calabash Das Framework instrumentiert eine kompilierte APK, weshalb der Resign-Schritt erforderlich ist. Der Quellcodezugriff ermรถglicht das Hinzufรผgen stabiler Elementbezeichner, das Framework selbst benรถtigt jedoch nur einen Build, den es resignieren und instrumentieren darf.

Ja. Da die Ausfรผhrung รผber einen einzigen Befehlszeilenaufruf erfolgt, kann jeder Build-Server diesen nach der Erstellung der APK-Datei aufrufen. Jenkins Der Job beendet typischerweise die APK-Datei, startet einen Emulator, fรผhrt die markierten Funktionen aus und archiviert die Berichte.

Die Gherkin-Feature-Dateien bleiben unverรคndert, und nur die Schrittdefinitionskรถrper werden neu geschrieben. Appium Client. Elementabfragen werden zu Locatorstrategien, und die Hooks, die die Anwendung installiert haben, werden zu gewรผnschten Funktionen in der Treiberkonfiguration.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: