Calabash Android Урок за инструмента за тестване

⚡ Умно обобщение

Calabash е рамка за тестване за приемане с отворен код, която управлява реални действия на потребителския интерфейс върху Android и iOS приложения, използвайки разбираем английски език Cucumber сценарии, подкрепени от дефиниции на стъпки в Ruby и тестов сървър от страната на устройството.

  • 🔸 Определение: Calabash автоматизира докосвания, въвеждане на текст и твърдения спрямо нативни и хибридни мобилни приложения на реални устройства и емулатори.
  • ☑️ Езиков стек: Сценариите са написани във файлове с функции на Gherkin, а методите за съвпадение се намират в Ruby файлове вътре в step_definitions.
  • Фондация БДД: Разработката, управлявана от поведението, позволява на собствениците на бизнес, разработчиците и тестерите да се споразумеят за поведението, преди да съществува какъвто и да е скрипт.
  • 🧪 Ред за настройка: Java JDK, след това Ruby, и накрая Android Studio, след това скъпоценният камък calabash-android, проверен с команда за версия.
  • 🛠️ Процес на изпълнение: Прекратете APK файла, изградете тестовия сървър, прикачете устройство, заявете локатори и след това стартирайте файловете с функции.
  • 📊 Актуално състояние: Calabash е архивиран и неподдържан, така че новите проекти обикновено избират Appium, Espresso или XCUITest вместо това.

Calabash урок за инструмент за тестване Android показване Cucumber файлове с функции, управляващи мобилно приложение

Какво е 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 Диаграма на BDD слоя, показваща файлове с характеристики, дефиниции на стъпки и слоя за автоматизация на устройството

Как да инсталираме 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

Страница за изтегляне на RubyInstaller, в която са изброени наличните версии на Ruby Windows

Стъпка 2) Отворете exe файла и следвайте инструкциите на екрана. След като инсталацията приключи, ще видите следния екран. Щракнете върху „Finish“ (Завършек).

Екран за завършване на съветника за настройка на Ruby с маркиран бутон „Готово“

Стартирайте командния ред с включен Ruby Windows 10 & въведете под Command.

ruby -v

Конзолата отпечатва инсталираната версия на интерпретатора, както е показано по-долу.

Команден ред с Ruby, показващ инсталирания номер на версията на Ruby

Част III) Изтеглете и инсталирайте Android

Стъпка 1) Изтеглете Android Studio at https://developer.android.com/studio

Android Studio съветникът за настройка работи на Windows по време на инсталацията

Стъпка 2) Отворете exe файла, следвайте инструкциите на екрана и завършете инсталацията. След като сте готови, щракнете върху бутона „Готово“.

Android Studio екран за завършена инсталация с бутона за завършване

Част IV) Инсталиране Calabash Android

Стъпка 1) В конзолата въведете gem install calabash-android. Инсталацията ще започне и ще отнеме известно време, за да завърши.

Изход от конзолата, докато скъпоценният камък calabash-android и неговите зависимости са инсталирани

Стъпка 2) След като инсталацията приключи, въведете calabash-android version

Конзолата потвърждава инсталираната версия на gem на calabash-android

Работещ с Calabash

След като gem-ът е инсталиран, следващата задача е да се намери папката на framework-а и да се разбере скелетът, с който се доставя.

Отворете папката „calabash-android-0.9.0“. Той се намира на път C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Имената на папките ще се променят в синхрон с версията ruby/calabash, която инсталирате на вашата машина.

Отворете папката със скелета на функциите. Внимавайте за тази основна рамка.

Calabash Папка на скелета на функциите, съдържаща директориите support и step_definitions

  • Файлът *.feature съдържа сценарии, които ще автоматизираме.
  • Методът, използван от файла с функции, е записан във файл *.rb в папката „step_definitions“.
  • Общите методи, настройката на средата, инсталирането на приложения и куките трябва да бъдат поставени в папката „support“.

Подайте оставка и изградете приложението

  • Calabash-андроид оставка *.apk
  • Calabash-компилация за Android *.apk

Прекратяването на подписа замества подписа на разработчика с ключ за отстраняване на грешки, така че тестовият сървър може да инструментира приложението, а стъпката за изграждане създава този тестов сървър, както е показано на конзолния изход по-долу.

Конзолен изход на командите calabash-android resign и build, създаващ тестов сървър

Прикрепете устройството към системата / Отворете емулатора

Проверете прикрепеното устройство. Въведете команда

adb devices

Трябва да се покаже списъкът със свързани устройства. Ако устройството липсва, стъпките за USB дебъгване и сдвояване в Ръководство за свързване с ADB разрешат повечето случаи.

команда за adb устройства, списък с едно приложено Android устройство по сериен номер

Как да намерите локатора на елементи

  • Отворете конзолата. Въведете командата.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Горната команда стартира приложението на устройството. За да намерите локатора на елемент, използвайте следната команда.
    query "*"

Това ще покаже всички локатори на елементи на текущия екран. Тестерите, които предпочитат визуален инспектор, могат да проверят същата йерархия с uiautomatorviewer.

Calabash конзола, отпечатваща дървото на елементите, поискани от заявката, за текущия екран на приложението

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).

Създаване на нови скриптове

Отворете файла с функции и следващите редове

Файл с функция за вход, отворен в редактор, показващ стъпките на сценария 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"

Отворете файла за дефиниране на стъпки и дефинирайте метода в *.rb файл.

Карта на файла с дефиниции на стъпки в Rubyping линия на Гъркин към Calabash елементна заявка

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 изпълнете изход, показващ всяка стъпка на Gherkin, изпълнявана спрямо устройството

Calabash обобщение на конзолата, отчитащо преминатите сценарии и броя на стъпките след изпълнението им

Общ 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и използвайте повторно същото мобилно тестване матрица на устройството и тестване за автоматизация тръбопроводът, който вече управляват.

Въпроси и Отговори

Да. Отделен скъпоценен камък calabash-ios управляваше iOS приложенията чрез същия Ruby и Cucumber слой. Той споделя статуса на остаряване на Android скъпоценен камък, така че текущата работа на iOS се обслужва по-добре от XCUITest или Appium.

Моделите за машинно обучение вече поправят автоматично повредени локатори, маркират нестабилни сценарии чрез сравняване на истории на изпълнения и отчети за сривове на клъстери, така че най-вредните дефекти се появяват първо. Преценката за това какво да се твърди все още принадлежи на тестващия.

Copilot добре оформя повтарящите се части, като например wait_for блок обвиващping заявка за елемент. Не може да знае идентификаторите на елементите на вашето приложение, така че третирайте всяка генерирана стъпка като чернова, за да я проверите спрямо резултат от заявка на живо.

Cucumber е генеричният BDD runner, който чете Gherkin и извиква Ruby методи. Calabash е мобилната библиотека за автоматизация, която тези методи извикват. Cucumber решава какво се изпълнява; Calabash извършва докосването, въвеждането на текст и твърдението.

Снимките на екрана се записват по подразбиране в текущата работна директория, като се именуват последователно за всяко изпълнение. Задаването на променливата на средата SCREENSHOT_PATH преди изпълнението ги пренасочва към избрана папка, което държи артефактите за непрекъсната интеграция отделно от изходния код.

Не. Calabash инструментира компилиран APK файл, поради което съществува стъпката за прекратяване. Достъпът до изходния код ви помага да добавяте стабилни идентификатори на елементи, но самата рамка се нуждае само от компилация, на която е позволено да прекратява и инструментира.

Да. Тъй като изпълнението е еднократно извикване от командния ред, всеки сървър за компилация може да го извика, след като APK файлът е създаден. Jenkins Задачата обикновено отменя APK файла, стартира емулатор, изпълнява маркираните функции и архивира отчетите.

Запазете файловете с характеристики на Gherkin непроменени и пренапишете само телата на дефинициите на стъпките спрямо Appium клиент. Заявките за елементи се превръщат в стратегии за локализиране, а куките, които са инсталирали приложението, се превръщат в желани възможности в настройката на драйвера.

Обобщете тази публикация с: