Calabash Android Vejledning til testværktøj

⚡ Smart opsummering

Calabash er et open source-framework for accepttestning, der driver reelle brugergrænsefladehandlinger på Android og iOS-applikationer, der bruger almindeligt engelsk Cucumber scenarier bakket op af Ruby-trindefinitioner og en enhedssidet testserver.

  • 🔸 Definition: Calabash automatiserer tryk, tekstindtastning og assertions mod native og hybride mobilapplikationer på rigtige enheder og emulatorer.
  • ☑️ Sprogstak: Scenarier er skrevet i Gherkin-featurefiler, og matchingmetoderne findes i Ruby-filer inde i step_definitions.
  • BDD-grundlag: Adfærdsdrevet udvikling giver virksomhedsejere, udviklere og testere mulighed for at blive enige om adfærd, før der findes et script.
  • 🧪 Opsætningsrækkefølge: Java JDK, så Ruby, og så Android Studio, derefter calabash-android-perlen, verificeret med en versionskommando.
  • 🛠️ Udførelsesflow: Opgiv APK'en, byg testserveren, tilslut en enhed, forespørg på locators, og kør derefter funktionsfilerne.
  • 📊 Nuværende status: Calabash er arkiveret og ikke vedligeholdt, så nye projekter vælger generelt Appium, Espresso eller XCUITest i stedet.

Calabash vejledning til testværktøj Android viser Cucumber funktionsfiler, der driver en mobilapplikation

Hvad er Calabash?

Calabash er en open source-accept Test framework, der giver dig mulighed for at skrive og udføre test til iOS og Android Apps.

Det er et automatiseret brugergrænsefladeframework, der tillader skrivning af tests i Ruby ved hjælp af Cucumber.

Calabash fungerer ved at aktivere automatiske brugergrænsefladeinteraktioner i en mobilapplikation, såsom at trykke på knapper, indtaste tekst, validere svar osv. Den kan konfigureres til at køre på forskellige Android og iOS-enheder, som giver feedback og valideringer i realtid.

⚠️ Versionsnotat: Microsoft afsluttede sine bidrag til Calabash efter den sidste iOS 11 og Android 8 udgivelser, og Calabash-Android-arkivet beskriver nu sig selv som et projekt, der søger en vedligeholder. Gennemgangen nedenfor er bevaret som skrevet, og de moderne erstatninger er dækket i sidste afsnit.

Hvorfor Calabash Automatisering?

Før man installerer noget, er det en god idé at afveje, hvad frameworket giver tilbage, mod hvad det koster at vedligeholde.

Fordele Ulemper
Det hjælper med at øge gennemløbet/produktiviteten. Der kræves færdigheder for at skrive automatiseringstestscripts.
Forbedret kvalitet eller øget forudsigelighed af kvalitet Fejlretning af testscriptet er et stort problem.
Forbedret robusthed (konsistens) af processer eller produkter. Testvedligeholdelse er dyr i tilfælde af afspilningsmetoder.
Øget konsistens i output og reducere lønomkostninger og udgifter Vedligeholdelse af testdatafiler er vanskelig, hvis testscriptet tester flere skærme

Calabash og BDD

  • Calabash is Adfærdsdrevet udvikling (BDD)Det er det samme som Testdrevet udvikling (TDD), men i stedet for at oprette tests, der beskriver formen af ​​API'er, specificeres applikationsadfærd.
  • BDD er en proces, hvor flere interessenter vejer ind for at skabe en fælles forståelse af, hvad der skal bygges.
  • BDD er behjælpelig med at bygge den rigtige software og designe fra virksomhedsejerens perspektiv.

Diagrammet nedenfor viser, hvordan en Calabash Suiten er lagdelt, fra den forretningslæsbare funktionsfil øverst og ned til enhedsinteraktionen nederst.

Calabash BDD-lagdiagram, der viser funktionsfiler, trindefinitioner og enhedsautomationslaget

Sådan installeres Calabash

Calabash on Windows kræver fire forudsætninger installeret i rækkefølge. Færdiggør hver del fuldstændigt, før du starter den næste, fordi calabash-android-perlen tjekker for Ruby og Android SDK'et under installationen.

Del I) Installer Java JDK – Se denne vejledning – /install-java.html

Del II) Download og installer Ruby.

Trin 1) Download Ruby fra URL https://rubyinstaller.org/downloads

RubyInstaller downloadside med en liste over tilgængelige Ruby-versioner Windows

Trin 2) Åbn exe-filen, og følg instruktionerne på skærmen. Når installationen er færdig, vil du se følgende skærmbillede. Klik på Udfør.

Skærmbilledet for færdiggørelse af Ruby-opsætningsguiden med knappen Udfør fremhævet

Start kommandoprompt med Ruby tændt Windows 10 & skriv under Kommando.

ruby -v

Konsollen udskriver den installerede fortolkerversion, som vist nedenfor.

Kommandoprompt med Ruby, der viser det installerede Ruby-versionsnummer

Del III) Download og installer Android

Trin 1) Download Android Studio at https://developer.android.com/studio

Android Studio opsætningsguiden kører på Windows under installationen

Trin 2) Åbn exe-filen, følg instruktionerne på skærmen, og fuldfør installationen. Klik på knappen Udfør, når du er færdig.

Android Studio Installationsskærmen er færdig med knappen "Afslut"

Del IV) Installer Calabash Android

Trin 1) Skriv gem install calabash-android i konsollen. Installationen starter og vil tage lidt tid at fuldføre.

Konsoloutput mens calabash-android gem og dens afhængigheder er installeret

Trin 2) Når installationen er færdig, skal du indtaste calabash-android version

Konsol bekræfter den installerede Calabash-Android Gem-version

Arbejde med Calabash

Når gem'en er installeret, er den næste opgave at finde framework-mappen og forstå det skelett, den leveres med.

Åbn mappen "calabash-android-0.9.0". Den ligger på stien C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Mappenavnene ændres synkront med rubin-/calabash-versionen, du installerer på din maskine.

Åbn mappen feature skelet. Hold øje med denne grundlæggende ramme.

Calabash feature skelet-mappe, der indeholder support- og step_definitions-mapperne

  • *.feature-filen indeholder scenarier, som vi skal automatisere.
  • Metoden, der bruges af feature-filen, er skrevet i *.rb-filen i mappen "step_definitions".
  • Almindelige metoder, miljøopsætning, app-installation og kroge skal placeres i "support"-mappen.

Sig op og byg appen

  • Calabash-android opsigelse *.apk
  • Calabash-android build *.apk

Når man opsiger programmet, erstattes udviklerens signatur med en fejlfindingsnøgle, så testserveren kan instrumentere applikationen, og byggetrinnet producerer den pågældende testserver, som konsoloutputtet nedenfor viser.

Konsoloutput fra calabash-android resign- og build-kommandoerne, der producerer en testserver.

Tilslut enheden til systemet /Åbn emulatoren

Tjek den tilsluttede enhed. Skriv kommando

adb devices

Listen over tilsluttede enheder bør vises. Hvis enheden mangler, skal du følge trinnene til USB-fejlfinding og parring i ADB-forbindelsesvejledning løse de fleste sager.

adb-enheder-kommandoliste, der er vedhæftet Android enhed efter serienummer

Sådan finder du Element Locator

  • Åbn konsollen. Skriv kommandoen.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Ovenstående kommando start appen på enheden. Brug følgende kommando for at finde elementlokalisatoren.
    query "*"

Dette viser alle elementlokaliseringsfunktioner på den aktuelle skærm. Testere, der foretrækker en visuel inspektør, kan krydstjekke det samme hierarki med uiautomatorviewer.

Calabash konsol udskriver det forespurgte elementtræ for den aktuelle applikationsskærm

Calabash Projektstruktur og foruddefinerede trin

I stedet for at kopiere gem-mappen manuelt, kan frameworket generere et fungerende projekt for dig. Ved at køre generatoren i din projektmappe oprettes standarden Cucumber layout, som hver Calabash suiten forventer.

calabash-android gen

Det genererede træ adskiller de tre aspekter af en BDD-suite:

  • funktioner/ — Gherkin-scenarierne, et .funktion fil pr. brugerrejse.
  • funktioner/trin_definitioner/ — Ruby-metoderne, der matcher hver Gherkin-linje, inklusive den medfølgende calabash_steps.rb.
  • funktioner/support/ — miljøkonfiguration og de hooks, der installerer, starter og lukker applikationen i ethvert scenarie.

Den medfølgende calabash_steps.rb betyder mere, end den først ser ud til. Den leverer et stort sæt færdige engelske trin, så et første scenarie kan trykke på knapper, indtaste tekst og bruge synlige strenge, før en enkelt brugerdefineret metode er skrevet. Brugerdefinerede trin er kun nødvendige, når en rejse vokser ud af disse færdiglavede sætninger.

To indstillinger på projektniveau er værd at kende tidligt. Skærmbilleder lander som standard i den aktuelle arbejdsmappe, og miljøvariablen SCREENSHOT_PATH omdirigerer dem et andet sted hen, hvilket holder byggeartefakter pæne på en delt maskine. Interaktion med systemdialoger eller et andet program kræver UIAutomator2-backend, startet med start_test_server_in_background(with_uiautomator: true).

Oprettelse af nye scripts

Åbn feature-filen og følgende linjer

Login-funktionsfil åbnet i en editor, der viser trinene i Gherkin-scenariet

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"

Åbn Step Definition-filen & Definer metoden til *.rb-fil.

Kort over filen med definition af Ruby-trinping en sylteagurklinje til en Calabash elementforespørgsel

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Udfør testprojektet

For at udføre testprojektet, brug kommandoen nedenfor

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber udskriver hvert trin, mens det udføres, og en forbipasserende kørsel slutter med det scenarie og de trintotaler, der vises her.

Calabash Kør output, der viser hvert Gherkin-trin, der udføres mod enheden

Calabash Konsoloversigtsrapportering af gennemførte scenarier og trinantal efter udførelse

Fælles Calabash Fejl og hvordan man retter dem

De fleste fejl i første kørsel stammer fra den pakke og de tilladelsesregler, som testserveren er afhængig af, ikke fra selve scenariet. Tabellen nedenfor viser de symptomer, der oftest rapporteres, i forhold til deres dokumenterede årsag.

Symptom Sandsynlig årsag og løsning
Applikationen går ned i det øjeblik, en test starter APK'en mangler android.permission.INTERNET, som testserveren skal bruge for at acceptere kommandoer. Angiv tilladelsen i AndroidManifest.xml og genopbyg.
Knapper og tekst nægter at reagere på tryk Der er ikke deklareret nogen targetSdkVersion. Tilføj en uses-sdk-post, der navngiver det SDK-niveau, som applikationen blev bygget mod.
Testserveren kan ikke oprette forbindelse til applikationen APK'en blev ikke afsluttet med fejlfindingsnøglen. Kør kommandoen "resign", og byg den igen, før du kører den.
Ingen enheder er angivet på kørselstidspunktet USB-fejlfinding er slået fra, eller driveren mangler. Bekræft først, at serienummeret vises i outputtet for adb-enheder.
Trin mislykkes med en udefineret trinfejl Ordlyden i Gherkin matcher ikke noget regulært udtryk i step_definitions. Kopiér det foreslåede kodestykke Cucumber udskriver og implementerer det.

To manifestposter retter de første to rækker. Tilføj dem, før du afslutter APK'en.

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:targetSdkVersion="SDK_VERSION" />

Timeout-fejl er normalt miljømæssige snarere end funktionelle. En langsom emulator, en kold programstart eller en baggrundssynkronisering kan alle skubbe en skærm forbi wait_for-vinduet, så øg timeout'en, før du omskriver et trin, der faktisk var korrekt.

Is Calabash Stadig vedligeholdt? Alternativer til moderne mobiltestning

Calabash er ikke længere aktivt udviklet. Microsoft stoppede med at bidrage efter at have understøttet den endelige iOS 11 og Android 8 udgivelser, og projektet er nu en arkiveret open source-kodebase uden en vedligeholder. Eksisterende pakker kører stadig på ældre enheder, men nyt arbejde bør starte på et understøttet framework.

Framework perron Bedst egnet til
Appium Android og iOS Cross-platform suiter i Java, Python, Ruby eller JavaScript, og den nærmeste erstatning for en Calabash hold.
Espresso Android kun Hurtige tests i processen skrevet i Kotlin eller Java af applikationsudviklerne selv.
XCUIT Test Kun iOS Native Xcode suiter, den støttede efterfølger til den pensionerede UIAutomation-framework.
Maestro og Detox Android og iOS Nyere open source-projekter rettet mod flake-resistens og React Native-applikationer.

Selve BDD-vanen overføres problemfrit. Gherkin-funktionsfiler forbliver præcis som de er, og kun trindefinitionsdelene ændres, fordi Cucumber sidder over driveren i stedet for indeni den. Teams, der migrerer, beholder normalt funktionsfilerne, omskriver Ruby-trinnene mod Appiumog genbruge det samme mobil test enhedsmatrix og automatiseringstest rørledning, de allerede kører.

Ofte Stillede Spørgsmål

Ja. En separat calabash-ios-perle kørte iOS-applikationer gennem den samme Ruby og Cucumber lag. Det deler udfasningsstatus med Android perle, så nuværende iOS-arbejde er bedre tjent med XCUITest eller Appium.

Maskinlæringsmodeller reparerer nu automatisk defekte lokatorer, markerer ustabile scenarier ved at sammenligne kørselshistorikker og rapporterer om klyngenedbrud, så de mest skadelige defekter dukker op først. Vurderingen af, hvad der skal hævdes, tilhører stadig testeren.

Copilot udarbejder de gentagne dele godt, såsom en wait_for-blokindpakningping en elementforespørgsel. Den kan ikke kende din applikations element-id'er, så behandl hvert genererede trin som et udkast for at verificere det mod et live forespørgselsresultat.

Cucumber er den generiske BDD-løber, der læser Gherkin og kalder Ruby-metoder. Calabash er det mobile automatiseringsbibliotek, som disse metoder kalder. Cucumber bestemmer, hvad der kører; Calabash udfører trykket, tekstindtastningen og assertionen.

Skærmbilleder skrives som standard til den aktuelle arbejdsmappe og navngives sekventielt pr. kørsel. Hvis miljøvariablen SCREENSHOT_PATH angives før kørslen, omdirigeres de til en valgt mappe, hvilket holder artefakter fra kontinuerlig integration adskilt fra kildekoden.

Nej. Calabash instrumenter en kompileret APK, hvilket er grunden til, at resign-trinnet findes. Kildeadgang hjælper dig med at tilføje stabile element-id'er, men selve frameworket behøver kun en build, det har tilladelse til at resignere og instrumentere.

Ja. Da udførelsen er et enkelt kommandolinjekald, kan enhver build-server kalde den, efter at APK'en er produceret. Jenkins Jobbet afslutter typisk APK'en, starter en emulator, kører de taggede funktioner og arkiverer rapporterne.

Behold Gherkin-funktionsfilerne uændrede, og omskriv kun trindefinitionsdelene mod Appium klient. Elementforespørgsler bliver til lokaliseringsstrategier, og de hooks, der installerede applikationen, bliver ønskede funktioner i driveropsætningen.

Opsummer dette indlæg med: