Calabash Android Handledning för testverktyg

⚡ Smart sammanfattning

Calabash is an open-source acceptance testing framework that drives real user interface actions on Android and iOS applications, using plain-English Cucumber scenarier som stöds av Ruby-stegdefinitioner och en testserver på enhetssidan.

  • 🔸 Definition: Calabash automates taps, text entry and assertions against native and hybrid mobile applications on real devices and emulators.
  • ☑️ Language stack: Scenarios are written in Gherkin feature files, and the matching methods live in Ruby files inside step_definitions.
  • BDD foundation: Behavior Driven Development lets business owners, developers and testers agree on behaviour before any script exists.
  • 🧪 Inställningsordning: Java JDK, sedan Ruby, sedan Android Studio, sedan calabash-android-pärlan, verifierad med ett versionskommando.
  • 🛠️ Exekveringsflöde: Resign the APK, build the test server, attach a device, query locators, then run the feature files.
  • 📊 Aktuell status: Calabash is archived and unmaintained, so new projects generally choose Appium, Espresso eller XCUITest istället.

Calabash handledning för testverktyg Android visar Cucumber feature files driving a mobile application

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 after the final iOS 11 and Android 8 releases, and the calabash-android repository 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). It is same as 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.

The diagram below shows how a Calabash suite is layered, from the business-readable feature file at the top down to the device interaction at the bottom.

Calabash BDD layer diagram showing feature files, step definitions and the device automation layer

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.

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

Del II) Ladda ner och installera Ruby.

Step 1) Download Ruby from the URL https://rubyinstaller.org/downloads

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

Step 2) Open the exe, follow the instructions on the screen. Once install is complete you will see the following screen. Click Finish.

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

The console prints the installed interpreter version, as shown below.

Command Prompt with Ruby displaying the installed Ruby version number

Del III) Ladda ner och installera Android

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

Android Studio setup wizard running on 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 installation finished screen with the finish button

Del IV) Installera Calabash Android

Step 1) In the console type gem install calabash-android. The install will start and will take some time to complete

Console output while the calabash-android gem and its dependencies are installed

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

Console confirming the installed calabash-android gem version

Att arbeta med Calabash

With the gem installed, the next task is to locate the framework folder and understand the skeleton it ships with.

Ö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 folder containing support and step_definitions directories

  • *.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

Attached devices list should be displayed. If the device is missing, the USB debugging and pairing steps in the ADB connect guide resolve most cases.

adb devices-kommandolista med en bifogad Android device by serial number

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 "*"

This will display all the element locators on the current screen. Testers who prefer a visual inspector can cross-check the same hierarchy with uiautomatorviewer.

Calabash console printing the queried element tree for the current application screen

Calabash Project Structure and Predefined Steps

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 that every Calabash sviten förväntar sig.

calabash-android gen

The generated tree separates the three concerns of a BDD suite:

  • 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/ — environment configuration and the hooks that install, launch and shut down the application around every 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 step definition file mapping a Gherkin line to a 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 prints each step as it executes, and a passing run ends with the scenario and step totals shown here.

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

Most first-run failures come from the packaging and permission rules the test server depends on, not from the scenario itself. The table below maps the symptoms reported most often to their documented cause.

Symptom Trolig orsak och åtgärd
The application crashes the instant a test starts The APK is missing android.permission.INTERNET, which the test server needs to accept commands. Declare the permission in AndroidManifest.xml and rebuild.
Knappar och text vägrar att svara på tryckningar No targetSdkVersion is declared. Add a uses-sdk entry naming the SDK level the application was built against.
Testservern kan inte ansluta till applikationen The APK was not resigned with the debug key. Run the resign command, then build again before running.
Inga enheter listas vid körning USB debugging is off or the driver is missing. Confirm the serial number appears in the adb devices output first.
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.

Two manifest entries fix the first two rows. Add them before resigning the APK.

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

Timeout failures are usually environmental rather than functional. A slow emulator, a cold application start or a background sync can all push a screen past the wait_for window, so raise the timeout before rewriting a step that was actually correct.

Is Calabash Still Maintained? Alternatives for Modern Mobile Testing

Calabash is no longer actively developed. 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 Cross-platform suites in Java, Python, Ruby or JavaScript, and the closest replacement for a Calabash lag.
Espresso Android endast Fast in-process tests written in Kotlin or Java by the application developers themselves.
XCUIT Test Endast iOS Native Xcode suites, the supported successor to the retired UIAutomation framework.
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 device matrix and automatiseringstestning pipeline de redan kör.

Vanliga frågor

Yes. A separate calabash-ios gem drove iOS applications through the same Ruby and Cucumber lager. Den delar utfasningsstatusen med Android gem, so current iOS work is better served by XCUITest or Appium.

Machine learning models now repair broken locators automatically, flag flaky scenarios by comparing run histories, and cluster crash reports so the most damaging defects surface first. The judgement about what to assert still belongs to the tester.

Copilot utarbetar de repetitiva delarna bra, såsom en wait_for-blockomslagping an element query. It cannot know your application’s element identifiers, so treat every generated step as a draft to verify against a live query result.

Cucumber is the generic BDD runner that reads Gherkin and calls Ruby methods. Calabash is the mobile automation library those methods call. Cucumber decides what runs; Calabash utför tryckningen, textinmatningen och assertionen.

Screenshots are written to the current working directory by default, named sequentially per run. Setting the SCREENSHOT_PATH environment variable before the run redirects them to a chosen folder, which keeps continuous integration artefacts separate from source code.

Nej. Calabash instruments a compiled APK, which is why the resign step exists. Source access helps you add stable element identifiers, but the framework itself only needs a build it is allowed to resign and instrument.

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.

Keep the Gherkin feature files unchanged and rewrite only the step definition bodies against the Appium klient. Elementfrågor blir lokaliseringsstrategier, och de hookar som installerade applikationen blir önskade funktioner i drivrutinsinstallationen.

Sammanfatta detta inlägg med: