Calabash Android Tesztelőeszköz oktatóanyag

⚡ Okos összefoglaló

Calabash egy nyílt forráskódú elfogadási tesztelési keretrendszer, amely valós felhasználói felületi műveleteket vezérel. Android és iOS-alkalmazások, egyszerű angol nyelven Cucumber Ruby lépésdefiníciókkal és egy eszközoldali tesztszerverrel támogatott forgatókönyvek.

  • 🔸 Meghatározás: Calabash Automatizálja a koppintásokat, a szövegbevitelt és az assertion-öket natív és hibrid mobilalkalmazásokban való használatra valós eszközökön és emulátorokon.
  • ☑️ Nyelvi verem: A forgatókönyvek Gherkin feature fájlokban vannak írva, az egyező metódusok pedig Ruby fájlokban, a step_definitions függvényeken belül.
  • BDD alapítvány: A viselkedésvezérelt fejlesztés lehetővé teszi a vállalkozás tulajdonosai, a fejlesztők és a tesztelők számára, hogy még azelőtt megegyezzenek a viselkedésről, mielőtt bármilyen szkript létrejönne.
  • 🧪 Beállítási sorrend: Java JDK, majd Ruby, aztán Android Studio, majd a calabash-android gem, egy version paranccsal ellenőrizve.
  • 🇧🇷 Végrehajtási folyamat: Mondd le az APK-t, építsd fel a tesztszervert, csatolj egy eszközt, kérdezd le a lokátorokat, majd futtasd a funkciófájlokat.
  • 📊 Jelenlegi állapot: Calabash archiválva van és nem karbantartott, így az új projektek általában ezt választják Appium, Espresso vagy XCUITest helyett.

Calabash tesztelőeszköz oktatóanyag Android mutató Cucumber mobilalkalmazást vezérlő funkciófájlok

Mi a Calabash?

Calabash egy nyílt forráskódú elfogadóhely Tesztelés keretrendszer, amely lehetővé teszi tesztek írását és végrehajtását iOS és Android Alkalmazások.

Ez egy automatizált felhasználói felület keretrendszer, amely lehetővé teszi a tesztek Ruby-ban történő írását Cucumber.

Calabash úgy működik, hogy lehetővé teszi az automatikus felhasználói felület interakcióit egy mobilalkalmazáson belül, például gombok megnyomását, szövegbevitelt, válaszok validálását stb. Különböző eszközökön futtatható. Android és iOS-eszközökön, amely valós idejű visszajelzést és érvényesítést biztosít.

⚠️ Verzió megjegyzés: Microsoft befejezte hozzájárulásait Calabash az utolsó iOS 11 után és Android 8 kiadás, és a calabash-android adattár most egy karbantartót kereső projektként írja le magát. Az alábbi útmutató írásos formában megmarad, a modern helyettesítőket pedig az utolsó szakasz tárgyalja.

Miért Calabash Automatizálás?

Mielőtt bármit is telepítenénk, érdemes mérlegelni, hogy mit ad vissza a keretrendszer, illetve hogy mennyibe kerül a fenntartása.

Előnyök Hátrányok
Segít növelni a teljesítményt/termelékenységet. Az automatizálási teszt szkriptek írásához jártasság szükséges.
Javított minőség vagy a minőség előreláthatóságának növelése A tesztszkript hibakeresése komoly probléma.
Folyamatok vagy termékek jobb robusztussága (konzisztenciája). A tesztkarbantartás költséges lejátszási módok esetén.
Fokozott összhang a kibocsátás és csökkenti a munkaerő-költségeket és kiadásokat A tesztadatfájlok karbantartása nehézkes, ha a tesztszkript több képernyőt tesztel

Calabash és BDD

  • Calabash is Viselkedésvezérelt fejlesztés (BDD)Ugyanaz, mint Tesztvezérelt fejlesztés (TDD), de az API-k alakját leíró tesztek létrehozása helyett az alkalmazás viselkedését specifikálják.
  • A BDD egy olyan folyamat, amelyben több érdekelt fél mérlegeli, hogy közös értelmezést alkosson arról, hogy mit kell építeni.
  • A BDD segít a megfelelő szoftver felépítésében és a cégtulajdonos szemszögéből történő tervezésben.

Az alábbi ábra azt mutatja, hogyan Calabash A csomag rétegzett, a felül található üzletileg olvasható funkciófájltól az alján található eszközinterakcióig.

Calabash BDD rétegdiagram, amelyen láthatók a jellemzőfájlok, a lépésdefiníciók és az eszközautomatizálási réteg

Hogyan kell telepíteni Calabash

Calabash on Windows négy előfeltétel telepítése szükséges egymás után. A következő rész megkezdése előtt minden részt teljesen teljesíts, mert a calabash-android gem Ruby-t és a Android SDK telepítés közben.

I. rész) Telepítés Java JDK – Lásd ezt az útmutatót – /install-java.html

II. rész) Töltse le és telepítse a Rubyt.

1. lépés) Töltsd le a Rubyt a következő helyről: URL https://rubyinstaller.org/downloads

RubyInstaller letöltési oldal, amely felsorolja a Ruby elérhető verzióit Windows

2. lépés) Nyissa meg az exe fájlt, és kövesse a képernyőn megjelenő utasításokat. A telepítés befejezése után a következő képernyő jelenik meg. Kattintson a Befejezés gombra.

Ruby telepítővarázsló befejezési képernyője, kiemelve a Befejezés gombbal

Indítsa el a Parancssort a Ruby bekapcsolásával Windows 10 és írja be a Parancs alá.

ruby -v

A konzol kinyomtatja a telepített interpreter verzióját, az alábbiak szerint.

Parancssor Ruby-val, amely megjeleníti a telepített Ruby verziószámát

III. rész) Töltse le és telepítse Android

1. lépés) Letöltés Android Studio at https://developer.android.com/studio

Android Studio telepítővarázsló fut Windows telepítés közben

2. lépés) Nyissa meg az exe fájlt, kövesse a képernyőn megjelenő utasításokat, és fejezze be a telepítést. Ha kész, kattintson a Befejezés gombra.

Android Studio telepítés befejeződött képernyő a befejezés gombbal

IV. rész) Telepítés Calabash Android

1. lépés) A konzolba írd be: gem install calabash-android. A telepítés elindul, és eltart egy ideig, amíg befejeződik.

Konzolkimenet, miközben a calabash-android gem és függőségei telepítve vannak.

2. lépés) A telepítés befejezése után írja be: calabash-android version

A konzol megerősíti a telepített Calabash-Android Gem verziót

Munka Calabash

A gem telepítése után a következő feladat a keretrendszer mappájának megkeresése és a hozzá tartozó csontváz megértése.

Nyissa meg a „calabash-android-0.9.0” mappát. A C útvonalon található:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. A mappanevek a gépére telepített ruby/calabash verzióval szinkronban változnak.

Nyissa meg a szolgáltatás csontváz mappáját. Ügyeljen erre az alapvető keretre.

Calabash a support és a step_definitions könyvtárakat tartalmazó funkcióvázlat-mappa

  • A *.feature fájl olyan forgatókönyveket tartalmaz, amelyeket automatizálni fogunk.
  • A szolgáltatásfájl által használt módszer a „step_definitions” mappában található *.rb fájlba van írva.
  • Az általános módszereket, a környezetbeállítást, az alkalmazástelepítést és a hook-okat a „support” mappában kell elhelyezni.

Mondjon le és építse meg az alkalmazást

  • Calabash-android lemond *.apk
  • Calabash-android build *.apk

A lemondás a fejlesztői aláírást egy hibakereső kulccsal cseréli le, így a tesztkiszolgáló eszközölheti az alkalmazást, és a build lépés létrehozza ezt a tesztkiszolgálót, ahogy az az alábbi konzolkimeneten is látható.

A calabash-android reming és build parancsok konzolkimenete tesztszervert hoz létre.

Csatlakoztassa az eszközt a rendszerhez / Nyissa meg az emulátort

Ellenőrizze a csatlakoztatott eszközt. Írja be a parancsot

adb devices

Megjelenik a csatlakoztatott eszközök listája. Ha az eszköz hiányzik, akkor az USB hibakeresési és párosítási lépések a ADB csatlakozási útmutató a legtöbb esetet megoldja.

az adb eszközök parancslistája csatolva van Android eszköz sorozatszám alapján

Hogyan lehet megtalálni az elemkeresőt

  • Nyissa ki a konzolt. Írja be a parancsot.
    calabash-android console "APK Path"
    start_test_server_in_background
  • A parancs felett indítsa el az alkalmazást az eszközön. Az elemkereső megtalálásához használja a következő parancsot.
    query "*"

Ez az összes elemkeresőt megjeleníti az aktuális képernyőn. A vizuális ellenőrzést előnyben részesítő tesztelők ugyanazt a hierarchiát ellenőrizhetik a következővel: uiautomatorviewer.

Calabash a konzol kinyomtatja a lekérdezett elemfát az aktuális alkalmazás képernyőjéhez

Calabash Projektstruktúra és előre meghatározott lépések

A gem mappa kézi másolása helyett a keretrendszer képes egy működő projektet generálni. A generátor projektkönyvtáron belüli futtatása létrehozza a szabványos Cucumber elrendezés, amely minden Calabash a lakosztály elvárja.

calabash-android gen

A generált fa elválasztja a BDD-csomag három aspektusát:

  • jellemzők/ — az Uborka-forgatókönyvek, az egyik .funkció fájl felhasználói útvonalonként.
  • jellemzők/lépésdefiníciók/ — a Ruby metódusok, amelyek illeszkednek az egyes Gherkin sorokhoz, beleértve a mellékelt calabash_steps.rb fájlt is.
  • funkciók/támogatás/ — környezeti konfiguráció és a hookok, amelyek minden forgatókönyv esetén telepítik, elindítják és leállítják az alkalmazást.

A csomagban található calabash_steps.rb fájl fontosabb, mint amilyennek elsőre látszik. Nagyszámú, előre elkészített angol nyelvű lépést tartalmaz, így egy első forgatókönyvben gombokat lehet megnyomni, szöveget beírni és látható karakterláncokon érvényesíteni az igényeket, mielőtt egyetlen egyéni metódus megírásra kerülne. Egyéni lépésekre csak akkor van szükség, ha egy folyamat kinövi ezeket a begyakorolt ​​kifejezéseket.

Két projektszintű beállítást érdemes már a kezdeti szakaszban ismerni. A képernyőképek alapértelmezés szerint az aktuális munkakönyvtárba kerülnek, a SCREENSHOT_PATH környezeti változó pedig máshová irányítja át őket, ami rendben tartja a build artefaktusokat a megosztott gépen. A rendszerpárbeszédablakokkal vagy más alkalmazásokkal való interakcióhoz az UIAutomator2 backend szükséges, amelyet a start_test_server_in_background(with_uiautomator: true) paranccsal kell elindítani.

Új szkriptek létrehozása

Nyissa meg a szolgáltatásfájlt és a következő sorokat

A bejelentkezési funkciófájl egy szerkesztőben van megnyitva, amely a Gherkin forgatókönyv lépéseit mutatja.

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"

Nyissa meg a Step Definition fájlt, és adja meg a metódust *.rb fájlba.

Ruby lépésdefiníciós fájltérképping egy uborka sor egy Calabash elem lekérdezés

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Végezze el a tesztprojektet

A tesztprojekt végrehajtásához használja az alábbi parancsot

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber Kinyomtatja az egyes lépéseket végrehajtás közben, és egy sikeres futtatás az itt látható forgatókönyvvel és lépésszámmal zárul.

Calabash futtatási kimenet, amely az eszközön végrehajtott Gherkin-lépéseket mutatja

Calabash konzolösszefoglaló jelentések sikeres forgatókönyvekről és lépésszámokról a végrehajtás után

Közös Calabash Hibák és hogyan javítsuk ki őket

Az első futtatásból adódó hibák többsége a tesztszerver által használt csomagolási és engedélyezési szabályokból ered, nem magából a forgatókönyvből. Az alábbi táblázat a leggyakrabban jelentett tüneteket a dokumentált okukhoz rendeli.

Tünet Valószínű ok és megoldás
Az alkalmazás a teszt megkezdésekor azonnal összeomlik Az APK-ból hiányzik az android.permission.INTERNET fájl, amelyre a tesztszervernek szüksége van a parancsok elfogadásához. Deklaráld az engedélyt a következőben: AndroidManifest.xml fájl és újjáépítés.
A gombok és a szöveg nem reagál a koppintásra Nincs deklarálva targetSdkVersion. Adjon hozzá egy uses-sdk bejegyzést, amely megnevezi az alkalmazás által használt SDK szintjét.
A tesztszerver nem tud csatlakozni az alkalmazáshoz Az APK nem lett újraprogramozva a debug kulccsal. Futtassa a resign parancsot, majd a futtatás előtt fordítsa le újra.
Futásidőben nincsenek listázva eszközök Az USB-hibakeresés ki van kapcsolva, vagy hiányzik az illesztőprogram. Először ellenőrizze, hogy a sorozatszám megjelenik-e az ADB-eszközök kimenetében.
A lépések meghatározatlan lépéshibával hiúsulnak meg A Gherkin szóhasználat nem egyezik egyetlen reguláris kifejezéssel sem a step_definitions-ben. Másolja ki a javasolt kódrészletet. Cucumber kinyomtatja és megvalósítja.

Két manifest bejegyzés javítja az első két sort. Add hozzá őket az APK újraindítása előtt.

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

Az időtúllépési hibák általában környezeti, nem pedig funkcionális eredetűek. Egy lassú emulátor, egy hideg alkalmazásindítás vagy egy háttérszinkronizálás mind a wait_for ablakon túlra tolhatja a képernyőt, ezért növelje az időtúllépést, mielőtt újraírna egy olyan lépést, amely valójában helyes volt.

Is Calabash Még mindig karbantartják? Alternatívák a modern mobil teszteléshez

Calabash már nem fejlesztik aktívan. Microsoft miután támogatta az iOS 11 végleges verzióját, abbahagyta a közreműködést. Android 8 kiadás, és a projekt mára egy archivált, nyílt forráskódú kódbázis karbantartó nélkül. A meglévő csomagok továbbra is futnak régebbi eszközökön, de az új munkák egy támogatott keretrendszeren kezdődnek.

Keretrendszer Emelvény A legalkalmasabb
Appium Android és iOS Többplatformos csomagok Java, Python, Ruby vagy JavaSzkript, és a legközelebbi helyettesítője a Calabash csapat.
Espresso Android csak Gyors, folyamat közbeni tesztek Kotlinban vagy más nyelven írva Java maguk az alkalmazásfejlesztők által.
XCUITeszt csak iOS esetén Bennszülött Xcode lakosztályok, a nyugdíjba vonult támogatott utódja UIAutomation keretrendszer.
Maestro és méregtelenítő Android és iOS Újabb nyílt forráskódú projektek, amelyek a pehelyállóságot és a React Native alkalmazásokat célozzák.

Maga a BDD szokás tisztán átkerül. Az uborka jellemzőfájlok pontosan úgy maradnak, ahogy vannak, és csak a lépésdefiníciós törzsek változnak, mert Cucumber a meghajtó felett helyezkedik el, nem pedig benne. A migráló csapatok általában megtartják a funkciófájlokat, és átírják a Ruby lépéseket a Appium, és ugyanazt használja újra mobil tesztelés eszközmátrix és automatizálási tesztelés már üzemeltetett csővezetéket.

GYIK

Igen. Egy különálló calabash-ios gem hajtotta az iOS alkalmazásokat ugyanazon a Ruby-n keresztül, és Cucumber réteg. Megosztja a(z) Android gem, így a jelenlegi iOS-munkát jobban szolgálja az XCUITest vagy Appium.

A gépi tanulási modellek mostantól automatikusan kijavítják a hibás lokátorokat, a futási előzmények összehasonlításával jelölik meg a hibás forgatókönyveket, és klaszterként összevonják a hibajelentéseket, így a legkárosabb hibák kerülnek először felszínre. A állítások megítélése továbbra is a tesztelőé.

A Copilot jól tervezi meg az ismétlődő részeket, például a wait_for blokktörést.ping egy elem lekérdezés. Nem ismerheti az alkalmazásod elemazonosítóit, ezért minden generált lépést vázlatként kell kezelni, hogy ellenőrizni lehessen egy élő lekérdezési eredménnyel.

Cucumber az általános BDD futtatóprogram, amely Gherkin metódusokat olvas és Ruby metódusokat hív. Calabash az a mobil automatizálási könyvtár, amelyet ezek a metódusok meghívnak. Cucumber eldönti, hogy mi fut; Calabash végrehajtja a koppintást, a szövegbevitelt és az állítást.

A képernyőképek alapértelmezés szerint az aktuális munkakönyvtárba kerülnek, futtatásonként sorban elnevezve. A SCREENSHOT_PATH környezeti változó futtatás előtti beállítása átirányítja őket egy kiválasztott mappába, amely elkülöníti a folyamatos integrációs műtermékeket a forráskódtól.

Nem. Calabash A instruments egy lefordított APK-t használ, ezért létezik a resign lépés. A forráskódhoz való hozzáférés segít stabil elemazonosítók hozzáadásában, de maga a keretrendszer csak egy buildet igényel, amely lehetővé teszi a resignálást és a instrumentálást.

Igen. Mivel a végrehajtás egyetlen parancssori hívás, bármelyik build szerver meghívhatja azt az APK létrehozása után. Jenkins A job jellemzően lemondja az APK-t, elindít egy emulátort, futtatja a címkézett funkciókat és archiválja a jelentéseket.

A Gherkin jellemzőfájlokat változatlanul kell hagyni, és csak a lépésdefiníciós törzseket kell átírni a Appium kliens. Az elemlekérdezések lokátor stratégiákká válnak, és az alkalmazást telepítő hookok a kívánt képességekké válnak az illesztőprogram beállításaiban.

Foglald össze ezt a bejegyzést a következőképpen: