Calabash Android Vodič za alat za testiranje

⚡ Pametni sažetak

Calabash je okvir za testiranje prihvatljivosti otvorenog koda koji pokreće stvarne akcije korisničkog sučelja na Android i iOS aplikacije, koristeći jednostavan engleski jezik Cucumber scenariji podržani Ruby definicijama koraka i testnim poslužiteljem na strani uređaja.

  • 🔸 Definicija: Calabash automatizira dodire, unos teksta i tvrdnje u odnosu na izvorne i hibridne mobilne aplikacije na stvarnim uređajima i emulatorima.
  • ☑️ Jezični stog: Scenariji su napisani u Gherkin feature datotekama, a metode podudaranja nalaze se u Ruby datotekama unutar step_definitions.
  • BDD zaklada: Razvoj vođen ponašanjem omogućuje vlasnicima tvrtki, programerima i testerima da se dogovore o ponašanju prije nego što postoji bilo kakav skript.
  • 🧪 Redoslijed postavljanja: Java JDK, zatim Ruby, pa onda Android Studio, zatim calabash-android gem, provjeren naredbom version.
  • 🛠️ Tijek izvršenja: Odjavite APK, izgradite testni poslužitelj, priključite uređaj, upitajte lokatore, a zatim pokrenite datoteke značajki.
  • 📊 Trenutni status: Calabash arhivira se i ne održava, pa novi projekti uglavnom biraju Appium, Espresso ili XCUITest umjesto toga.

Calabash vodič za alat za testiranje Android pokazivanje Cucumber datoteke značajki koje pokreću mobilnu aplikaciju

Što je Calabash?

Calabash je prihvaćanje otvorenog koda Ispitivanje okvir koji vam omogućuje pisanje i izvršavanje testova za iOS i Android Aplikacije.

To je automatizirani okvir korisničkog sučelja koji omogućuje pisanje testova u Rubyju pomoću Cucumber.

Calabash Radi tako što omogućuje automatske interakcije korisničkog sučelja unutar mobilne aplikacije, kao što su pritiskanje gumba, unos teksta, provjera odgovora itd. Može se konfigurirati za pokretanje na različitim Android i iOS uređaje, koji pružaju povratne informacije i provjere valjanosti u stvarnom vremenu.

⚠️ Napomena o verziji: Microsoft završio svoje doprinose Calabash nakon konačnog iOS-a 11 i Android 8 izdanja i repozitorij calabash-android sada se opisuje kao projekt koji traži održavatelja. Donji vodič je sačuvan onako kako je napisan, a moderne zamjene su obrađene u posljednjem odjeljku.

Zašto Calabash Automatizacija?

Prije nego što instalirate bilo što, korisno je odvagnuti što okvir pruža u odnosu na troškove održavanja.

Prednosti Nedostaci
Pomaže povećati propusnost/produktivnost. Za pisanje testnih skripti automatizacije potrebna je stručnost.
Poboljšana kvaliteta ili povećana predvidljivost kvalitete Otklanjanje pogrešaka testne skripte veliki je problem.
Poboljšana robusnost (dosljednost) procesa ili proizvoda. Održavanje testa je skupo u slučaju metoda reprodukcije.
Povećana dosljednost izlaza i smanjenje troškova rada i izdataka Održavanje datoteka testnih podataka je teško ako testna skripta testira više ekrana

Calabash i BDD

  • Calabash is Razvoj vođen ponašanjem (BDD)Isto je kao Testom vođen razvoj (TDD), ali umjesto stvaranja testova za opisivanje oblika API-ja, specificira se ponašanje aplikacije.
  • BDD je proces u kojem višestruki dionici vagaju kako bi stvorili zajedničko razumijevanje onoga što treba izgraditi.
  • BDD pomaže u izradi pravog softvera i projektiranju iz perspektive vlasnika tvrtke.

Donji dijagram prikazuje kako Calabash Paket je slojevit, od poslovno čitljive datoteke značajki na vrhu do interakcije uređaja na dnu.

Calabash Dijagram BDD sloja koji prikazuje datoteke značajki, definicije koraka i sloj automatizacije uređaja

Kako instalirati Calabash

Calabash on Windows Potrebno je instalirati četiri preduvjeta redom. U potpunosti dovršite svaki dio prije početka sljedećeg, jer calabash-android gem provjerava Ruby i Android SDK tijekom instalacije.

Dio I) Instalacija Java JDK – Pogledajte ovaj vodič – /install-java.html

Dio II) Preuzmite i instalirajte Ruby.

Korak 1) Preuzmite Ruby s URL https://rubyinstaller.org/downloads

Stranica za preuzimanje RubyInstallera s popisom dostupnih verzija Rubyja Windows

Korak 2) Otvorite exe datoteku i slijedite upute na zaslonu. Nakon što je instalacija dovršena, vidjet ćete sljedeći zaslon. Kliknite Završi.

Zaslon za dovršetak čarobnjaka za postavljanje Rubyja s označenim gumbom Završi

Pokrenite naredbeni redak s uključenim Rubyjem Windows 10 & upišite ispod Command.

ruby -v

Konzola ispisuje instaliranu verziju interpretera, kao što je prikazano dolje.

Naredbeni redak s Rubyjem koji prikazuje instalirani broj verzije Rubyja

Dio III) Preuzmite i instalirajte Android

Korak 1) Preuzimanje Android Studio at https://developer.android.com/studio

Android Studio čarobnjak za postavljanje koji se izvodi Windows tijekom instalacije

Korak 2) Otvorite exe datoteku, slijedite upute na zaslonu i dovršite instalaciju. Nakon završetka kliknite gumb Završi

Android Studio zaslon završene instalacije s gumbom Završi

Dio IV) Instalacija Calabash Android

Korak 1) U konzolu upišite gem install calabash-android. Instalacija će započeti i trebat će neko vrijeme da se dovrši.

Izlaz konzole dok su instalirani calabash-android gem i njegove ovisnosti

Korak 2) Nakon što je instalacija završena, upišite calabash-android version

Konzola potvrđuje instaliranu verziju gem programa calabash-android

Raditi sa Calabash

Nakon instaliranja gem-a, sljedeći zadatak je pronaći mapu frameworka i razumjeti kostur s kojim se isporučuje.

Otvorite mapu "calabash-android-0.9.0". Nalazi se na putu C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Imena mapa će se promijeniti u skladu s verzijom ruby/calabash koju instalirate na svom računalu.

Otvorite mapu kostura značajki. Pazite na ovaj osnovni okvir.

Calabash mapa kostura značajki koja sadrži direktorije podrške i step_definitions

  • Datoteka *.feature sadrži scenarije koje ćemo automatizirati.
  • Metoda koju koristi datoteka značajki zapisana je u *.rb datoteci unutar mape “step_definitions”.
  • Uobičajene metode, postavljanje okruženja, instalacija aplikacije i poveznice trebaju se smjestiti u mapu "support".

Podnesite ostavku i izradite aplikaciju

  • Calabash-android ostavka *.apk
  • Calabash-android verzija *.apk

Otkazivanjem se potpis programera zamjenjuje ključem za otklanjanje pogrešaka tako da testni poslužitelj može instrumentirati aplikaciju, a korak izgradnje stvara taj testni poslužitelj, kao što je prikazano na izlazu konzole u nastavku.

Izlaz konzole naredbi calabash-android resign i build koji stvara testni poslužitelj

Priključite uređaj na sustav /Otvorite emulator

Provjerite priključeni uređaj. Upišite naredbu

adb devices

Trebao bi se prikazati popis priključenih uređaja. Ako uređaj nedostaje, koraci za USB otklanjanje pogrešaka i uparivanje u Vodič za povezivanje s ADB-om riješiti većinu slučajeva.

popis naredbi adb uređaja jedan u prilogu Android uređaj prema serijskom broju

Kako pronaći lokator elemenata

  • Otvorite konzolu. Upišite naredbu.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Gornja naredba pokrenite aplikaciju na uređaju. Da biste pronašli lokator elemenata koristite sljedeću naredbu.
    query "*"

Ovo će prikazati sve lokatore elemenata na trenutnom zaslonu. Testeri koji preferiraju vizualni inspektor mogu provjeriti istu hijerarhiju s uiautomatorviewer.

Calabash konzola ispisuje stablo elemenata za upit za trenutni ekran aplikacije

Calabash Struktura projekta i unaprijed definirani koraci

Umjesto ručnog kopiranja mape gem, framework može generirati funkcionalan projekt za vas. Pokretanje generatora unutar direktorija vašeg projekta stvara standard Cucumber raspored koji svaki Calabash apartman očekuje.

calabash-android gen

Generirano stablo razdvaja tri aspekta BDD paketa:

  • karakteristike/ — scenariji Gherkin, jedan .značajka datoteka po korisničkom putovanju.
  • značajke/definicije_koraka/ — Ruby metode koje odgovaraju svakoj Gherkin liniji, uključujući i u paketu calabash_steps.rb.
  • značajke/podrška/ — konfiguracija okruženja i kuke koje instaliraju, pokreću i zatvaraju aplikaciju u svakom scenariju.

U paketu je datoteka calabash_steps.rb važnija nego što se na prvi pogled čini. Isporučuje veliki skup gotovih koraka na engleskom jeziku, tako da prvi scenarij može pritiskati gumbe, unositi tekst i postavljati assert na vidljive nizove znakova prije nego što se napiše ijedna prilagođena metoda. Prilagođeni koraci potrebni su tek kada putovanje preraste te unaprijed definirane fraze.

Dvije postavke na razini projekta vrijedi znati unaprijed. Snimke zaslona prema zadanim postavkama stižu u trenutni radni direktorij, a varijabla okruženja SCREENSHOT_PATH preusmjerava ih negdje drugdje, što održava artefakte izgradnje urednima na dijeljenom računalu. Interakcija sa sistemskim dijalozima ili drugom aplikacijom zahtijeva UIAutomator2 backend, pokrenut s start_test_server_in_background(with_uiautomator: true).

Stvaranje novih skripti

Otvorite datoteku značajki i sljedeće retke

Datoteka značajke prijave otvorena u editoru koji prikazuje korake scenarija 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"

Otvorite datoteku s definicijom koraka i definirajte metodu u *.rb datoteku.

Mapa datoteke definicije koraka u Rubyjuping Gherkinova linija do Calabash upit elementa

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

Izvršite testni projekt

Da biste izvršili testni projekt, upotrijebite donju naredbu

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

Cucumber ispisuje svaki korak dok se izvršava, a prolazno izvršavanje završava s ovdje prikazanim scenarijem i ukupnim brojem koraka.

Calabash pokrenite izlaz koji prikazuje svaki Gherkin korak koji se izvršava na uređaju

Calabash sažetak konzole koji izvještava o prošlim scenarijima i broju koraka nakon izvršenja

Zajednički Calabash Greške i kako ih ispraviti

Većina neuspjeha pri prvom pokretanju dolazi od pravila pakiranja i dozvola o kojima ovisi testni poslužitelj, a ne od samog scenarija. Tablica u nastavku prikazuje najčešće prijavljene simptome u odnosu na njihov dokumentirani uzrok.

Simptom Vjerojatni uzrok i rješenje
Aplikacija se ruši u trenutku pokretanja testa APK-u nedostaje android.permission.INTERNET, što je testnom poslužitelju potrebno za prihvaćanje naredbi. Deklarirajte dopuštenje u AndroidManifest.xml i ponovna izgradnja.
Gumbi i tekst ne reagiraju na dodire Nije deklarirana targetSdkVersion. Dodajte unos uses-sdk s nazivom SDK razine na kojoj je aplikacija izgrađena.
Testni poslužitelj se ne može povezati s aplikacijom APK nije podvrgnut resignaciji s debug ključem. Pokrenite naredbu resign, a zatim ponovno izgradite prije pokretanja.
Nema navedenih uređaja za vrijeme izvođenja USB ispravljanje pogrešaka je isključeno ili nedostaje upravljački program. Prvo provjerite pojavljuje li se serijski broj u izlazu adb uređaja.
Koraci ne uspijevaju s nedefiniranom pogreškom koraka Gherkinova formulacija ne odgovara nijednom regularnom izrazu u step_definitions. Kopirajte predloženi isječak. Cucumber ispisuje i implementira ga.

Dva unosa u manifestu ispravljaju prva dva retka. Dodajte ih prije potpisivanja APK-a.

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

Kvarovi isteka vremena obično su okolišni, a ne funkcionalni. Spori emulator, hladno pokretanje aplikacije ili sinkronizacija u pozadini mogu pomaknuti zaslon dalje od prozora wait_for, stoga povećajte vrijeme isteka prije ponovnog pisanja koraka koji je zapravo bio ispravan.

Is Calabash Još uvijek održavano? Alternative za moderno mobilno testiranje

Calabash više se aktivno ne razvija. Microsoft prestao je doprinositi nakon što je podržao konačnu verziju iOS-a 11 i Android 8 izdanja, a projekt je sada arhivirana baza otvorenog koda bez održavatelja. Postojeći paketi i dalje rade na starijim uređajima, ali novi rad trebao bi započeti na podržanom okviru.

Okvir Platforma Najprikladniji za
Appium Android i iOS Višeplatformski paketi u Java, Python, Ruby ili JavaSkripta i najbliža zamjena za Calabash tim.
Espresso Android samo Brzi testovi u procesu napisani u Kotlinu ili Java od strane samih programera aplikacija.
XCUITest samo iOS Domorodac Xcode apartmana, podržanog nasljednika umirovljenog Okvir UIAutomation.
Maestro i detoks Android i iOS Noviji projekti otvorenog koda usmjereni na otpornost na pahuljice i React Native aplikacije.

Sama BDD navika se prenosi bez problema. Datoteke Gherkin featurea ostaju točno onakve kakve jesu, a mijenjaju se samo tijela definicije koraka, jer Cucumber nalazi se iznad upravljačkog programa, a ne unutar njega. Timovi koji migriraju obično zadržavaju datoteke značajki, prepisuju Ruby korake protiv Appiumi ponovno upotrijebite isto mobilno testiranje matrica uređaja i ispitivanje automatizacije plinovod koji već koriste.

Pitanja i odgovori

Da. Zasebni calabash-ios gem je pokretao iOS aplikacije putem istog Rubyja i Cucumber sloj. Dijeli status zastare kao i Android gem, tako da trenutni iOS rad bolje obavlja XCUITest ili Appium.

Modeli strojnog učenja sada automatski popravljaju neispravne lokatore, označavaju nestabilne scenarije uspoređujući povijesti izvođenja i izvješća o rušenju klastera tako da se najštetniji nedostaci prvi pojavljuju. Prosudba o tome što tvrditi i dalje pripada testeru.

Copilot dobro skicira dijelove koji se ponavljaju, poput preloma bloka wait_forping upit elementa. Ne može znati identifikatore elemenata vaše aplikacije, stoga svaki generirani korak tretirajte kao nacrt za provjeru u odnosu na stvarni rezultat upita.

Cucumber je generički BDD runner koji čita Gherkin i poziva Ruby metode. Calabash je mobilna biblioteka za automatizaciju koju te metode pozivaju. Cucumber odlučuje što se odvija; Calabash izvodi dodir, unos teksta i tvrdnju.

Snimke zaslona se prema zadanim postavkama zapisuju u trenutni radni direktorij, imenujući ih sekvencijalno po pokretanju. Postavljanje varijable okruženja SCREENSHOT_PATH prije pokretanja preusmjerava ih u odabranu mapu, što odvaja artefakte kontinuirane integracije od izvornog koda.

Ne. Calabash instrumentira kompilirani APK, zbog čega postoji korak podnošenja zahtjeva. Pristup izvornom kodu pomaže vam dodati stabilne identifikatore elemenata, ali samom okviru je potrebna samo izrada koju smije podnijeti zahtjev i instrumentirati.

Da. Budući da je izvršavanje jedan poziv naredbenog retka, bilo koji poslužitelj za izradu može ga pozvati nakon što je APK kreiran. A Jenkins Zadatak obično otkazuje APK, pokreće emulator, pokreće označene značajke i arhivira izvješća.

Ostavite Gherkinove datoteke značajki nepromijenjenima i prepišite samo tijela definicija koraka u odnosu na Appium klijent. Upiti elemenata postaju strategije lokatora, a kuke koje su instalirale aplikaciju postaju željene mogućnosti u postavkama upravljačkog programa.

Sažmite ovu objavu uz: