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.
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.
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
Step 2) Open the exe, follow the instructions on the screen. Once install is complete you will see the following screen. Click Finish.
Starta kommandotolken med Ruby på Windows 10 och skriv kommandot nedan.
ruby -v
The console prints the installed interpreter version, as shown below.
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
Step 1) In the console type gem install calabash-android. The install will start and will take some time to complete
Steg 2) När installationen är klar Skriv in calabash-android 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.
- *.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
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.
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 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
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 prints each step as it executes, and a passing run ends with the scenario and step totals shown here.
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.
















