Calabash Android Samouczek dotyczący narzędzia testowego

⚡ Inteligentne podsumowanie

Calabash jest otwartym oprogramowaniem do testowania akceptacji, które steruje rzeczywistymi działaniami interfejsu użytkownika Android i aplikacje iOS, używające prostego języka angielskiego Cucumber scenariusze oparte na definicjach kroków Ruby i serwerze testowym po stronie urządzenia.

  • 🔸 Definicja: Calabash automatyzuje stuknięcia, wprowadzanie tekstu i potwierdzenia w natywnych i hybrydowych aplikacjach mobilnych na rzeczywistych urządzeniach i emulatorach.
  • Stos językowy: Scenariusze zapisuje się w plikach funkcji Gherkin, a metody dopasowywania znajdują się w plikach Ruby w step_definitions.
  • Fundacja BDD: Behavior Driven Development pozwala właścicielom firm, programistom i testerom uzgodnić zachowanie jeszcze przed powstaniem jakiegokolwiek skryptu.
  • 🧪 Kolejność konfiguracji: Java JDK, potem Ruby, potem Android Studio, a następnie klejnot calabash-android, zweryfikowany poleceniem version.
  • 🛠️. Przebieg realizacji: Podpisz ponownie pakiet APK, zbuduj serwer testowy, podłącz urządzenie, wyślij zapytanie do lokalizatorów, a następnie uruchom pliki funkcji.
  • 📊 Aktualny stan: Calabash jest archiwizowany i nie jest utrzymywany, dlatego nowe projekty zazwyczaj wybierają Appium, Espresso lub XCUITest.

Calabash samouczek dotyczący narzędzia testowego Android seans Cucumber pliki funkcji sterujące aplikacją mobilną

Czym jest Calabash?

Calabash jest akceptacją typu open-source Testy framework, który pozwala pisać i wykonywać testy dla iOS i Android Aplikacje.

Jest to zautomatyzowany interfejs użytkownika, który umożliwia pisanie testów w języku Ruby przy użyciu Cucumber.

Calabash działa poprzez włączenie automatycznych interakcji z interfejsem użytkownika w aplikacji mobilnej, takich jak naciskanie przycisków, wprowadzanie tekstu, sprawdzanie poprawności odpowiedzi itp. Można go skonfigurować do działania na różnych urządzeniach Android i iOS, co zapewnia informacje zwrotne i weryfikacje w czasie rzeczywistym.

⚠️ Uwaga dotycząca wersji: Microsoft zakończył swoje wpłaty do Calabash po ostatecznym iOS 11 i Android 8 wydań i repozytorium calabash-android Obecnie projekt ten określa się jako poszukujący osoby odpowiedzialnej za utrzymanie. Poniższy opis jest zachowany w oryginalnej formie, a współczesne zamienniki omówiono w ostatniej sekcji.

Czemu Calabash Automatyzacja?

Przed zainstalowaniem czegokolwiek, warto porównać korzyści, jakie daje framework, z kosztami jego utrzymania.

Zalety Wady
Pomaga zwiększyć przepustowość/produktywność. Do pisania skryptów testów automatycznych wymagana jest biegłość.
Lepsza jakość lub zwiększona przewidywalność jakości Debugowanie skryptu testowego jest poważnym problemem.
Poprawiona solidność (spójność) procesów lub produktów. Utrzymanie testów jest kosztowne w przypadku metod odtwarzania.
Zwiększona spójność wyników oraz redukcja kosztów i wydatków pracy Konserwacja plików danych testowych jest trudna, jeśli skrypt testowy testuje więcej ekranów

Calabash i BDD

  • Calabash is Rozwój oparty na zachowaniu (BDD). To jest to samo co Rozwój oparty na testach (TDD)ale zamiast tworzyć testy opisujące kształt interfejsów API, określa się zachowanie aplikacji.
  • BDD to proces, w którym wielu interesariuszy bierze udział w tworzeniu wspólnego zrozumienia tego, co należy zbudować.
  • BDD pomaga w budowaniu odpowiedniego oprogramowania i projektowaniu z perspektywy właściciela firmy.

Poniższy diagram pokazuje, jak Calabash Pakiet jest warstwowy – od pliku z funkcjami zrozumiałymi dla użytkowników biznesowych u góry, po interakcję z urządzeniem u dołu.

Calabash Diagram warstw BDD przedstawiający pliki funkcji, definicje kroków i warstwę automatyzacji urządzenia

Jak zainstalować Calabash

Calabash on Windows Wymaga zainstalowania czterech wymagań wstępnych w kolejności. Ukończ każdą część w pełni przed rozpoczęciem kolejnej, ponieważ gem calabash-android sprawdza Ruby i Android SDK podczas instalacji.

Część I) Instalacja Java JDK – Zapoznaj się z tym przewodnikiem – /install-Java.html

Część II) Pobierz i zainstaluj Ruby.

Krok 1) Pobierz Ruby z URL https://rubyinstaller.org/downloads

Strona pobierania RubyInstaller zawierająca listę wersji Ruby dostępnych dla Windows

Krok 2) Otwórz plik exe i postępuj zgodnie z instrukcjami na ekranie. Po zakończeniu instalacji zobaczysz poniższy ekran. Kliknij Zakończ.

Ekran zakończenia pracy kreatora konfiguracji Ruby z podświetlonym przyciskiem Zakończ

Uruchom wiersz poleceń z włączonym Ruby Windows 10 i wpisz poniżej Polecenie.

ruby -v

Konsola wyświetla zainstalowaną wersję interpretera, jak pokazano poniżej.

Wiersz poleceń z Ruby wyświetlający zainstalowany numer wersji Ruby

Część III) Pobierz i zainstaluj Android

Krok 1) Pobierz Android Studio at https://developer.android.com/studio

Android Studio kreator konfiguracji uruchomiony na Windows podczas instalacji

Krok 2) Otwórz plik exe, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie i zakończ instalację. Po zakończeniu kliknij przycisk „Zakończ”.

Android Studio ekran zakończenia instalacji z przyciskiem Zakończ

Część IV) Instalacja Calabash Android

Krok 1) W konsoli wpisz gem install calabash-android. Instalacja rozpocznie się i potrwa chwilę.

Wyjście konsoli podczas instalacji pakietu Calabash-Android i jego zależności

Krok 2) Po zakończeniu instalacji wpisz calabash-android version

Konsola potwierdzająca zainstalowaną wersję gemu Calabash-Android

Współpraca z Calabash

Po zainstalowaniu klejnotu następnym zadaniem będzie znalezienie folderu frameworka i zrozumienie jego szkieletu.

Otwórz folder „calabash-android-0.9.0”. Znajduje się on w ścieżce C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Nazwy folderów zmienią się synchronicznie z wersją ruby/calabash, którą zainstalujesz na swoim komputerze.

Otwórz folder szkieletu funkcji. Zwróć uwagę na tę podstawową strukturę.

Calabash folder szkieletu funkcji zawierający katalogi wsparcia i step_definitions

  • Plik *.feature zawiera scenariusze, które będziemy automatyzować.
  • Metoda używana przez plik funkcji jest zapisana w pliku *.rb w folderze „step_definitions”.
  • Typowe metody, konfiguracja środowiska, instalacja aplikacji i zaczepy powinny być umieszczone w folderze „support”.

Zrezygnuj i zbuduj aplikację

  • Calabash-android rezygnacja *.apk
  • Calabash-kompilacja androida *.apk

Ponowne zrezygnowanie powoduje zastąpienie podpisu programisty kluczem debugowania, dzięki czemu serwer testowy może przeprowadzić instrumentację aplikacji, a etap kompilacji tworzy ten serwer testowy, jak pokazano poniżej na wyjściu konsoli.

Wyjście konsoli poleceń resign i build pakietu calabash-android tworzących serwer testowy

Podłącz urządzenie do systemu /Otwórz emulator

Sprawdź podłączone urządzenie. Wpisz polecenie

adb devices

Powinna zostać wyświetlona lista podłączonych urządzeń. Jeśli urządzenie jest niedostępne, należy wykonać kroki debugowania i parowania USB w Przewodnik po połączeniu ADB rozwiązać większość przypadków.

polecenie adb devices wyświetlające jeden dołączony Android urządzenie według numeru seryjnego

Jak znaleźć lokalizator elementów

  • Otwórz konsolę. Wpisz polecenie.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Powyższe polecenie uruchamia aplikację na urządzeniu. Aby znaleźć lokalizator elementów, użyj następującego polecenia.
    query "*"

Spowoduje to wyświetlenie wszystkich lokalizatorów elementów na bieżącym ekranie. Testerzy preferujący inspektora wizualnego mogą sprawdzić tę samą hierarchię za pomocą przeglądarka uiautomatorviewer.

Calabash konsola drukująca drzewo elementów zapytania dla bieżącego ekranu aplikacji

Calabash Struktura projektu i predefiniowane kroki

Zamiast ręcznie kopiować folder z plikami gem, framework może wygenerować dla Ciebie działający projekt. Uruchomienie generatora w katalogu projektu tworzy standardowy Cucumber układ, który każdy Calabash apartament oczekuje.

calabash-android gen

Wygenerowane drzewo oddziela trzy obszary pakietu BDD:

  • cechy/ — scenariusze Gherkina, jeden .funkcja plik na ścieżkę użytkownika.
  • funkcje/definicje_kroków/ — metody Ruby, które pasują do każdej linii Gherkina, łącznie z dołączonym plikiem calabash_steps.rb.
  • funkcje/wsparcie/ — konfiguracja środowiska i elementy, które instalują, uruchamiają i zamykają aplikację w każdym scenariuszu.

Dołączony plik calabash_steps.rb ma większe znaczenie, niż się wydaje na pierwszy rzut oka. Zawiera obszerny zestaw gotowych kroków w języku angielskim, dzięki czemu pierwszy scenariusz może naciskać przyciski, wprowadzać tekst i wykonywać operacje na widocznych ciągach znaków, zanim zostanie napisana pojedyncza, niestandardowa metoda. Niestandardowe kroki są potrzebne dopiero wtedy, gdy ścieżka przestanie obejmować te standardowe frazy.

Warto poznać dwa ustawienia na poziomie projektu już na początku. Zrzuty ekranu domyślnie trafiają do bieżącego katalogu roboczego, a zmienna środowiskowa SCREENSHOT_PATH przekierowuje je w inne miejsce, co pozwala zachować porządek w artefaktach kompilacji na współdzielonej maszynie. Interakcja z oknami dialogowymi systemu lub inną aplikacją wymaga backendu UIAutomator2, uruchamianego z parametrem start_test_server_in_background(with_uiautomator: true).

Tworzenie nowych skryptów

Otwórz plik funkcji i wpisz następujące wiersze

Plik funkcji logowania otwarty w edytorze pokazujący kroki scenariusza 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"

Otwórz plik definicji kroku i zdefiniuj metodę w pliku *.rb.

Mapa pliku definicji kroków Rubyping linia Gherkin do Calabash zapytanie o element

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

Wykonaj projekt testowy

Aby wykonać projekt testowy, użyj poniższego polecenia

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

Cucumber drukuje każdy krok w miarę jego wykonywania, a przebieg zaliczany kończy się scenariuszem i całkowitą liczbą kroków pokazaną tutaj.

Calabash uruchom dane wyjściowe pokazujące każdy krok Gherkina wykonywany na urządzeniu

Calabash podsumowanie konsoli raportujące ukończone scenariusze i liczbę kroków po wykonaniu

wspólny Calabash Błędy i jak je naprawić

Większość błędów pierwszego uruchomienia wynika z reguł pakietowania i uprawnień, od których zależy działanie serwera testowego, a nie z samego scenariusza. Poniższa tabela przedstawia najczęściej zgłaszane objawy wraz z ich udokumentowaną przyczyną.

Objaw Prawdopodobna przyczyna i rozwiązanie
Aplikacja ulega awarii natychmiast po rozpoczęciu testu W pliku APK brakuje uprawnienia android.permission.INTERNET, którego serwer testowy potrzebuje do akceptowania poleceń. Zadeklaruj uprawnienie w AndroidManifest.xml i odbudowa.
Przyciski i tekst nie reagują na stuknięcia Nie zadeklarowano wersji targetSdkVersion. Dodaj wpis uses-sdk, podając nazwę poziomu zestawu SDK, na którym została zbudowana aplikacja.
Serwer testowy nie może połączyć się z aplikacją Plik APK nie został ponownie podpisany kluczem debugowania. Uruchom polecenie resign, a następnie ponownie skompiluj przed uruchomieniem.
W czasie wykonywania nie są wyświetlane żadne urządzenia Debugowanie USB jest wyłączone lub brakuje sterownika. Najpierw sprawdź, czy numer seryjny pojawia się w wynikach urządzeń adb.
Kroki kończą się niepowodzeniem z powodu niezdefiniowanego błędu kroku Sformułowanie w Gherkinie nie pasuje do żadnego wyrażenia regularnego w step_definitions. Skopiuj sugerowany fragment kodu. Cucumber wydrukować i wdrożyć.

Dwa wpisy w manifeście naprawiają pierwsze dwa wiersze. Dodaj je przed ponownym podpisaniem pliku APK.

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

Błędy przekroczenia limitu czasu są zazwyczaj bardziej środowiskowe niż funkcjonalne. Powolny emulator, zimny start aplikacji lub synchronizacja w tle mogą spowodować, że ekran przekroczy okno oczekiwania, więc należy zwiększyć limit czasu przed przepisaniem kroku, który faktycznie był poprawny.

Is Calabash Nadal utrzymywane? Alternatywy dla nowoczesnych testów mobilnych

Calabash nie jest już aktywnie rozwijany. Microsoft przestał wnosić swój wkład po wprowadzeniu wsparcia dla ostatecznej wersji iOS 11 i Android 8 wydań, a projekt jest teraz zarchiwizowaną bazą kodu open-source bez opiekuna. Istniejące pakiety nadal działają na starszych urządzeniach, ale nowe prace nad wspieranym frameworkiem powinny się rozpocząć.

Platforma Najlepiej nadaje się do
Appium Android i iOS Pakiety wieloplatformowe w Java, Python, Ruby lub JavaSkrypt i najbliższy zamiennik Calabash zespół.
Espresso Android tylko Szybkie testy w toku pisane w Kotlinie lub Java przez samych twórców aplikacji.
XCUITest Tylko iOS Tubylec Xcode apartamenty, wspierany następca emerytowanego Struktura UIAutomation.
Maestro i Detox Android i iOS Nowsze projekty typu open source mają na celu zapewnienie odporności na błędy i obsługę aplikacji React Native.

Sam nawyk BDD przenosi się czysto. Pliki funkcji Gherkina pozostają dokładnie takie same, a zmieniają się tylko elementy definicji kroków, ponieważ Cucumber znajduje się nad sterownikiem, a nie w jego wnętrzu. Zespoły migrujące zazwyczaj zachowują pliki funkcji i przepisują kroki Ruby. Appiumi ponownie wykorzystać ten sam testy mobilne matryca urządzeń i testowanie automatyzacji rurociąg, który już prowadzą.

FAQ

Tak. Osobny gem calabash-ios umożliwiał sterowanie aplikacjami iOS za pomocą tego samego Ruby i Cucumber warstwa. Dzieli status wycofania z Android klejnot, więc obecna praca nad iOS jest lepiej obsługiwana przez XCUITest lub Appium.

Modele uczenia maszynowego teraz automatycznie naprawiają uszkodzone lokalizatory, sygnalizują niestabilne scenariusze poprzez porównanie historii uruchomień i generują raporty o awariach klastra, dzięki czemu najbardziej szkodliwe defekty są wykrywane jako pierwsze. Decyzja o tym, co potwierdzić, nadal należy do testera.

Copilot dobrze szkicuje powtarzające się części, takie jak blok wait_forping Zapytanie o element. Nie może ono znać identyfikatorów elementów Twojej aplikacji, dlatego traktuj każdy wygenerowany krok jako wersję roboczą, aby zweryfikować go z rzeczywistym wynikiem zapytania.

Cucumber jest ogólnym programem uruchamiającym BDD, który odczytuje Gherkina i wywołuje metody Ruby. Calabash jest biblioteką automatyzacji mobilnej, która wywołuje te metody. Cucumber decyduje, co jest uruchamiane; Calabash wykonuje stuknięcie, wprowadzenie tekstu i potwierdzenie.

Zrzuty ekranu są domyślnie zapisywane w bieżącym katalogu roboczym, którego nazwy są nadawane sekwencyjnie dla każdego uruchomienia. Ustawienie zmiennej środowiskowej SCREENSHOT_PATH przed uruchomieniem przekierowuje je do wybranego folderu, co pozwala oddzielić artefakty ciągłej integracji od kodu źródłowego.

Nie. Calabash Instrumentuje skompilowany plik APK, dlatego istnieje krok resign. Dostęp do źródła pomaga dodać stabilne identyfikatory elementów, ale sam framework wymaga jedynie kompilacji, aby móc resignować i instrumentować.

Tak. Ponieważ wykonanie jest pojedynczym wywołaniem wiersza poleceń, dowolny serwer kompilacji może je wywołać po wygenerowaniu pliku APK. Jenkins Zadanie zazwyczaj kończy działanie APK, uruchamia emulator, uruchamia oznaczone funkcje i archiwizuje raporty.

Zachowaj niezmienione pliki funkcji Gherkina i przepisz tylko treści definicji kroków względem Appium klient. Zapytania o elementy stają się strategiami lokalizacyjnymi, a haki, które zainstalowały aplikację, stają się pożądanymi możliwościami w konfiguracji sterownika.

Podsumuj ten post następująco: