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.

Š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.
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
Korak 2) Otvorite exe datoteku i slijedite upute na zaslonu. Nakon što je instalacija dovršena, vidjet ćete sljedeći zaslon. Kliknite 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.
Dio III) Preuzmite i instalirajte Android
Korak 1) Preuzimanje Android Studio at https://developer.android.com/studio
Korak 2) Otvorite exe datoteku, slijedite upute na zaslonu i dovršite instalaciju. Nakon završetka kliknite gumb 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.
Korak 2) Nakon što je instalacija završena, upišite calabash-android version
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.
- 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.
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.
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 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
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.
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.
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.
















