Calabash Android Handledning för testverktyg

⚡ Smart sammanfattning

Calabash är ett ramverk för acceptanstestning med öppen källkod som driver verkliga användargränssnittsåtgärder på Android och iOS-applikationer, med hjälp av vanlig engelska Cucumber scenarier som stöds av Ruby-stegdefinitioner och en testserver på enhetssidan.

  • 🔸 Definition: Calabash automatiserar tryckningar, textinmatning och assertions mot inbyggda och hybrida mobilapplikationer på riktiga enheter och emulatorer.
  • ☑️ Språkstack: Scenarier skrivs i Gherkin-funktionsfiler, och matchningsmetoderna finns i Ruby-filer inuti step_definitions.
  • BDD-grund: Beteendedriven utveckling låter företagare, utvecklare och testare komma överens om beteende innan något skript finns.
  • 🧪 Inställningsordning: Java JDK, sedan Ruby, sedan Android Studio, sedan calabash-android-pärlan, verifierad med ett versionskommando.
  • 🛠️ Exekveringsflöde: Avsluta APK:en, bygg testservern, anslut en enhet, fråga efter lokaliseringsverktyg och kör sedan funktionsfilerna.
  • 📊 Aktuell status: Calabash är arkiverad och ounderhållen, så nya projekt väljer i allmänhet Appium, Espresso eller XCUITest istället.

Calabash handledning för testverktyg Android visar Cucumber funktionsfiler som driver en mobilapplikation

Vad är Calabash?

Calabash är ett godkännande av öppen källkod Testning ramverk som låter dig skriva och utföra tester för iOS och Android Apps.

Det är ett automatiserat användargränssnittsramverk som gör det möjligt att skriva tester i Ruby med hjälp av Cucumber.

Calabash fungerar genom att aktivera automatiska UI-interaktioner i en mobilapplikation, såsom att trycka på knappar, mata in text, validera svar etc. Den kan konfigureras att köras på olika Android och iOS-enheter, som ger feedback och valideringar i realtid.

⚠️ Versionsnotering: Microsoft avslutade sina bidrag till Calabash efter den sista iOS 11 och Android 8 utgåvor, och Calabash-Android-arkivet beskriver sig nu som ett projekt som söker en underhållare. Genomgången nedan bevaras som skriven, och de moderna ersättningarna tas upp i det sista avsnittet.

Varför Calabash Automatisering?

Innan man installerar något är det bra att väga vad ramverket ger tillbaka mot vad det kostar att underhålla.

Fördelar Nackdelar
Det hjälper till att öka genomströmningen/produktiviteten. Kunskaper krävs för att skriva automationstestskripten.
Förbättrad kvalitet eller ökad förutsägbarhet av kvalitet Att felsöka testskriptet är ett stort problem.
Förbättrad robusthet (konsistens) hos processer eller produkter. Testunderhåll är kostsamt vid uppspelningsmetoder.
Ökad konsekvens i produktionen och minska arbetskostnader och utgifter Underhåll av testdatafiler är svårt om testskriptet testar fler skärmar

Calabash och BDD

  • Calabash is Beteendedriven utveckling (BDD)Det är samma som Testdriven utveckling (TDD), men istället för att skapa tester för att beskriva formen på API:er specificeras applikationsbeteendet.
  • BDD är en process där flera intressenter väger in för att skapa en gemensam förståelse för vad som måste byggas.
  • BDD är till hjälp för att bygga rätt programvara och designa ur företagsägarens perspektiv.

Diagrammet nedan visar hur en Calabash Sviten är uppdelad i flera lager, från den affärsläsbara funktionsfilen högst upp till enhetsinteraktionen längst ner.

Calabash BDD-lagerdiagram som visar funktionsfiler, stegdefinitioner och enhetsautomationslagret

Hur man installerar Calabash

Calabash on Windows behöver fyra förkunskapskrav installerade i ordning. Slutför varje del helt innan du börjar med nästa, eftersom calabash-android-juvelen letar efter Ruby och Android SDK under installationen.

Del I) Installera Java JDK – Se den här guiden – /install-java.html

Del II) Ladda ner och installera Ruby.

Steg 1) Ladda ner Ruby från URL https://rubyinstaller.org/downloads

Nedladdningssida för RubyInstaller som listar tillgängliga Ruby-versioner för Windows

Steg 2) Öppna exe-filen och följ instruktionerna på skärmen. När installationen är klar ser du följande skärm. Klicka på Slutför.

Skärmen för slutförandet av Ruby-installationsguiden med knappen Slutför markerad

Starta kommandotolken med Ruby på Windows 10 och skriv kommandot nedan.

ruby -v

Konsolen skriver ut den installerade tolkversionen, som visas nedan.

Kommandotolken med Ruby som visar det installerade Ruby-versionsnumret

Del III) Ladda ner och installera Android

Steg 1) Ladda ner Android Studio at https://developer.android.com/studio

Android Studio installationsguiden körs på Windows under installationen

Steg 2) Öppna exe-filen, följ instruktionerna på skärmen och slutför installationen. Klicka på knappen Slutför när du är klar.

Android Studio Skärmen för installationen är klar med knappen Slutför

Del IV) Installera Calabash Android

Steg 1) Skriv gem install calabash-android i konsolen. Installationen startar och tar lite tid att slutföra.

Konsolutdata medan calabash-android-gemen och dess beroenden är installerade

Steg 2) När installationen är klar Skriv in calabash-android version

Konsolen bekräftar den installerade versionen av Calabash-Android Gem

Att arbeta med Calabash

När gemen är installerad är nästa uppgift att hitta ramverkets mapp och förstå skelettet den levereras med.

Öppna mappen "calabash-android-0.9.0". Den finns på sökväg C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Mappnamnen kommer att ändras i takt med ruby/calabash-versionen du installerar på din maskin.

Öppna mappen funktionsskelett. Håll utkik efter detta grundläggande ramverk.

Calabash feature skeleton-mapp som innehåller support- och step_definitions-katalogerna

  • *.feature-filen innehåller scenarier som vi ska automatisera.
  • Metoden som används av funktionsfilen skrivs i *.rb-filen i mappen “step_definitions”.
  • Vanliga metoder, miljöinställningar, appinstallation och krokar bör placeras i "support"-mappen.

Avgå och bygg appen

  • Calabash-android avgå *.apk
  • Calabash-android build *.apk

Att avgå ersätter utvecklarens signatur med en felsökningsnyckel så att testservern kan instrumentera applikationen, och byggsteget producerar den testservern, vilket konsolutdata nedan visar.

Konsolutdata från kommandona "calabash-android resign" och "build" som producerar en testserver.

Anslut enheten till systemet /Öppna emulatorn

Kontrollera att enheten är ansluten. Skriv kommando

adb devices

Listan över anslutna enheter bör visas. Om enheten saknas, USB-felsöknings- och parkopplingsstegen i ADB-anslutningsguide lösa de flesta fall.

adb devices-kommandolista med en bifogad Android enhet efter serienummer

Hur man hittar elementsökaren

  • Öppna konsolen. Skriv kommandot.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Ovan kommandot starta appen på enheten. För att hitta elementlokaliseraren använd följande kommando.
    query "*"

Detta visar alla elementlokaliseringar på den aktuella skärmen. Testare som föredrar en visuell inspektör kan dubbelkolla samma hierarki med uiautomatorviewer.

Calabash konsolutskrift av det efterfrågade elementträdet för den aktuella applikationsskärmen

Calabash Projektstruktur och fördefinierade steg

Istället för att kopiera gem-mappen manuellt kan ramverket generera ett fungerande projekt åt dig. Att köra generatorn i din projektkatalog skapar standarden Cucumber layout som varje Calabash sviten förväntar sig.

calabash-android gen

Det genererade trädet separerar de tre aspekterna av en BDD-svit:

  • drag/ — Gurka-scenarierna, ett .särdrag fil per användarresa.
  • funktioner/stegdefinitioner/ — Ruby-metoderna som matchar varje Gherkin-rad, inklusive den medföljande calabash_steps.rb.
  • funktioner/support/ — miljökonfiguration och de hookar som installerar, startar och stänger av applikationen i varje scenario.

Den medföljande filen calabash_steps.rb är viktigare än den först verkar. Den levererar en stor uppsättning färdiga engelska steg, så ett första scenario kan trycka på knappar, skriva in text och använda synliga strängar innan en enda anpassad metod skrivs. Anpassade steg behövs bara när en resa växer ur de där standardfraserna.

Två inställningar på projektnivå är värda att känna till tidigt. Skärmdumpar hamnar som standard i den aktuella arbetskatalogen, och miljövariabeln SCREENSHOT_PATH omdirigerar dem någon annanstans, vilket håller byggartefakterna snygga på en delad maskin. Interaktion med systemdialogrutor eller andra program kräver UIAutomator2-backend, startad med start_test_server_in_background(with_uiautomator: true).

Skapa nya skript

Öppna funktionsfilen och följande rader

Inloggningsfunktionsfil öppnad i en redigerare som visar stegen i Ghurkin-scenariot

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"

Öppna stegdefinitionsfilen och definiera metoden till *.rb-fil.

Ruby stegdefinitionsfilkartaping en gurkalinje till en Calabash elementfråga

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

Utför testprojektet

För att utföra testprojektet, använd kommandot nedan

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

Cucumber skriver ut varje steg allt eftersom det körs, och en passerande körning avslutas med det scenario och de totala stegen som visas här.

Calabash kör utdata som visar varje Gherkin-steg som körs mot enheten

Calabash konsolsammanfattning som rapporterar godkända scenarier och stegantal efter körning

Gemensam Calabash Fel och hur man åtgärdar dem

De flesta fel vid första körningen kommer från paketeringen och behörighetsreglerna som testservern är beroende av, inte från själva scenariot. Tabellen nedan mappar de symtom som rapporteras oftast till deras dokumenterade orsak.

Symptom Trolig orsak och åtgärd
Applikationen kraschar i samma ögonblick som ett test startar APK-filen saknar android.permission.INTERNET, vilket testservern behöver för att acceptera kommandon. Deklarera behörigheten i AndroidManifest.xml och ombyggnation.
Knappar och text vägrar att svara på tryckningar Ingen targetSdkVersion har deklarerats. Lägg till en uses-sdk-post som namnger SDK-nivån som applikationen byggdes mot.
Testservern kan inte ansluta till applikationen APK-filen avslutades inte med felsökningsnyckeln. Kör kommandot resign och bygg sedan om den innan du kör den.
Inga enheter listas vid körning USB-felsökning är avstängd eller så saknas en drivrutin. Kontrollera först att serienumret visas i utdata för adb-enheter.
Steg misslyckas med ett odefinierat stegfel Ordalydelsen i Gherkin matchar inte något reguljärt uttryck i step_definitions. Kopiera det föreslagna kodavsnittet. Cucumber trycker och implementerar det.

Två manifestposter fixar de två första raderna. Lägg till dem innan du avslutar APK:n.

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

Timeout-fel är oftast miljömässiga snarare än funktionella. En långsam emulator, en kall programstart eller en bakgrundssynkronisering kan alla få en skärm att passera wait_for-fönstret, så öka timeout-tiden innan du skriver om ett steg som faktiskt var korrekt.

Is Calabash Fortfarande underhållen? Alternativ för modern mobiltestning

Calabash utvecklas inte längre aktivt. Microsoft slutade bidra efter att ha stöttat den slutliga iOS 11 och Android 8 utgåvor, och projektet är nu en arkiverad öppen källkodsbas utan en utvecklare. Befintliga programsviter körs fortfarande på äldre enheter, men nytt arbete bör påbörjas på ett ramverk som stöds.

Ramverk plattform Passar bäst till
Appium Android och iOS Plattformsoberoende sviter i Java, Python, Ruby eller JavaScript, och den närmaste ersättningen för en Calabash lag.
Espresso Android endast Snabba tester under processen skrivna i Kotlin eller Java av applikationsutvecklarna själva.
XCUIT Test Endast iOS Native Xcode sviter, den stödda efterträdaren till den pensionerade UIAutomation-ramverket.
Maestro och Detox Android och iOS Nyare öppen källkodsprojekt inriktade på flake-resistens och React Native-applikationer.

Själva BDD-vanan överförs smidigt. Gherkin-funktionsfilerna förblir exakt som de är, och endast stegdefinitionskropparna ändras, eftersom Cucumber sitter ovanför drivrutinen snarare än inuti den. Team som migrerar behåller vanligtvis funktionsfilerna, skriver om Ruby-stegen mot Appiumoch återanvända samma mobil testning enhetsmatris och automatiseringstestning pipeline de redan kör.

Vanliga frågor

Ja. En separat calabash-ios-juvel körde iOS-applikationer genom samma Ruby och Cucumber lager. Den delar utfasningsstatusen med Android pärla, så nuvarande iOS-arbete fungerar bättre med XCUITest eller Appium.

Maskininlärningsmodeller reparerar nu trasiga positionerare automatiskt, flaggar instabila scenarier genom att jämföra körhistorik och rapporterar klusterkrascher så att de mest skadliga defekterna kommer fram först. Bedömningen om vad som ska hävdas ligger fortfarande hos testaren.

Copilot utarbetar de repetitiva delarna bra, såsom en wait_for-blockomslagping en elementfråga. Den kan inte känna till din applikations elementidentifierare, så behandla varje genererat steg som ett utkast för att verifiera mot ett live-frågeresultat.

Cucumber är den generiska BDD-löparen som läser Gherkin och anropar Ruby-metoder. Calabash är det mobila automatiseringsbiblioteket som dessa metoder anropar. Cucumber bestämmer vad som körs; Calabash utför tryckningen, textinmatningen och assertionen.

Skärmdumpar skrivs som standard till den aktuella arbetskatalogen, namngivna sekventiellt per körning. Om du ställer in miljövariabeln SCREENSHOT_PATH före körningen omdirigeras de till en vald mapp, vilket håller kontinuerliga integrationsartefakter separerade från källkoden.

Nej. Calabash instruments en kompilerad APK, vilket är anledningen till att resign-steget finns. Källkodsåtkomst hjälper dig att lägga till stabila elementidentifierare, men själva ramverket behöver bara en build för att det ska kunna resignera och instrumentera.

Ja. Eftersom körningen är ett enda kommandoradsanrop kan vilken byggserver som helst anropa den efter att APK:en har skapats. Jenkins jobbet avslutar vanligtvis APK:n, startar en emulator, kör de taggade funktionerna och arkiverar rapporterna.

Behåll Ghurkin-funktionsfilerna oförändrade och skriv endast om stegdefinitionskropparna mot Appium klient. Elementfrågor blir lokaliseringsstrategier, och de hookar som installerade applikationen blir önskade funktioner i drivrutinsinstallationen.

Sammanfatta detta inlägg med: