Calabash Android Посібник з інструменту тестування
⚡ Розумний підсумок
Calabash це фреймворк для тестування приймальних вимог з відкритим кодом, який керує реальними діями користувацького інтерфейсу на Android та додатки для iOS, використовуючи звичайну англійську мову Cucumber сценарії, що підтримуються визначеннями кроків Ruby та тестовим сервером на стороні пристрою.

Що таке Calabash?
Calabash є проектом з відкритим вихідним кодом. Прийняття Тестування фреймворк, який дозволяє писати та виконувати тести для iOS і Android Програми
Це автоматизований фреймворк інтерфейсу користувача, який дозволяє писати тести на Ruby за допомогою Cucumber.
Calabash працює, забезпечуючи автоматичну взаємодію з інтерфейсом користувача в мобільному застосунку, таку як натискання кнопок, введення тексту, перевірка відповідей тощо. Його можна налаштувати для роботи на різних Android і пристроїв iOS, які забезпечують зворотній зв’язок і перевірки в реальному часі.
⚠️ Примітка до версії: Microsoft припинив свої внески до Calabash після фінальної версії iOS 11 та Android 8 релізів, і репозиторій calabash-android тепер описує себе як проєкт, який шукає розробника. Наведене нижче покрокове керівництво збережено у написаному вигляді, а сучасні заміни розглянуто в останньому розділі.
Чому Calabash Автоматизація?
Перш ніж встановлювати щось, корисно зважити, що дає фреймворк, порівняно з тим, скільки коштує його обслуговування.
| Переваги | Недоліки |
| Це допомагає збільшити пропускну здатність/продуктивність. | Для написання тестових сценаріїв автоматизації необхідна кваліфікація. |
| Покращена якість або підвищена передбачуваність якості | Налагодження тестового сценарію є серйозною проблемою. |
| Покращена надійність (узгодженість) процесів або продуктів. | Тестове обслуговування є дорогим у випадку методів відтворення. |
| Підвищення узгодженості випуску та зниження трудових витрат і витрат | Обслуговування файлів тестових даних ускладнюється, якщо тестовий сценарій перевіряє більше екранів |
Calabash та БДД
- Calabash is Розвиток, орієнтований на поведінку (BDD)Це те саме, що й Розробка, керована тестуванням (TDD), але замість створення тестів для опису форми API, визначається поведінка застосунку.
- BDD — це процес, у якому кілька зацікавлених сторін зважують зусилля, щоб створити загальне розуміння того, що має бути створено.
- BDD допомагає створювати правильне програмне забезпечення та проектувати з точки зору власника бізнесу.
На діаграмі нижче показано, як Calabash Пакет є багаторівневим, від файлу функцій, зручних для бізнесу, зверху до взаємодії з пристроями знизу.
Як встановити Calabash
Calabash on Windows потребує встановлення чотирьох попередніх компонентів по порядку. Повністю завершіть кожну частину, перш ніж розпочати наступну, оскільки гем calabash-android перевіряє наявність Ruby та Android SDK під час встановлення.
Частина I) Встановлення Java JDK – Див. цей посібник – /install-java.html
Частина II) Завантажте та встановіть Ruby.
Крок 1) Завантажте Ruby з URL https://rubyinstaller.org/downloads
Крок 2) Відкрийте exe-файл та дотримуйтесь інструкцій на екрані. Після завершення встановлення ви побачите наступний екран. Натисніть кнопку «Готово».
Запустіть командний рядок із увімкненим Ruby Windows 10 & введіть команду нижче.
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 наступним завданням є пошук папки фреймворку та розуміння його скелета.
Відкрийте папку «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 має більше значення, ніж здається на перший погляд. Він постачає великий набір готових кроків англійською мовою, тому перший сценарій може натискати кнопки, вводити текст і стверджувати видимі рядки, перш ніж буде написано один власний метод. Власні кроки потрібні лише тоді, коли подорож переростає ці шаблонні фрази.
Два налаштування рівня проекту варто знати заздалегідь. Знімки екрана за замовчуванням розміщуються в поточному робочому каталозі, а змінна середовища SCREENSHOT_PATH перенаправляє їх в інше місце, що забезпечує порядок артефактів збірки на спільній машині. Взаємодія із системними діалогами або іншою програмою вимагає серверної частини UIAutomator2, яку запускають за допомогою 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 та перебудувати. |
| Кнопки та текст відмовляються реагувати на натискання | Версія targetSdk не оголошена. Додайте запис 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Скрипт, і найближча заміна для Calabash . |
| Espresso | Android тільки | Швидкі тести в процесі роботи, написані на Kotlin або Java самими розробниками додатків. |
| XCUITest | тільки iOS | рідний Xcode люкси, підтримуваний наступник пенсіонера Фреймворк UIAutomation. |
| Маестро та Детокс | Android та iOS | Новіші проекти з відкритим кодом, спрямовані на стійкість до відшаровування та застосунки React Native. |
Сама звичка BDD передається без проблем. Файли ознак Gherkin залишаються точно такими ж, як і є, змінюються лише тіла визначень кроків, оскільки Cucumber знаходиться над драйвером, а не всередині нього. Команди, що мігрують, зазвичай зберігають файли функцій, переписують кроки Ruby відповідно до Appium, та повторно використовувати те саме мобільне тестування матриця пристрою та тестування автоматизації трубопровід, який вони вже експлуатують.
















