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.
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.
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
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.
Start kommandoprompt med Ruby tændt Windows 10 & skriv under Kommando.
ruby -v
Konsollen udskriver den installerede fortolkerversion, som vist nedenfor.
Del III) Download og installer Android
Trin 1) Download Android Studio at https://developer.android.com/studio
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.
Del IV) Installer Calabash Android
Trin 1) Skriv gem install calabash-android i konsollen. Installationen starter og vil tage lidt tid at fuldføre.
Trin 2) Når installationen er færdig, skal du indtaste calabash-android 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.
- *.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.
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.
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 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
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.
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.
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.
















