Nasza strona używa cookies. Dowiedz się więcej o celu ich używania i zmianie ustawień w przeglądarce. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Automatyzacja mobilnych testów akceptacyjnych przy użyciu Calabash

  • 10.04.2017

Testy automatyczne z calabash


W Pegasystems jeden z głównych działów zajmuje się rozwojem aplikacji mobilnych, w związku z czym używamy wielu mechanizmów testowania na urządzeniach przenośnych. W tym artykule chciałbym przybliżyć samo zagadnienie testowania aplikacji mobilnych, a także przedstawić jedno z najprostszych rozwiązań, zarówno pod kątem wdrożenia, jak i systematycznego użycia, które wykorzystujemy w naszej pracy.

 

Przy obecnych trendach Agile’owej produkcji oprogramowania, w której kolejne wersje produktu są tworzone iteracyjnie w krótkich odstępach czasu bardzo ważne jest, żeby przy dokładaniu czegoś nowego przypadkiem nie zepsuć czegoś co już działa. Testy regresyjne to podstawowy sposób ochrony przed takimi sytuacjami, lecz kiedy okazuje się, że te same testy trzeba wykonywać kilka, lub kilkanaście razy w krótkim odstępie czasu, nawet najwytrwalszym testerom puszczają nerwy. Z pomocą przychodzi automatyzacja.

 

Definicja wymagań

Najprostszym sposobem na testy regresyjne UI jest sprawdzenie scenariusza przypadku użycia. Otwieramy aplikację, logujemy się, przechodzimy do danego ekranu, wypełniamy i klikamy co trzeba, a na końcu sprawdzamy czy ekran wyświetla to co powinien. Mniej więcej w podobny do powyższego sposób definiowane są przebiegi scenariuszy użycia aplikacji, na podstawie których konstruuje się scenariusze testów akceptacyjnych. Czy nie byłoby lepiej załatwić wszystko za jednym zamachem?

Framework testowy Cucumber w swojej stabilnej wersji pojawił się około 3 lat temu i dość szybko zaskarbił sobie przychylność i uznanie nie tylko testerów, ale również przedstawicieli biznesowych, odpowiedzialnych za definicję wymagań przy produkcji oprogramowania. Dzięki zastosowaniu parsera języka potocznego Gherkin przykładowy kod testu automatycznego wygląda mniej więcej tak:

Scenario: Check basic Submit

Given I am logged into the application
And I am on the main page
When I click on Submit button
Then I see a success message

 

Każda linijka powyższego kodu może zostać zdefiniowana przez testera w języku Ruby w osobnych plikach definicji kroków, dzięki czemu otrzymujemy bardzo ładną separację prezentacji i  dokumentacji testu, od jego rzeczywistej skryptowej definicji.

Dodatkową zaletą takiego rozwiązania jest łatwość w ustaleniu przyczyny niepowodzenia testu. Przy poprawnie zapisanych krokach scenariusza natychmiast dostajemy informację, który z nich nie został wykonany poprawnie, naprowadzając testera na bezpośrednią przyczynę błędu.

 

Krok w mobilność

Potencjał Cucumber zauważyła firma Xamarin, która opierając się na wszystkich dobrodziejstwach tego rozwiązania, dołożyła do niego swoje pięć groszy tworząc framework o egzotycznej nazwie Calabash. Ten z kolei jest dedykowany do testowania aplikacji mobilnych na platformy Android i iOS. Poza niebywałą przejrzystością zapisu samego scenariusza Calabash zyskał grono zwolenników również z kilku innych powodów:

  • proces instalacyjny to dosłownie zaciągnięcie dwóch gem’ów Ruby’ego;
  • możliwość uruchomienia tego samego testu zarówno na Androidzie jak i iOS;
  • istniejące biblioteki metod obejmują zdecydowaną większość potrzebnych akcji jak zwykłe naciśnięcie elementu o podanych parametrach, czy choćby przeciągnięcie po ekranie w dowolną stronę.

Ciekawym rozwiązaniem jest forma Query Syntax, czyli zapytań wyszukiwania elementu na którym na zostać wykonane działanie. Dzięki niemu mamy możliwość, w  przeciwieństwie do np. Appium, wykonywania operacji dynamicznie na elementach różnych kontekstów, bez potrzeby przełączania się między nimi, by ustalić konkretny aktywny widok. Jest to szczególnie pomocne przy testowaniu aplikacji hybrydowych, które łączą technologię widoków natywnych i WebView.

 

Od testerów dla testerów

Calabash dostępny jest jako projekt open-source na platformie GitHub, a ponieważ popularne IDE jak RubyMine posiadają wsparcie dla Cucumber (a co za tym idzie i dla Calabash) rozpoczęcie przygody z tym rozwiązaniem nie powinno zająć więcej niż jeden dzień.

 

Device farm przyjacielem testera

Framework znalazł również uznanie u największych graczy na rynku. Amazon Web Services Device Farm wspiera Calabash jako jedno z niewielu rozwiązań testów na obu platformach mobilnych. Sam produkt Amazon'a to świetne, intuicyjne rozwiązanie dla testów aplikacji mobilnych. Szeroka gama dostępnych urządzeń, możliwość równoległego uruchomienia testów na różnych urządzeniach i platformach oraz liczne narzędzia do analizy błędów (włącznie z nagraniem wideo rzeczywistego przebiegu testu) to aż nadto. Jednak jeśli bariera cenowa usług firmy Jeff’a Besos’a jest zbyt duża do pokonania dla producenta aplikacji, wtedy wystarczy podłączyć własne urządzenie mobilne do stacji roboczej, by cieszyć się pełnoprawnym środowiskiem do testów automatycznych.

 

Powyższy artykuł to oczywiście tylko wstęp do świata testowania aplikacji mobilnych, przy pomocy którego chciałbym Ciebie, Czytelniku, zachęcić do postawienia własnych pierwszych kroków w tej dziedzinie.

 

Przydatne linki:

  • http://calaba.sh/
  • https://github.com/cucumber/cucumber/wiki/Gherkin

 

Grzegorz Bogusz – Inżynier oprogramowania ds. kontroli jakości w Pegasystems