Calabash Android Урок за инструмента за тестване
⚡ Умно обобщение
Calabash е рамка за тестване за приемане с отворен код, която управлява реални действия на потребителския интерфейс върху Android и iOS приложения, използвайки разбираем английски език Cucumber сценарии, подкрепени от дефиниции на стъпки в Ruby и тестов сървър от страната на устройството.
Какво е Calabash?
Calabash е с отворен код Приемане Тестване рамка, която ви позволява да пишете и изпълнявате тестове за iOS и Android Apps.
Това е автоматизирана рамка за потребителски интерфейс, която позволява писането на тестове на Ruby, използвайки Cucumber.
Calabash работи, като активира автоматични взаимодействия с потребителския интерфейс в мобилно приложение, като например натискане на бутони, въвеждане на текст, валидиране на отговори и др. Може да бъде конфигурирано да работи на различни Android и iOS устройства, което осигурява обратна връзка и валидации в реално време.
⚠️ Бележка към версията: Microsoft прекрати приноса си към Calabash след финалната iOS 11 и Android 8 издания и хранилище calabash-android сега се описва като проект, търсещ поддържащ. Ръководството по-долу е запазено както е написано, а съвременните заместители са разгледани в последния раздел.
Защо Calabash Автоматизация?
Преди да инсталирате каквото и да е, е полезно да претеглите какво дава рамката спрямо разходите за поддръжка.
| Предимства | Недостатъци |
| Помага за увеличаване на пропускателната способност/производителност. | Необходими са умения за писане на тестови скриптове за автоматизация. |
| Подобрено качество или повишена предвидимост на качеството | Отстраняването на грешки в тестовия скрипт е основен проблем. |
| Подобрена устойчивост (последователност) на процеси или продукти. | Тестовата поддръжка е скъпа в случай на методи за възпроизвеждане. |
| Повишена последователност на продукцията и намаляване на разходите и разходите за труд | Поддръжката на тестови файлове с данни е трудна, ако тестовият скрипт тества повече екрани |
Calabash и БДД
- Calabash is Развитие, управлявано от поведение (BDD)Същото е като Разработка, управлявана от тестове (TDD), но вместо да се създават тестове, които да описват формата на API-тата, се определя поведението на приложението.
- BDD е процес, в който множество заинтересовани страни претеглят, за да създадат общо разбиране за това какво трябва да бъде изградено.
- BDD е полезен при изграждането на правилния софтуер и проектирането от гледна точка на собственика на бизнеса.
Диаграмата по-долу показва как a Calabash Пакетът е на пластове, от файла с бизнес функции, който е четим отгоре надолу, до взаимодействието с устройството в долната част.
Как да инсталираме Calabash
Calabash on Windows изисква четири предварителни изисквания, инсталирани по ред. Завършете всяка част напълно, преди да започнете следващата, защото gem-ът calabash-android проверява за Ruby и Android SDK по време на инсталацията.
Част I) Инсталиране Java JDK – Вижте това ръководство – /install-java.html
Част II) Изтеглете и инсталирайте Ruby.
Стъпка 1) Изтеглете Ruby от URL https://rubyinstaller.org/downloads
Стъпка 2) Отворете exe файла и следвайте инструкциите на екрана. След като инсталацията приключи, ще видите следния екран. Щракнете върху „Finish“ (Завършек).
Стартирайте командния ред с включен Ruby Windows 10 & въведете под Command.
ruby -v
Конзолата отпечатва инсталираната версия на интерпретатора, както е показано по-долу.
Част III) Изтеглете и инсталирайте Android
Стъпка 1) Изтеглете Android Studio at https://developer.android.com/studio
Стъпка 2) Отворете exe файла, следвайте инструкциите на екрана и завършете инсталацията. След като сте готови, щракнете върху бутона „Готово“.
Част IV) Инсталиране Calabash Android
Стъпка 1) В конзолата въведете gem install calabash-android. Инсталацията ще започне и ще отнеме известно време, за да завърши.
Стъпка 2) След като инсталацията приключи, въведете calabash-android version
Работещ с Calabash
След като gem-ът е инсталиран, следващата задача е да се намери папката на framework-а и да се разбере скелетът, с който се доставя.
Отворете папката „calabash-android-0.9.0“. Той се намира на път C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Имената на папките ще се променят в синхрон с версията ruby/calabash, която инсталирате на вашата машина.
Отворете папката със скелета на функциите. Внимавайте за тази основна рамка.
- Файлът *.feature съдържа сценарии, които ще автоматизираме.
- Методът, използван от файла с функции, е записан във файл *.rb в папката „step_definitions“.
- Общите методи, настройката на средата, инсталирането на приложения и куките трябва да бъдат поставени в папката „support“.
Подайте оставка и изградете приложението
- Calabash-андроид оставка *.apk
- Calabash-компилация за Android *.apk
Прекратяването на подписа замества подписа на разработчика с ключ за отстраняване на грешки, така че тестовият сървър може да инструментира приложението, а стъпката за изграждане създава този тестов сървър, както е показано на конзолния изход по-долу.
Прикрепете устройството към системата / Отворете емулатора
Проверете прикрепеното устройство. Въведете команда
adb devices
Трябва да се покаже списъкът със свързани устройства. Ако устройството липсва, стъпките за USB дебъгване и сдвояване в Ръководство за свързване с ADB разрешат повечето случаи.
Как да намерите локатора на елементи
- Отворете конзолата. Въведете командата.
calabash-android console "APK Path" start_test_server_in_background
- Горната команда стартира приложението на устройството. За да намерите локатора на елемент, използвайте следната команда.
query "*"
Това ще покаже всички локатори на елементи на текущия екран. Тестерите, които предпочитат визуален инспектор, могат да проверят същата йерархия с uiautomatorviewer.
Calabash Структура на проекта и предварително дефинирани стъпки
Вместо да копирате папката gem на ръка, рамката може да генерира работещ проект за вас. Стартирането на генератора във вашата директория на проекта създава стандартния Cucumber оформление, което всеки Calabash апартаментът очаква.
calabash-android gen
Генерираното дърво разделя трите аспекта на BDD пакета:
- характеристики/ — сценариите на Гъркин, един от тях .feature файл за всяко потребителско пътуване.
- функции/дефиниции_на_стъпките/ — методите на Ruby, които съответстват на всеки ред на Gherkin, включително пакета calabash_steps.rb.
- функции/поддръжка/ — конфигурация на средата и куките, които инсталират, стартират и затварят приложението при всеки сценарий.
Включеният в пакета calabash_steps.rb е по-важен, отколкото изглежда на пръв поглед. Той предлага голям набор от готови стъпки на английски език, така че първият сценарий може да натиска бутони, да въвежда текст и да прави assert на видими низове, преди да бъде написан един-единствен персонализиран метод. Персонализираните стъпки са необходими само след като едно пътуване надрасне тези консервативни фрази.
Две настройки на ниво проект са полезни за рано. Снимките на екрана се съхраняват по подразбиране в текущата работна директория, а променливата на средата SCREENSHOT_PATH ги пренасочва другаде, което поддържа артефактите за изграждане подредени на споделена машина. Взаимодействието със системни диалози или друго приложение изисква UIAutomator2 backend, стартиран със start_test_server_in_background(with_uiautomator: true).
Създаване на нови скриптове
Отворете файла с функции и следващите редове
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"
Отворете файла за дефиниране на стъпки и дефинирайте метода в *.rb файл.
Given /^I am on the login windows$/ do wait_for(:timeout =>100) { element_exists("* id:'loginInput;")} check_element_exists("* id:'loginInput;") end
Изпълнете тестовия проект
За да изпълните тестовия проект, използвайте командата по-долу
calabash-android run "APK Path" "feature file Path" --tags "tag name"
Cucumber отпечатва всяка стъпка, докато се изпълнява, и преминаващото изпълнение завършва със сценария и общия брой стъпки, показани тук.
Общ Calabash Грешки и как да ги поправим
Повечето неуспехи при първо изпълнение идват от правилата за пакетиране и разрешения, от които зависи тестовият сървър, а не от самия сценарий. Таблицата по-долу съпоставя най-често съобщаваните симптоми с тяхната документирана причина.
| симптом | Вероятна причина и отстраняване |
| Приложението се срива в момента, в който започне тестът | В APK файла липсва android.permission.INTERNET, който е необходим на тестовия сървър, за да приема команди. Декларирайте разрешението в AndroidManifest.xml и пресъздаване. |
| Бутоните и текстът отказват да реагират на докосвания | Не е декларирана targetSdkVersion. Добавете запис в uses-sdk, посочващ нивото на SDK, върху което е изградено приложението. |
| Тестовият сървър не може да се свърже с приложението | APK файлът не е бил подписан с ключа за отстраняване на грешки. Изпълнете командата за подмяна, след което компилирайте отново, преди да я стартирате. |
| Няма изброени устройства по време на изпълнение | USB дебъгването е изключено или липсва драйвер. Първо проверете дали серийният номер се показва в изхода на adb устройствата. |
| Стъпките се провалят с неопределена грешка в стъпката | Формулировката на Gherkin не съответства на нито един регулярен израз в step_definitions. Копирайте предложения фрагмент. Cucumber отпечатва и го прилага. |
Два записа в манифеста поправят първите два реда. Добавете ги, преди да подновите APK файла.
<uses-permission android:name="android.permission.INTERNET" /> <uses-sdk android:targetSdkVersion="SDK_VERSION" />
Неуспехите с изтичане на времето за изчакване обикновено са свързани с околната среда, а не с функционалността. Бавен емулатор, студено стартиране на приложение или синхронизиране във фонов режим могат да избутат екрана след изтичане на прозореца wait_for, така че увеличете времето за изчакване, преди да презапишете стъпка, която всъщност е била правилна.
Is Calabash Все още се поддържа? Алтернативи за модерно мобилно тестване
Calabash вече не се развива активно. Microsoft спря да допринася след като подкрепи финалната версия на iOS 11 и Android 8 издания, а проектът вече е архивирана база с отворен код без поддържащ. Съществуващите пакети все още работят на по-стари устройства, но новата работа би трябвало да започне върху поддържана рамка.
| Рамка | платформа | Най-подходящ за |
| Appium | Android и iOS | Кросплатформени пакети в Java, Python, Руби или JavaСкрипт и най-близкият заместител на a Calabash екип. |
| Espresso | Android само за лична употреба | Бързи тестове в процеса на работа, написани на Kotlin или Java от самите разработчици на приложения. |
| XCUITest | само iOS | Роден Xcode апартаменти, поддържаният наследник на пенсионирания рамка за UIAutomation. |
| Маестро и Детокс | Android и iOS | По-нови проекти с отворен код, насочени към устойчивост на люспи и React Native приложения. |
Самият BDD навик се прехвърля безпроблемно. Файловете с характеристики на Gherkin остават точно такива, каквито са, и се променят само телата на дефинициите на стъпките, защото Cucumber се намира над драйвера, а не вътре в него. Екипите, които мигрират, обикновено запазват файловете с функции, пренаписват стъпките на Ruby срещу Appiumи използвайте повторно същото мобилно тестване матрица на устройството и тестване за автоматизация тръбопроводът, който вече управляват.
















