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.
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.
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
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.
Start ledeteksten med Ruby på Windows 10 og skriv under Kommando.
ruby -v
Konsollen skriver ut den installerte tolkversjonen, som vist nedenfor.
Del III) Last ned og installer Android
Trinn 1) Last ned Android Studio at https://developer.android.com/studio
Trinn 2) Åpne exe-filen, følg instruksjonene på skjermen og fullfør installasjonen. Klikk på fullfør-knappen når du er ferdig.
Del IV) Installer Calabash Android
Trinn 1) Skriv inn gem install calabash-android i konsollen. Installasjonen starter og vil ta litt tid å fullføre.
Trinn 2) Når installasjonen er fullført, skriv inn calabash-android-versjon
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.
- *.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.
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.
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 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
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.
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.
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.
















