Calabash Android Tutorialul instrumentului de testare

⚡ Rezumat inteligent

Calabash este un cadru de testare a acceptării open-source care declanșează acțiuni reale în interfața utilizatorului Android și aplicații iOS, folosind limba engleză simplă Cucumber scenarii susținute de definiții de pași Ruby și un server de testare pe partea de dispozitiv.

  • 🔸 Definiție: Calabash automatizează atingerile, introducerea de text și afirmațiile împotriva aplicațiilor mobile native și hibride pe dispozitive reale și emulatoare.
  • ☑️ Stiva de limbi: Scenariile sunt scrise în fișiere de caracteristici Gherkin, iar metodele potrivite se află în fișiere Ruby în interiorul step_definitions.
  • ✅ Fundația BDD: Dezvoltarea bazată pe comportament (Behavior Driven Development) permite proprietarilor de afaceri, dezvoltatorilor și testerilor să se pună de acord asupra comportamentului înainte de a exista vreun script.
  • 🧪 Ordinea de configurare: Java JDK, apoi Ruby, apoi Android Studio, apoi gema calabash-android, verificată cu o comandă de versiune.
  • 🛠️ Flux de execuție: Renunțați la fișierul APK, construiți serverul de testare, atașați un dispozitiv, interogați locatorii, apoi rulați fișierele de caracteristici.
  • 📊 Statusul curent: Calabash este arhivat și neîntreținut, așa că proiectele noi aleg, în general, Appium, Espresso sau XCUITest în schimb.

Calabash tutorial pentru instrumente de testare Android arătând Cucumber fișiere de caracteristici care definesc o aplicație mobilă

Ce Este Calabash?

Calabash este o acceptare open-source Testarea framework care vă permite să scrieți și să executați teste pentru iOS și Android Aplicații.

Este un cadru de interfață utilizator automat care permite scrierea testelor în Ruby folosind Cucumber.

Calabash funcționează prin activarea interacțiunilor automate ale interfeței utilizator în cadrul unei aplicații mobile, cum ar fi apăsarea butoanelor, introducerea textului, validarea răspunsurilor etc. Poate fi configurat să ruleze pe diferite Android și dispozitivele iOS, care oferă feedback și validări în timp real.

⚠️ Notă privind versiunea: Microsoft și-a încheiat contribuțiile la Calabash după iOS 11 final și Android 8 lansări și depozit calabash-android se descrie acum ca un proiect care caută un responsabil de întreținere. Ghidul de mai jos este păstrat așa cum este scris, iar înlocuirile moderne sunt acoperite în ultima secțiune.

De ce Calabash Automatizare?

Înainte de a instala orice, este util să cântărești avantajele oferite de framework în raport cu costurile de întreținere.

Avantaje Dezavantaje
Ajută la creșterea producției/ productivității. Este necesară competența pentru a scrie scripturile de testare de automatizare.
Calitate îmbunătățită sau predictibilitate crescută a calității Depanarea scriptului de testare este o problemă majoră.
Robustețe (consistență) îmbunătățită a proceselor sau produselor. Întreținerea testului este costisitoare în cazul metodelor de redare.
Consecvența sporită a producției și reducerea costurilor și cheltuielilor cu forța de muncă Întreținerea fișierelor de date de testare este dificilă dacă scriptul de testare testează mai multe ecrane

Calabash și BDD

  • Calabash is Dezvoltare bazată pe comportament (BDD)Este la fel ca Dezvoltare bazată pe teste (TDD), dar în loc să se creeze teste pentru a descrie forma API-urilor, se specifică comportamentul aplicației.
  • BDD este un proces în care mai mulți factori interesați intervin pentru a crea o înțelegere comună a ceea ce trebuie construit.
  • BDD este util în construirea software-ului potrivit și proiectarea din perspectiva proprietarului afacerii.

Diagrama de mai jos arată cum o Calabash Suita este structurată pe mai multe niveluri, de la fișierul de funcții lizibil pentru afaceri din partea de sus în jos, până la interacțiunea cu dispozitivul din partea de jos.

Calabash Diagrama stratului BDD care prezintă fișierele de caracteristici, definițiile pașilor și stratul de automatizare a dispozitivului

Cum se instalează Calabash

Calabash on Windows necesită patru cerințe preliminare instalate în ordine. Finalizați fiecare parte în întregime înainte de a începe următoarea, deoarece gema calabash-android verifică Ruby și Android SDK-ul în timpul instalării.

Partea I) Instalare Java JDK – Consultați acest ghid – /install-java.html

Partea a II-a) Descărcați și instalați Ruby.

Pasul 1) Descărcați Ruby de pe URL https://rubyinstaller.org/downloads

Pagina de descărcare RubyInstaller care listează versiunile de Ruby disponibile pentru Windows

Pasul 2) Deschideți fișierul .exe și urmați instrucțiunile de pe ecran. După finalizarea instalării, veți vedea următorul ecran. Faceți clic pe Finish.

Ecranul de finalizare a expertului de configurare Ruby cu butonul Finish evidențiat

Porniți promptul de comandă cu Ruby activat Windows 10 și tastați mai jos Comanda.

ruby -v

Consola afișează versiunea interpretorului instalată, așa cum se arată mai jos.

Linie de comandă cu Ruby care afișează numărul versiunii Ruby instalate

Partea III) Descărcați și instalați Android

Pasul 1) Descărcați Android Studio at https://developer.android.com/studio

Android Studio asistentul de configurare rulează pe Windows în timpul instalării

Pasul 2) Deschideți fișierul .exe, urmați instrucțiunile de pe ecran și finalizați instalarea. Faceți clic pe butonul de finalizare după ce ați terminat.

Android Studio ecranul de instalare finalizată cu butonul de finalizare

Partea a IV-a) Instalare Calabash Android

Pasul 1) În consolă, tastați gem install calabash-android. Instalarea va începe și va dura ceva timp până se va finaliza.

Ieșirea consolei în timp ce sunt instalate gem-ul calabash-android și dependențele sale

Pasul 2) După finalizarea instalării, tastați calabash-android version

Consola confirmă versiunea instalată de calabash-android gem

Lucrul cu Calabash

Odată ce gem-ul este instalat, următoarea sarcină este să localizați folderul framework-ului și să înțelegeți scheletul cu care este livrat.

Deschideți folderul „calabash-android-0.9.0”. Acesta se află pe calea C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Numele folderelor se vor schimba în sincron cu versiunea ruby/calabash pe care o instalați pe computer.

Deschideți folderul schelet al caracteristicilor. Atenție la acest cadru de bază.

Calabash folderul schelet de funcționalități care conține directoarele support și step_definitions

  • Fișierul *.feature conține scenarii pe care urmează să le automatizăm.
  • Metoda folosită de fișierul de caracteristici este scrisă în fișierul *.rb în folderul „step_definitions”.
  • Metodele obișnuite, configurarea mediului, instalarea aplicației și cârligele ar trebui să fie plasate în folderul „suport”.

Demisia și construiește aplicația

  • Calabash-android demisionează *.apk
  • Calabash-versiunea android *.apk

Demisia înlocuiește semnătura dezvoltatorului cu o cheie de depanare, astfel încât serverul de testare să poată instrumenta aplicația, iar pasul de construire produce acel server de testare, așa cum se arată în ieșirea consolei de mai jos.

Ieșirea consolei comenzilor calabash-android resign și build care generează un server de test

Atașați dispozitivul la sistem / Deschideți emulatorul

Verificați dispozitivul atașat. Tastați comanda

adb devices

Ar trebui să fie afișată lista dispozitivelor conectate. Dacă dispozitivul lipsește, urmați pașii de depanare și asociere USB din Ghid de conectare ADB rezolvă majoritatea cazurilor.

comanda adb devices listând unul atașat Android dispozitiv după numărul de serie

Cum să găsiți elementul de localizare

  • Deschide consola. Tastați comanda.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Comanda de mai sus lansați aplicația pe dispozitiv. Pentru a găsi locatorul de elemente, utilizați următoarea comandă.
    query "*"

Aceasta va afișa toți localizatorii de elemente pe ecranul curent. Testerii care preferă un inspector vizual pot verifica aceeași ierarhie cu uiautomatorviewer.

Calabash imprimarea arborelui de elemente interogat în consolă pentru ecranul curent al aplicației

Calabash Structura proiectului și pași predefiniți

În loc să copieze manual folderul gem, framework-ul poate genera un proiect funcțional. Rularea generatorului în directorul proiectului creează standardul Cucumber aspectul pe care fiecare Calabash suita așteaptă.

calabash-android gen

Arborele generat separă cele trei aspecte ale unei suite BDD:

  • Caracteristici/ — scenariile Gherkin, unul .feature fișier per călătorie de utilizator.
  • caracteristici/definiții_pași/ — metodele Ruby care se potrivesc fiecărei linii Gherkin, inclusiv fișierul calabash_steps.rb inclus în pachet.
  • caracteristici/suport/ — configurația mediului și hook-urile care instalează, lansează și opresc aplicația în fiecare scenariu.

Fișierul calabash_steps.rb inclus în pachet contează mai mult decât pare la prima vedere. Acesta oferă un set mare de pași englezești predefiniți, astfel încât un prim scenariu poate apăsa butoane, introduce text și face afirmații pe șiruri vizibile înainte de a fi scrisă o singură metodă personalizată. Pașii personalizați sunt necesari doar după ce o metodă depășește acele fraze predefinite.

Două setări la nivel de proiect merită să fie cunoscute din timp. Capturile de ecran ajung în directorul de lucru curent în mod implicit, iar variabila de mediu SCREENSHOT_PATH le redirecționează în altă parte, ceea ce menține artefactele de compilare ordonate pe o mașină partajată. Interacțiunea cu dialogurile de sistem sau cu o altă aplicație necesită backend-ul UIAutomator2, pornit cu start_test_server_in_background(with_uiautomator: true).

Crearea de noi scripturi

Deschideți fișierul caracteristic și următoarele linii

Fișierul cu funcții de conectare s-a deschis într-un editor care arată pașii scenariului 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"

Deschideți fișierul Step Definition & Definiți metoda în fișierul *.rb.

Harta fișierului de definiție a pașilor Rubyping o linie de castraveți murați către un Calabash interogare element

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

Executați proiectul de testare

Pentru a executa proiectul de testare, utilizați comanda de mai jos

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

Cucumber afișează fiecare pas pe măsură ce se execută, iar o rulare reușită se termină cu scenariul și totalurile de pași afișate aici.

Calabash ieșirea de rulare care arată fiecare pas Gherkin executat pe dispozitiv

Calabash rezumatul consolei raportează scenariile trecute și numărul de pași după execuție

Comun Calabash Erori și cum să le remediați

Majoritatea erorilor la prima rulare provin din regulile de ambalare și permisiuni de care depinde serverul de testare, nu din scenariul în sine. Tabelul de mai jos mapează simptomele raportate cel mai des cu cauza lor documentată.

Simptom Cauza probabilă și remedierea
Aplicația se blochează în momentul în care începe un test APK-ului îi lipsește android.permission.INTERNET, de care serverul de testare are nevoie pentru a accepta comenzi. Declarați permisiunea în AndroidManifest.xml și reconstruiți.
Butoanele și textul refuză să răspundă la atingeri Nu este declarată nicio versiune targetSdkVersion. Adăugați o intrare uses-sdk care să denumească nivelul SDK pentru care a fost construită aplicația.
Serverul de testare nu se poate conecta la aplicație Fișierul APK nu a fost resemnat cu cheia de depanare. Rulați comanda resign, apoi reconstruiți înainte de a rula.
Niciun dispozitiv nu este listat în timpul execuției Depanarea USB este dezactivată sau driverul lipsește. Confirmați mai întâi că numărul de serie apare în ieșirea dispozitivelor adb.
Pașii eșuează cu o eroare de pas nedefinită Formularea din Gherkin nu corespunde niciunei expresii regulate din step_definitions. Copiați fragmentul sugerat. Cucumber tipărește și implementează-l.

Două intrări în manifest corectează primele două rânduri. Adăugați-le înainte de a renunța la APK.

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

Eșecurile de timeout sunt de obicei de mediu, mai degrabă decât funcționale. Un emulator lent, o pornire la rece a aplicației sau o sincronizare în fundal pot împinge un ecran dincolo de fereastra wait_for, așa că creșteți timeout-ul înainte de a rescrie un pas care a fost de fapt corect.

Is Calabash Încă întreținut? Alternative pentru testarea mobilă modernă

Calabash nu mai este dezvoltat activ. Microsoft a încetat să mai contribuie după ce a oferit suport pentru versiunea finală de iOS 11 și Android 8 versiuni, iar proiectul este acum o bază de cod open-source arhivată, fără un administrator. Suitele existente încă rulează pe dispozitive mai vechi, dar ar trebui să înceapă lucrări noi pe un framework suportat.

Cadru Platformă Cel mai potrivit pentru
Appium Android și iOS Suite multiplatformă în Java, Python, Rubin sau JavaScript și cel mai apropiat înlocuitor pentru un Calabash echipă.
Espresso Android Teste rapide în proces scrise în Kotlin sau Java de către dezvoltatorii de aplicații înșiși.
Testul XCUIT Numai iOS Nativ Xcode suite, succesorul susținut al pensionarului Framework-ul de automatizare a interfețelor utilizator (UIAutomation).
Maestro și Detoxifiere Android și iOS Proiecte open-source mai noi care vizează rezistența la fulgi și aplicațiile React Native.

Obiceiul BDD în sine se transferă curat. Fișierele de caracteristici Gherkin rămân exact așa cum sunt și se schimbă doar corpurile de definire a pașilor, deoarece Cucumber se află deasupra driverului, nu în interiorul acestuia. Echipele care migrează păstrează de obicei fișierele de caracteristici, rescriu pașii Ruby în funcție de Appiumși reutilizați același lucru testarea mobilă matricea dispozitivului și testarea automatizării conductă pe care o conduc deja.

Întrebări frecvente

Da. O altă bijuterie calabash-ios a condus aplicațiile iOS prin același Ruby și Cucumber strat. Acesta are același statut de depreciere ca Android bijuterie, deci funcționarea actuală a iOS este mai bine servită de XCUITest sau Appium.

Modelele de învățare automată repară acum automat locatoarele defecte, semnalează scenariile instabile comparând istoricul execuțiilor și rapoartele de eroare ale clusterelor, astfel încât cele mai dăunătoare defecte să apară primele. Decizia cu privire la ce să afirme aparține în continuare testerului.

Copilot schițează bine părțile repetitive, cum ar fi un bloc wait_for wrap.ping o interogare de element. Nu poate cunoaște identificatorii de elemente ai aplicației dvs., așa că tratați fiecare pas generat ca o schiță pentru a verifica în raport cu rezultatul unei interogări live.

Cucumber este rulatorul generic BDD care citește Gherkin și apelează metodele Ruby. Calabash este biblioteca de automatizare mobilă apelată de acele metode. Cucumber decide ce se desfășoară; Calabash efectuează atingerea, introducerea textului și aserțiunea.

Capturile de ecran sunt scrise în directorul de lucru curent în mod implicit, denumite secvențial pentru fiecare rulare. Setarea variabilei de mediu SCREENSHOT_PATH înainte de rulare le redirecționează către un folder ales, ceea ce păstrează artefactele de integrare continuă separate de codul sursă.

Nu. Calabash instrumentează un APK compilat, motiv pentru care există pasul de renunțare. Accesul la sursă vă ajută să adăugați identificatori de elemente stabili, dar framework-ul în sine are nevoie doar de o compilare pe care are voie să o renunțe și să o instrumenteze.

Da. Deoarece execuția este un singur apel din linia de comandă, orice server de compilare îl poate invoca după ce APK-ul este produs. Jenkins De obicei, un job renunță la fișierul APK, pornește un emulator, rulează funcțiile etichetate și arhivează rapoartele.

Păstrați fișierele de caracteristici Gherkin neschimbate și rescrieți doar corpurile de definire a pașilor în raport cu Appium client. Interogările elementelor devin strategii de localizare, iar hook-urile care au instalat aplicația devin capabilități dorite în configurarea driverului.

Rezumați această postare cu: