Calabash Android Handleiding voor het testen van tools
⚡ Slimme samenvatting
Calabash is een open-source acceptatietestframework dat daadwerkelijke gebruikersinterfaceacties uitvoert op Android en iOS-applicaties, in begrijpelijke taal. Cucumber scenario's ondersteund door Ruby-stapdefinities en een testserver aan de apparaatzijde.

Wat is Calabash?
Calabash is een open-source acceptatie Testen raamwerk waarmee u tests voor iOS en iOS kunt schrijven en uitvoeren Android Apps.
Het is een geautomatiseerd framework voor gebruikersinterfaces waarmee tests in Ruby kunnen worden geschreven. Cucumber.
Calabash Het werkt door automatische UI-interacties binnen een mobiele applicatie mogelijk te maken, zoals het indrukken van knoppen, het invoeren van tekst, het valideren van antwoorden, enz. Het kan worden geconfigureerd om op verschillende apparaten te draaien. Android en iOS-apparaten, die realtime feedback en validaties bieden.
⚠️ Versie-opmerking: Microsoft beëindigde zijn bijdragen aan Calabash na de laatste iOS 11 en Android 8 releases, en de calabash-android repository Het project omschrijft zichzelf nu als een project dat op zoek is naar een beheerder. De onderstaande handleiding is ongewijzigd gebleven en de moderne alternatieven worden in het laatste gedeelte behandeld.
Waarom Calabash Automatisering?
Voordat je iets installeert, is het handig om af te wegen wat het framework oplevert ten opzichte van de onderhoudskosten.
| Voordelen | Nadelen |
| Het helpt de doorvoer/productiviteit te verhogen. | Vaardigheid is vereist om de automatiseringstestscripts te schrijven. |
| Verbeterde kwaliteit of verhoogde voorspelbaarheid van kwaliteit | Het debuggen van het testscript is een groot probleem. |
| Verbeterde robuustheid (consistentie) van processen of producten. | Testonderhoud is kostbaar bij afspeelmethoden. |
| Verhoogde consistentie van de output en verlaag de arbeidskosten en uitgaven | Het onderhouden van testgegevensbestanden is lastig als het testscript meer schermen test |
Calabash en BDD
- Calabash is Gedragsgestuurde ontwikkeling (BDD)Het is hetzelfde als Testgestuurde ontwikkeling (TDD)Maar in plaats van tests te maken om de structuur van API's te beschrijven, wordt het applicatiegedrag gespecificeerd.
- BDD is een proces waarbij meerdere belanghebbenden hun steentje bijdragen om een gemeenschappelijk begrip te creëren van wat er gebouwd moet worden.
- BDD helpt bij het bouwen van de juiste software en het ontwerpen vanuit het perspectief van de bedrijfseigenaar.
Het onderstaande diagram laat zien hoe een Calabash De suite is gelaagd, van het voor bedrijven leesbare functiebestand bovenaan tot de interactie met het apparaat onderaan.
Hoe te installeren Calabash
Calabash on Windows Hiervoor moeten vier vereisten in de juiste volgorde geïnstalleerd zijn. Voltooi elk onderdeel volledig voordat je aan het volgende begint, omdat de calabash-android gem controleert of Ruby en de Android SDK tijdens de installatie.
Deel I) Installeren Java JDK – Raadpleeg deze handleiding – /install-java.html
Deel II) Download en installeer Ruby.
Stap 1) Download Ruby van de URL https://rubyinstaller.org/downloads
Stap 2) Open het .exe-bestand en volg de instructies op het scherm. Zodra de installatie is voltooid, ziet u het volgende scherm. Klik op Voltooien.
Start de opdrachtprompt met Ruby ingeschakeld Windows 10 & typ hieronder Commando.
ruby -v
De console geeft de geïnstalleerde interpreterversie weer, zoals hieronder te zien is.
Deel III) Downloaden en installeren Android
Stap 1) Downloaden Android Studio at https://developer.android.com/studio
Stap 2) Open het .exe-bestand, volg de instructies op het scherm en voltooi de installatie. Klik op de knop 'Voltooien' als u klaar bent.
Deel IV) Installeren Calabash Android
Stap 1) Typ in de console `gem install calabash-android`. De installatie start en zal enige tijd in beslag nemen.
Stap 2) Zodra de installatie is voltooid, typt u calabash-android versie
Werken met Calabash
Nadat de gem is geïnstalleerd, is de volgende stap het vinden van de frameworkmap en het begrijpen van de structuur die daarin is opgenomen.
Open de map “calabash-android-0.9.0”. Deze bevindt zich op pad C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. De mapnamen veranderen synchroon met de ruby/calabash-versie die u op uw machine installeert.
Open de feature skeleton-map. Let op dit basiskader.
- Het *.feature-bestand bevat scenario's die we gaan automatiseren.
- De methode die door het featurebestand wordt gebruikt, is geschreven in het *.rb-bestand in de map “step_definitions”.
- Algemene methoden, omgevingsinstellingen, app-installatie en hooks moeten in de map “support” worden geplaatst.
Neem ontslag en bouw de app
- Calabash-android resign *.apk
- Calabash- Android-build *.apk
Het opnieuw ondertekenen vervangt de ontwikkelaarshandtekening door een debugsleutel, zodat de testserver de applicatie kan instrumenteren. De buildstap genereert vervolgens die testserver, zoals de onderstaande console-uitvoer laat zien.
Sluit het apparaat aan op het systeem /Open de emulator
Controleer of het apparaat is aangesloten. Typ opdracht
adb devices
De lijst met aangesloten apparaten moet worden weergegeven. Als het apparaat ontbreekt, moeten de stappen voor USB-debugging en -koppeling in de handleiding worden uitgevoerd. ADB-verbindingshandleiding lost de meeste gevallen op.
Hoe u de elementzoeker kunt vinden
- Open de console. Typ de opdracht.
calabash-android console "APK Path" start_test_server_in_background
- Bovenstaande opdracht start de app op het apparaat. Om de elementlocator te vinden, gebruikt u de volgende opdracht.
query "*"
Dit toont alle elementlocators op het huidige scherm. Testers die de voorkeur geven aan een visuele inspecteur kunnen dezelfde hiërarchie controleren met uiautomatorviewer.
Calabash Projectstructuur en vooraf gedefinieerde stappen
In plaats van de gem-map handmatig te kopiëren, kan het framework een werkend project voor je genereren. Door de generator in je projectmap uit te voeren, creëer je de standaard Cucumber lay-out die elke Calabash suite verwacht.
calabash-android gen
De gegenereerde boomstructuur scheidt de drie aandachtspunten van een BDD-suite:
- Kenmerken/ — de Gherkin-scenario's, één ervan .functie bestand per gebruikerstraject.
- functies/stapdefinities/ — de Ruby-methoden die overeenkomen met elke Gherkin-regel, inclusief het meegeleverde calabash_steps.rb.
- functies/ondersteuning/ — Omgevingsconfiguratie en de hooks die de applicatie installeren, starten en afsluiten in elk scenario.
Het meegeleverde calabash_steps.rb-bestand is belangrijker dan het op het eerste gezicht lijkt. Het bevat een grote set kant-en-klare Engelse stappen, waardoor een eerste scenario knoppen kan indrukken, tekst kan invoeren en zichtbare tekenreeksen kan controleren voordat er ook maar één aangepaste methode is geschreven. Aangepaste stappen zijn pas nodig wanneer een reis de standaardzinnen ontgroeit.
Twee projectinstellingen zijn handig om van tevoren te weten. Screenshots worden standaard in de huidige werkmap opgeslagen, maar de omgevingsvariabele SCREENSHOT_PATH zorgt ervoor dat ze naar een andere locatie worden omgeleid. Dit houdt de build-artefacten netjes op een gedeelde machine. Om met systeemdialoogvensters of een andere applicatie te communiceren, is de UIAutomator2-backend vereist. Deze wordt gestart met start_test_server_in_background(with_uiautomator: true).
Nieuwe scripts maken
Open het feature-bestand en de volgende regels
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"
Open het stapdefinitiebestand en definieer de methode in een *.rb-bestand.
Given /^I am on the login windows$/ do wait_for(:timeout =>100) { element_exists("* id:'loginInput;")} check_element_exists("* id:'loginInput;") end
Voer het testproject uit
Gebruik de onderstaande opdracht om het testproject uit te voeren
calabash-android run "APK Path" "feature file Path" --tags "tag name"
Cucumber Elke stap wordt afgedrukt tijdens de uitvoering, en een geslaagde run eindigt met het scenario en de totalen van de stappen zoals hier weergegeven.
Veelgestelde Calabash Fouten en hoe je ze kunt oplossen
De meeste fouten bij de eerste testrun worden veroorzaakt door de verpakking en de toegangsregels waarvan de testserver afhankelijk is, en niet door het scenario zelf. De onderstaande tabel koppelt de meest gemelde symptomen aan hun gedocumenteerde oorzaak.
| Symptoom | Mogelijke oorzaak en oplossing |
| De applicatie crasht zodra een test begint. | De APK mist de machtiging android.permission.INTERNET, die de testserver nodig heeft om commando's te accepteren. Declareer deze machtiging in AndroidManifest.xml en herbouwen. |
| Knoppen en tekst reageren niet op aanrakingen. | Er is geen targetSdkVersion opgegeven. Voeg een uses-sdk-vermelding toe met de naam van het SDK-niveau waarmee de applicatie is gebouwd. |
| De testserver kan geen verbinding maken met de applicatie. | De APK is niet opnieuw ondertekend met de debug-sleutel. Voer de opdracht 'opnieuw ondertekenen' uit en bouw het project opnieuw voordat u het uitvoert. |
| Er worden geen apparaten weergegeven tijdens de uitvoering. | USB-debugging is uitgeschakeld of het stuurprogramma ontbreekt. Controleer eerst of het serienummer in de uitvoer van `adb devices` verschijnt. |
| Stappen mislukken met een ongedefinieerde stapfout. | De Gherkin-formulering komt niet overeen met een reguliere expressie in step_definitions. Kopieer het voorgestelde codefragment. Cucumber print het uit en voer het uit. |
Twee manifestvermeldingen corrigeren de eerste twee regels. Voeg ze toe voordat u het APK-bestand opnieuw ondertekent.
<uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:targetSdkVersion="SDK_VERSION" />
Time-outfouten zijn meestal omgevingsgerelateerd in plaats van functioneel. Een trage emulator, een koude start van de applicatie of een synchronisatie op de achtergrond kunnen ervoor zorgen dat een scherm de wait_for-periode overschrijdt. Verhoog daarom de time-out voordat een stap die eigenlijk correct was, opnieuw wordt uitgevoerd.
Is Calabash Wordt het nog steeds onderhouden? Alternatieven voor modern mobiel testen
Calabash wordt niet langer actief ontwikkeld. Microsoft stopte met bijdragen na de ondersteuning van de laatste iOS 11-versie. Android Na 8 releases is het project nu een gearchiveerde open-source codebase zonder beheerder. Bestaande softwarepakketten werken nog steeds op oudere apparaten, maar er moet worden begonnen met de ontwikkeling van een ondersteund framework.
| Kader | Platform | Het meest geschikt voor: |
| Appium | Android en iOS | Cross-platform suites in Java, Python, Ruby of JavaScript, en de beste vervanging voor een Calabash team. |
| Espresso | Android Slechts | Snelle tussentijdse tests geschreven in Kotlin of Java door de applicatieontwikkelaars zelf. |
| XCUITest | alleen iOS | Native Xcode suites, de ondersteunde opvolger van de gepensioneerde UIAutomation-framework. |
| Maestro en Detox | Android en iOS | Nieuwere open-sourceprojecten gericht op flake-resistentie en React Native-applicaties. |
De BDD-gewoonte zelf wordt probleemloos overgenomen. Gherkin-featurebestanden blijven exact zoals ze zijn, en alleen de stapdefinitie-body's veranderen, omdat Cucumber zit boven de driver in plaats van erin. Teams die migreren behouden meestal de feature-bestanden en herschrijven de Ruby-stappen. Appiumen hergebruik hetzelfde mobiel testen apparaatmatrix en automatisering testen pijplijn die ze al gebruiken.
















