Calabash Android Výukový program pro testovací nástroje
⚡ Chytré shrnutí
Calabash je open-source framework pro akceptační testování, který řídí skutečné akce uživatelského rozhraní na Android a iOS aplikace s použitím jednoduché angličtiny Cucumber scénáře podpořené definicemi kroků Ruby a testovacím serverem na straně zařízení.
Co je to Calabash?
Calabash je open-source Akceptace Testování framework, který vám umožňuje psát a spouštět testy pro iOS a Android Aplikace.
Jedná se o automatizovaný framework uživatelského rozhraní, který umožňuje psaní testů v Ruby pomocí Cucumber.
Calabash Funguje tak, že umožňuje automatické interakce uživatelského rozhraní v rámci mobilní aplikace, jako je stisknutí tlačítek, zadávání textu, ověřování odpovědí atd. Lze jej nakonfigurovat tak, aby běžel na různých Android a iOS zařízení, která poskytuje zpětnou vazbu a ověřování v reálném čase.
⚠️ Poznámka k verzi: Microsoft ukončila své příspěvky k Calabash po finální verzi iOS 11 a Android 8 vydání a repozitář calabash-android nyní se popisuje jako projekt hledající správce. Níže uvedený návod je zachován v původní podobě a moderní náhrady jsou popsány v poslední části.
Proč Calabash Automatizace?
Před instalací čehokoli je dobré zvážit, co systém nabízí, oproti nákladům na údržbu.
| Výhody | Nevýhody |
| Pomáhá zvýšit propustnost/produktivitu. | K psaní testovacích skriptů automatizace je vyžadována odbornost. |
| Zlepšená kvalita nebo zvýšená předvídatelnost kvality | Ladění testovacího skriptu je hlavní problém. |
| Vylepšená robustnost (konzistence) procesů nebo produktů. | Údržba testu je v případě metod přehrávání nákladná. |
| Zvýšená konzistence výstupu a snížení mzdových nákladů a výdajů | Údržba souborů testovacích dat je obtížná, pokud testovací skript testuje více obrazovek |
Calabash a BDD
- Calabash is Vývoj řízený chováním (BDD)Je to stejné jako Testem řízený vývoj (TDD), ale místo vytváření testů popisujících tvar API je specifikováno chování aplikace.
- BDD je proces, do kterého se zapojuje více zúčastněných stran, aby se vytvořilo společné chápání toho, co je třeba vybudovat.
- BDD pomáhá při vytváření správného softwaru a navrhování z pohledu vlastníka firmy.
Níže uvedený diagram ukazuje, jak Calabash Sada je vrstvená, od souboru funkcí čitelných pro firmy nahoře až po interakci se zařízením dole.
Jak nainstalovat Calabash
Calabash on Windows vyžaduje postupně nainstalované čtyři předpoklady. Před zahájením další části kompletně dokončete každou část, protože gem calabash-android kontroluje Ruby a Android SDK během instalace.
Část I) Instalace Java JDK – viz tento průvodce – /install-java.html
Část II) Stáhněte a nainstalujte Ruby.
Krok 1) Stáhněte si Ruby z URL https://rubyinstaller.org/downloads
Krok 2) Otevřete exe soubor a postupujte podle pokynů na obrazovce. Po dokončení instalace se zobrazí následující obrazovka. Klikněte na Dokončit.
Spusťte příkazový řádek se zapnutým Ruby Windows 10 a zadejte níže Příkaz.
ruby -v
Konzole vypíše nainstalovanou verzi interpretu, jak je znázorněno níže.
Část III) Stáhněte a nainstalujte Android
Krok 1) Stáhnout Android Studio at https://developer.android.com/studio
Krok 2) Otevřete exe soubor, postupujte podle pokynů na obrazovce a dokončete instalaci. Po dokončení klikněte na tlačítko Dokončit.
Část IV) Instalace Calabash Android
Krok 1) Do konzole zadejte gem install calabash-android. Instalace se spustí a bude nějakou dobu trvat.
Krok 2) Po dokončení instalace zadejte calabash-android version
Práce s Calabash
Po instalaci gem je dalším úkolem najít složku frameworku a pochopit jeho kostru.
Otevřete složku „calabash-android-0.9.0“. Nachází se na cestě C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Názvy složek se budou měnit v souladu s verzí ruby/calabash, kterou nainstalujete do svého počítače.
Otevřete složku kostry prvku. Podívejte se na tento základní rámec.
- Soubor *.feature obsahuje scénáře, které se chystáme automatizovat.
- Metoda použitá souborem funkcí je zapsána v souboru *.rb ve složce „step_definitions“.
- Běžné metody, nastavení prostředí, instalace aplikací a háčky by měly být umístěny ve složce „support“.
Resign & Build app
- Calabash-android rezignovat *.apk
- Calabash-verze pro Android *.apk
Rezignace nahradí podpis vývojáře ladicím klíčem, takže testovací server může instrumentovat aplikaci a krok sestavení vytvoří tento testovací server, jak ukazuje výstup konzole níže.
Připojte zařízení k systému / otevřete emulátor
Zkontrolujte připojené zařízení. Zadejte příkaz
adb devices
Měl by se zobrazit seznam připojených zařízení. Pokud zařízení chybí, proveďte kroky ladění a párování USB v Průvodce připojením ADB vyřešit většinu případů.
Jak najít lokátor prvků
- Otevřete konzolu. Zadejte příkaz.
calabash-android console "APK Path" start_test_server_in_background
- Výše uvedený příkaz spustí aplikaci na zařízení. Chcete-li najít lokátor prvků, použijte následující příkaz.
query "*"
Tím se zobrazí všechny lokátory prvků na aktuální obrazovce. Testeři, kteří preferují vizuální inspektor, mohou stejnou hierarchii zkontrolovat pomocí uiautomatorviewer.
Calabash Struktura projektu a předdefinované kroky
Místo ručního kopírování složky gem může framework vygenerovat funkční projekt. Spuštěním generátoru uvnitř adresáře projektu se vytvoří standardní Cucumber rozvržení, které každý Calabash apartmá očekává.
calabash-android gen
Vygenerovaný strom odděluje tři aspekty sady BDD:
- vlastnosti/ — scénáře Gherkin, jeden .feature soubor na cestu uživatele.
- funkce/definice_kroků/ — metody Ruby, které odpovídají každému řádku Gherkinu, včetně přibaleného souboru calabash_steps.rb.
- funkce/podpora/ — konfigurace prostředí a procesy, které instalují, spouští a vypíná aplikaci v každém scénáři.
Součástí balíčku calabash_steps.rb je větší význam, než se na první pohled zdá. Dodává velkou sadu hotových kroků v angličtině, takže první scénář může stisknout tlačítka, zadat text a provést assert na viditelných řetězcích ještě předtím, než je napsána jediná vlastní metoda. Vlastní kroky jsou potřeba pouze tehdy, když cesta přeroste tyto předpřipravené fráze.
Dvě nastavení na úrovni projektu je dobré znát už předem. Snímky obrazovky se standardně ukládají do aktuálního pracovního adresáře a proměnná prostředí SCREENSHOT_PATH je přesměruje jinam, což udržuje artefakty sestavení na sdíleném počítači v pořádku. Interakce se systémovými dialogy nebo jinou aplikací vyžaduje backend UIAutomator2, spouštěný pomocí start_test_server_in_background(with_uiautomator: true).
Vytváření nových skriptů
Otevřete soubor funkce a následující řádky
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"
Otevřete soubor Step Definition & Definujte metodu do souboru *.rb.
Given /^I am on the login windows$/ do wait_for(:timeout =>100) { element_exists("* id:'loginInput;")} check_element_exists("* id:'loginInput;") end
Proveďte testovací projekt
Chcete-li spustit testovací projekt, použijte příkaz níže
calabash-android run "APK Path" "feature file Path" --tags "tag name"
Cucumber vytiskne každý krok během jeho provádění a procházející běh končí zde zobrazeným scénářem a počtem kroků.
Společný Calabash Chyby a jak je opravit
Většina chyb při prvním spuštění pochází z pravidel pro balení a oprávnění, na kterých testovací server závisí, nikoli ze samotného scénáře. Níže uvedená tabulka mapuje nejčastěji hlášené příznaky a jejich zdokumentovanou příčinu.
| Příznak | Pravděpodobná příčina a oprava |
| Aplikace se zhroutí v okamžiku spuštění testu | V souboru APK chybí android.permission.INTERNET, který testovací server potřebuje k přijímání příkazů. Deklarujte oprávnění v AndroidManifest.xml a znovu sestavit. |
| Tlačítka a text nereagují na klepnutí | Není deklarována žádná targetSdkVersion. Přidejte položku uses-sdk s názvem úrovně SDK, na které byla aplikace sestavena. |
| Testovací server se nemůže připojit k aplikaci. | Soubor APK nebyl resignován s ladicím klíčem. Spusťte příkaz resign a poté jej znovu sestavte před spuštěním. |
| V době běhu nejsou uvedena žádná zařízení. | Ladění USB je vypnuté nebo chybí ovladač. Nejprve ověřte, zda se ve výstupu zařízení adb zobrazuje sériové číslo. |
| Kroky selhávají s chybou nedefinovaného kroku | Znění Gherkin neodpovídá žádnému regulárnímu výrazu v step_definitions. Zkopírujte navrhovaný úryvek. Cucumber vytiskne a implementuje to. |
Dva záznamy v manifestu opravují první dva řádky. Přidejte je před opětovným schválením souboru APK.
<uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:targetSdkVersion="SDK_VERSION" />
Selhání časového limitu jsou obvykle spíše environmentální než funkční. Pomalý emulátor, studený start aplikace nebo synchronizace na pozadí mohou posunout obrazovku za okno wait_for, proto před přepsáním kroku, který byl skutečně správný, prodlužte časový limit.
Is Calabash Stále udržováno? Alternativy pro moderní mobilní testování
Calabash již není aktivně rozvíjen. Microsoft přestal přispívat poté, co podpořil finální verzi iOS 11 a Android 8 vydání a projekt je nyní archivovanou open-source kódovou základnou bez správce. Stávající sady stále běží na starších zařízeních, ale nová práce by měla začít na podporovaném frameworku.
| Rámec | Plošina | Nejlépe se hodí |
| Appium | Android a iOS | Multiplatformní sady v Java, Python, Rubín nebo JavaSkript a nejbližší náhrada za Calabash tým. |
| Espresso | Android 👔 | Rychlé testy v procesu psané v Kotlinu nebo Java samotnými vývojáři aplikací. |
| XCUITest | pouze pro iOS | Domácí Xcode apartmány, podporovaný nástupce vysloužilého Framework UIAutomation. |
| Maestro a detox | Android a iOS | Novější open-source projekty zaměřené na odolnost proti vločkám a React Native aplikace. |
Samotný BDD návyk se přenáší čistě. Soubory prvků Gherkin zůstávají přesně takové, jaké jsou, a mění se pouze těla definic kroků, protože Cucumber nachází se nad ovladačem, nikoli uvnitř něj. Týmy, které migrují, si obvykle ponechávají soubory funkcí, přepisují kroky Ruby proti Appiuma znovu použít totéž mobilní testování matice zařízení a testování automatizace potrubí, které již provozují.
















