Calabash Android Veiledning for testverktøy

⚡ Smart oppsummering

Calabash er et rammeverk for aksepttesting med åpen kildekode som driver reelle brukergrensesnitthandlinger på Android og iOS-applikasjoner, ved bruk av vanlig engelsk Cucumber scenarier støttet av Ruby-trinndefinisjoner og en testserver på enhetssiden.

  • 🔸 Definisjon: Calabash automatiserer trykk, tekstinntasting og påstander mot native og hybride mobilapplikasjoner på ekte enheter og emulatorer.
  • ☑️ Språkstabel: Scenarier skrives i Gherkin-funksjonsfiler, og matchingmetodene ligger i Ruby-filer i step_definitions.
  • BDD-grunnlag: Atferdsdrevet utvikling lar bedriftseiere, utviklere og testere bli enige om atferd før det finnes et skript.
  • 🧪 Oppsettsrekkefølge: Java JDK, deretter Ruby, deretter Android Studio, deretter calabash-android-edelstenen, bekreftet med en version-kommando.
  • 🛠️ Utførelsesflyt: Si opp APK-en, bygg testserveren, koble til en enhet, spør etter lokatorer, og kjør deretter funksjonsfilene.
  • 📊 Nåværende status: Calabash er arkivert og ikke vedlikeholdt, så nye prosjekter velger vanligvis Appium, Espresso eller XCUITest i stedet.

Calabash veiledning for testverktøy Android viser Cucumber funksjonsfiler som driver en mobilapplikasjon

Hva er Calabash?

Calabash er en åpen kildekode-aksept Testing rammeverk som lar deg skrive og utføre tester for iOS og Android Apps.

Det er et automatisert brukergrensesnittrammeverk som tillater skriving av tester i Ruby ved hjelp av Cucumber.

Calabash fungerer ved å aktivere automatiske brukergrensesnittinteraksjoner i en mobilapplikasjon, for eksempel å trykke på knapper, legge inn tekst, validere svar osv. Den kan konfigureres til å kjøre på forskjellige Android og iOS-enheter, som gir tilbakemelding og validering i sanntid.

⚠️ Versjonsmerknad: Microsoft avsluttet sine bidrag til Calabash etter den endelige iOS 11 og Android 8 utgivelser, og Calabash-Android-depotet beskriver seg nå som et prosjekt som ser etter en vedlikeholder. Gjennomgangen nedenfor er bevart som skrevet, og de moderne erstatningene er dekket i siste avsnitt.

Hvorfor Calabash Automasjon?

Før du installerer noe som helst, er det lurt å veie hva rammeverket gir tilbake mot hva det koster å vedlikeholde.

Fordeler Ulemper
Det bidrar til å øke gjennomstrømming/produktivitet. Det kreves ferdigheter for å skrive automatiseringstestskriptene.
Forbedret kvalitet eller økt forutsigbarhet av kvalitet Feilsøking av testskriptet er et stort problem.
Forbedret robusthet (konsistens) av prosesser eller produkter. Testvedlikehold er kostbart i tilfelle avspillingsmetoder.
Økt konsistens i produksjonen og redusere lønnskostnader og utgifter Vedlikehold av testdatafiler er vanskelig hvis testskriptet tester flere skjermer

Calabash og BDD

  • Calabash is Atferdsdrevet utvikling (BDD)Det er det samme som Testdrevet utvikling (TDD), men i stedet for å lage tester for å beskrive formen på API-er, spesifiseres applikasjonsatferd.
  • BDD er en prosess der flere interessenter veier inn for å skape en felles forståelse av hva som må bygges.
  • BDD er nyttig med å bygge riktig programvare og designe fra bedriftseierens perspektiv.

Diagrammet nedenfor viser hvordan en Calabash Suiten er lagdelt, fra den forretningslesbare funksjonsfilen øverst og ned til enhetsinteraksjonen nederst.

Calabash BDD-lagdiagram som viser funksjonsfiler, trinndefinisjoner og enhetsautomatiseringslaget

Hvordan du installerer Calabash

Calabash on Windows trenger fire forkunnskaper installert i rekkefølge. Fullfør hver del fullstendig før du starter den neste, fordi calabash-android-edelstenen sjekker etter Ruby og Android SDK under installasjon.

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

Del II) Last ned og installer Ruby.

Trinn 1) Last ned Ruby fra URL https://rubyinstaller.org/downloads

Nedlastingssiden for RubyInstaller viser hvilke Ruby-versjoner som er tilgjengelige for Windows

Trinn 2) Åpne exe-filen, følg instruksjonene på skjermen. Når installasjonen er fullført, vil du se følgende skjermbilde. Klikk på Fullfør.

Skjermbildet for fullføring av Ruby-oppsettveiviseren med Fullfør-knappen uthevet

Start ledeteksten med Ruby på Windows 10 og skriv under Kommando.

ruby -v

Konsollen skriver ut den installerte tolkversjonen, som vist nedenfor.

Kommandoprompt med Ruby som viser det installerte Ruby-versjonsnummeret

Del III) Last ned og installer Android

Trinn 1) Last ned Android Studio at https://developer.android.com/studio

Android Studio oppsettveiviseren kjører på Windows under installasjonen

Trinn 2) Åpne exe-filen, følg instruksjonene på skjermen og fullfør installasjonen. Klikk på fullfør-knappen når du er ferdig.

Android Studio Skjermbildet for ferdig installasjon med fullføringsknappen

Del IV) Installer Calabash Android

Trinn 1) Skriv inn gem install calabash-android i konsollen. Installasjonen starter og vil ta litt tid å fullføre.

Konsollutdata mens calabash-android-perlen og dens avhengigheter er installert

Trinn 2) Når installasjonen er fullført, skriv inn calabash-android-versjon

Konsoll bekrefter den installerte Calabash-Android Gem-versjonen

Arbeide med Calabash

Når gem-en er installert, er neste oppgave å finne rammeverksmappen og forstå skjelettet den leveres med.

Åpne mappen "calabash-android-0.9.0". Den ligger på banen C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Mappenavnene vil endres synkront med rubin/calabash-versjonen du installerer på maskinen din.

Åpne funksjonsskjelettmappen. Se opp for dette grunnleggende rammeverket.

Calabash funksjonsskjelettmappe som inneholder support- og step_definitions-katalogene

  • *.feature-filen inneholder scenarier som vi skal automatisere.
  • Metoden som brukes av funksjonsfilen er skrevet i *.rb-filen i "step_definitions"-mappen.
  • Vanlige metoder, miljøoppsett, appinstallasjon og kroker bør plasseres i "støtte"-mappen.

Si opp og bygg appen

  • Calabash-android resign *.apk
  • Calabash-android-bygg *.apk

Når du trekker deg, erstattes utviklersignaturen med en feilsøkingsnøkkel, slik at testserveren kan instrumentere applikasjonen, og byggetrinnet produserer den testserveren, slik konsollutdataene nedenfor viser.

Konsollutdata fra kommandoene «calabash-android resign» og «build» som produserer en testserver

Koble enheten til systemet /Åpne emulatoren

Sjekk enheten som er tilkoblet. Skriv kommando

adb devices

Listen over tilkoblede enheter skal vises. Hvis enheten mangler, må du følge trinnene for USB-feilsøking og paring i ADB-tilkoblingsveiledning løse de fleste sakene.

adb-enheter-kommandoliste som viser en vedlagt Android enhet etter serienummer

Hvordan finne elementsøkeren

  • Åpne konsollen. Skriv inn kommandoen.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Over kommandoen start appen på enheten. For å finne elementlokalisatoren, bruk følgende kommando.
    query "*"

Dette vil vise alle elementlokaliseringsfunksjonene på gjeldende skjerm. Testere som foretrekker en visuell inspektør kan kryssjekke det samme hierarkiet med uiautomatorviewer.

Calabash konsollutskrift av det forespurte elementtreet for gjeldende applikasjonsskjermbilde

Calabash Prosjektstruktur og forhåndsdefinerte trinn

I stedet for å kopiere gem-mappen for hånd, kan rammeverket generere et fungerende prosjekt for deg. Å kjøre generatoren i prosjektkatalogen din oppretter standarden Cucumber oppsett som hver Calabash suiten forventer.

calabash-android gen

Det genererte treet skiller de tre aspektene ved en BDD-suite:

  • funksjoner/ — Sylteagurkscenarioene, ett .trekk fil per brukerreise.
  • funksjoner/trinn_definisjoner/ — Ruby-metodene som samsvarer med hver Gherkin-linje, inkludert den medfølgende calabash_steps.rb.
  • funksjoner/støtte/ — miljøkonfigurasjon og krokene som installerer, starter og slår av applikasjonen rundt ethvert scenario.

Den medfølgende filen calabash_steps.rb er viktigere enn den først ser ut til. Den leverer et stort sett med ferdige engelske trinn, slik at et første scenario kan trykke på knapper, skrive inn tekst og bruke synlige strenger før en enkelt tilpasset metode er skrevet. Tilpassede trinn er bare nødvendige når en reise vokser ut av disse ferdiglagde frasene.

To innstillinger på prosjektnivå er verdt å kjenne til tidlig. Skjermbilder havner som standard i gjeldende arbeidsmappe, og miljøvariabelen SCREENSHOT_PATH omdirigerer dem andre steder, noe som holder byggeartefakter ryddige på en delt maskin. Samhandling med systemdialoger eller et annet program krever UIAutomator2-backend, startet med start_test_server_in_background(with_uiautomator: true).

Opprette nye skript

Åpne funksjonsfilen og følgende linjer

Innloggingsfunksjonsfil åpnet i et redigeringsprogram som viser trinnene for Gherkin-scenarioet

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"

Åpne trinndefinisjonsfilen og definer metoden til *.rb-fil.

Filkart for definisjon av Ruby-trinnping en sylteagurklinje til en Calabash elementforespørsel

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

Utfør testprosjektet

For å utføre testprosjektet, bruk kommandoen nedenfor

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

Cucumber skriver ut hvert trinn etter hvert som det utføres, og en forbipasserende kjøring avsluttes med scenario- og trinntotalene som vises her.

Calabash kjør utdata som viser hvert Gherkin-trinn som utføres mot enheten

Calabash konsollsammendrag rapporterer beståtte scenarier og antall skritt etter utførelse

Felles Calabash Feil og hvordan du fikser dem

De fleste feil ved første kjøring kommer fra pakkingen og tillatelsesreglene som testserveren er avhengig av, ikke fra selve scenarioet. Tabellen nedenfor kartlegger symptomene som rapporteres oftest i forhold til den dokumenterte årsaken.

Symptom Sannsynlig årsak og løsning
Applikasjonen krasjer i det øyeblikket en test starter APK-en mangler android.permission.INTERNET, som testserveren trenger for å godta kommandoer. Deklarer tillatelsen i AndroidManifest.xml og gjenoppbygg.
Knapper og tekst nekter å reagere på trykk Ingen targetSdkVersion er deklarert. Legg til en uses-sdk-oppføring som navngir SDK-nivået applikasjonen ble bygget mot.
Testserveren kan ikke koble til applikasjonen APK-en ble ikke avsluttet med feilsøkingsnøkkelen. Kjør resign-kommandoen, og bygg den deretter på nytt før du kjører den.
Ingen enheter er oppført under kjøring USB-feilsøking er av, eller driveren mangler. Bekreft først at serienummeret vises i utdataene for adb-enheter.
Trinn mislykkes med en udefinert trinnfeil Ordlyden i Gherkin samsvarer ikke med noen regulære uttrykk i step_definitions. Kopier det foreslåtte kodeutdraget. Cucumber trykker og implementerer det.

To manifestoppføringer fikser de to første radene. Legg dem til før du avslutter APK-en.

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

Tidsavbruddsfeil er vanligvis miljømessige snarere enn funksjonelle. En treg emulator, en kald programstart eller en bakgrunnssynkronisering kan alle skyve en skjerm forbi wait_for-vinduet, så øk tidsavbruddet før du skriver om et trinn som faktisk var riktig.

Is Calabash Fortsatt vedlikeholdt? Alternativer for moderne mobiltesting

Calabash er ikke lenger aktivt utviklet. Microsoft sluttet å bidra etter å ha støttet den endelige iOS 11 og Android 8 utgivelser, og prosjektet er nå en arkivert åpen kildekodebase uten vedlikeholder. Eksisterende pakker kjører fortsatt på eldre enheter, men nytt arbeid bør starte på et støttet rammeverk.

Rammeverk Plattform Passer best til
Appium Android og iOS Plattformtverrgående suiter i Java, Python, Ruby eller JavaScript, og den nærmeste erstatningen for en Calabash team.
Espresso Android bare Raske tester i prosessen skrevet i Kotlin eller Java av applikasjonsutviklerne selv.
XCUIT-test Bare iOS Innfødt Xcode suiter, den støttede etterfølgeren til den pensjonerte UIAutomation-rammeverket.
Maestro og Detox Android og iOS Nyere åpen kildekode-prosjekter rettet mot flakresistens og React Native-applikasjoner.

Selve BDD-vanen overføres pent. Gherkin-funksjonsfiler forblir nøyaktig som de er, og bare trinndefinisjonsdelene endres, fordi Cucumber sitter over driveren i stedet for inni den. Team som migrerer beholder vanligvis funksjonsfilene, skriver om Ruby-trinnene mot Appium, og gjenbruke det samme mobil testing enhetsmatrise og automatiseringstesting rørledningen de allerede kjører.

Spørsmål og svar

Ja. En separat calabash-ios-perle kjørte iOS-applikasjoner gjennom den samme Ruby-en og Cucumber lag. Den deler avskrivningsstatusen til Android perle, så nåværende iOS-arbeid er bedre tjent med XCUITest eller Appium.

Maskinlæringsmodeller reparerer nå ødelagte lokatorer automatisk, flagger ustabile scenarier ved å sammenligne kjørehistorikk og rapporterer klyngekrasj slik at de mest skadelige feilene dukker opp først. Vurderingen av hva som skal hevdes ligger fortsatt hos testeren.

Copilot utarbeider de repeterende delene godt, for eksempel en wait_for-blokkomslagping en elementforespørsel. Den kan ikke kjenne applikasjonens elementidentifikatorer, så behandle hvert genererte trinn som et utkast for å verifisere mot et live spørreresultat.

Cucumber er den generiske BDD-løperen som leser Gherkin og kaller Ruby-metoder. Calabash er det mobile automatiseringsbiblioteket disse metodene kaller. Cucumber bestemmer hva som kjører; Calabash utfører tappingen, tekstinntastingen og påstanden.

Skjermbilder skrives som standard til gjeldende arbeidsmappe, navngitt sekvensielt per kjøring. Hvis du angir miljøvariabelen SCREENSHOT_PATH før kjøringen, omdirigeres de til en valgt mappe, som holder kontinuerlige integrasjonsartefakter atskilt fra kildekoden.

Nei. Calabash instrumenter en kompilert APK, og det er derfor resign-trinnet finnes. Kildetilgang hjelper deg med å legge til stabile elementidentifikatorer, men selve rammeverket trenger bare en bygging det har lov til å resignere og instrumentere.

Ja. Fordi utførelsen er et enkelt kommandolinjekall, kan enhver byggeserver kalle den etter at APK-en er produsert. Jenkins jobben avslutter vanligvis APK-en, starter en emulator, kjører de merkede funksjonene og arkiverer rapportene.

Behold Gherkin-funksjonsfilene uendret og omskriv bare trinndefinisjonsdelene mot Appium klient. Elementspørringer blir lokaliseringsstrategier, og krokene som installerte applikasjonen blir ønskede funksjoner i driveroppsettet.

Oppsummer dette innlegget med: