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í.

  • 🔸 Definice: Calabash automatizuje klepnutí, zadávání textu a asserty v nativních a hybridních mobilních aplikacích na reálných zařízeních a emulátorech.
  • ☑️ Jazykový zásobník: Scénáře jsou psány v souborech Gherkin feature a odpovídající metody jsou uloženy v souborech Ruby uvnitř step_definitions.
  • (Tj. Nadace BDD: Vývoj řízený chováním umožňuje majitelům firem, vývojářům a testerům dohodnout se na chování ještě před existencí jakéhokoli skriptu.
  • 🧪 Pořadí nastavení: Java JDK, pak Ruby a pak Android Studio, poté gem calabash-android, ověřený příkazem version.
  • 🛠️ Tok provedení: Zrušte soubor APK, sestavte testovací server, připojte zařízení, dotazujte se na lokátory a poté spusťte soubory funkcí.
  • 📊 Současný stav: Calabash je archivovaný a neudržovaný, takže nové projekty si obvykle vybírají Appium, Espresso nebo místo toho XCUITest.

Calabash tutoriál k testovacímu nástroji pro Android zobrazeno Cucumber soubory funkcí, které řídí mobilní aplikaci

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.

Calabash Diagram vrstvy BDD zobrazující soubory prvků, definice kroků a vrstvu automatizace zařízení

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

Stránka pro stažení RubyInstalleru se seznamem dostupných verzí Ruby Windows

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.

Obrazovka dokončení průvodce nastavením Ruby se zvýrazněným tlačítkem 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.

Příkazový řádek s Ruby zobrazujícím číslo nainstalované verze Ruby

Část III) Stáhněte a nainstalujte Android

Krok 1) Stáhnout Android Studio at https://developer.android.com/studio

Android Studio Průvodce nastavením spuštěný Windows během instalace

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.

Android Studio obrazovka dokončení instalace s tlačítkem 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.

Výstup konzole během instalace gem calabash-android a jeho závislostí

Krok 2) Po dokončení instalace zadejte calabash-android version

Konzola potvrzující nainstalovanou verzi gem calabash-android

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.

Calabash složka kostry funkcí obsahující adresáře support a step_definitions

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

Výstup konzole příkazů calabash-android resign a build, který vytváří testovací server.

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ů.

výpis jednoho příkazu zařízení adb připojen Android zařízení podle sériového čísla

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 konzolový výpis stromu dotazovaných prvků pro aktuální obrazovku aplikace

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

Soubor s funkcí přihlášení otevřený v editoru zobrazující kroky scénáře Gherkin

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.

Mapa souboru definice kroků v Rubyping Gherkinovu linii k Calabash dotaz na prvek

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ů.

Calabash spustit výstup ukazující každý krok Gherkinu provedený na zařízení

Calabash souhrnné hlášení konzole o absolvovaných scénářích a počtu kroků po provedení

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í.

Nejčastější dotazy

Ano. Samostatný gem calabash-ios řídil iOS aplikace přes stejný Ruby a Cucumber vrstva. Sdílí stav zastaralosti vrstvy Android gem, takže současnou práci s iOS lépe obslouží XCUITest nebo Appium.

Modely strojového učení nyní automaticky opravují poškozené lokátory, označují nestabilní scénáře porovnáváním historie běhů a hlásí selhání clusterů, takže nejškodlivější vady se objeví jako první. Posouzení, co tvrdit, stále patří testerovi.

Copilot dobře navrhuje opakující se části, jako například blok wait_for.ping dotaz na element. Nemůže znát identifikátory elementů vaší aplikace, proto s každým vygenerovaným krokem zacházejte jako s konceptem, který se ověřuje oproti živému výsledku dotazu.

Cucumber je generický BDD běžec, který čte Gherkin a volá metody Ruby. Calabash je knihovna pro mobilní automatizaci, kterou tyto metody volají. Cucumber rozhoduje o tom, co běží; Calabash provádí klepnutí, zadávání textu a potvrzení.

Snímky obrazovky se standardně zapisují do aktuálního pracovního adresáře, pojmenovávají se postupně pro každé spuštění. Nastavení proměnné prostředí SCREENSHOT_PATH před spuštěním je přesměruje do vybrané složky, čímž se artefakty průběžné integrace uchovávají odděleně od zdrojového kódu.

Ne. Calabash instrumentuje zkompilovaný APK, a proto existuje krok resignace. Přístup ke zdrojovému kódu vám pomáhá přidávat stabilní identifikátory prvků, ale samotný framework potřebuje pouze sestavení, které smí resignovat a instrumentovat.

Ano. Protože spuštění je jediné volání příkazového řádku, může jej po vytvoření souboru APK vyvolat jakýkoli sestavovací server. Jenkins Úloha obvykle odebere soubor APK, spustí emulátor, spustí označené funkce a archivuje sestavy.

Ponechte soubory prvků Gherkin beze změny a přepište pouze těla definic kroků vůči Appium klient. Dotazy na elementy se stávají strategiemi lokátoru a hooky, které nainstalovaly aplikaci, se stávají požadovanými funkcemi v nastavení ovladače.

Shrňte tento příspěvek takto: