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.
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.
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
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.
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.
Część III) Pobierz i zainstaluj Android
Krok 1) Pobierz Android Studio at https://developer.android.com/studio
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”.
Część IV) Instalacja Calabash Android
Krok 1) W konsoli wpisz gem install calabash-android. Instalacja rozpocznie się i potrwa chwilę.
Krok 2) Po zakończeniu instalacji wpisz calabash-android version
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ę.
- 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.
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.
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 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
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.
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.
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ą.
















