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.

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.
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
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.
Starta kommandotolken med Ruby på Windows 10 och skriv kommandot nedan.
ruby -v
Konsolen skriver ut den installerade tolkversionen, som visas nedan.
Del III) Ladda ner och installera Android
Steg 1) Ladda ner Android Studio at https://developer.android.com/studio
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.
Del IV) Installera Calabash Android
Steg 1) Skriv gem install calabash-android i konsolen. Installationen startar och tar lite tid att slutföra.
Steg 2) När installationen är klar Skriv in calabash-android version
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.
- *.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.
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.
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 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
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.
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.
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.
















