Prowadzenie automatyzacji testów przy użyciu Appium i Cucumber na infrastrukturze opartej na chmurze

Piotr Siuta

Wprowadzenie

W dzisiejszej cyfrowej erze, aplikacje mobilne stały się niezbędnymi narzędziami napędzającymi innowacje biznesowe na całym świecie w różnorodnych sektorach. Najnowsze badania ujawniają przerażającą liczbę 8,93 miliona aplikacji mobilnych, z szacowanymi 255 miliardami pobrań na całym świecie. Ta ogromna liczba podkreśla kluczową rolę, jaką pełnią aplikacje mobilne w ułatwianiu różnorodnych operacji biznesowych. Od transakcji bankowych po zakupy online, od zabezpieczania polis ubezpieczeniowych po umawianie się na wizyty lekarskie, a także od uzyskiwania porad zdrowotnych po rozliczanie rachunków za usługi komunalne – aplikacje mobilne pełnią rolę wszechstronnych towarzyszy dla użytkowników w ich codziennych zadaniach. W świecie tej dynamicznej przestrzeni, Testowanie Automatyczne Aplikacji Mobilnych wyłania się jako kluczowy mechanizm do dokładnego testowania i udoskonalania tych niezbędnych aplikacji.

Ten artykuł zgłębia subtelny obszar testowania automatycznego, łącząc potęgę narzędzi Appium i Cucumber w oparciu o platformę chmurową. Metodologia jest uproszczona i dostępna – wystarczy tylko twoja aplikacja mobilna, niezbędne ustawienia z Appium i Cucumber oraz niezawodna infrastruktura testowania w chmurze, aby rozpocząć tę podróż.

Co to jest Appium?

Appium to narzędzie do automatyzacji typu open-source wykorzystywane do testowania aplikacji mobilnych. Pozwala programistom i testerom na automatyzację testów aplikacji mobilnych na różnych platformach, takich jak iOS, Android i Windows, przy użyciu jednego interfejsu API. Appium obsługuje wiele języków programowania, takich jak Java, Python, JavaScript, Ruby i inne, co sprawia, że jest elastyczny dla programistów, którzy chcą pisać testy w swoim preferowanym języku.

appium

Główne cechy Appium obejmują:

  1. Kompatybilność z wieloma platformami: Appium obsługuje testowanie aplikacji na różnych platformach, takich jak iOS, Android i Windows, eliminując konieczność pisania oddzielnych skryptów testowych dla każdej platformy.
  2. Wsparcie dla wielu języków programowania: Programiści mogą pisać skrypty testowe w swoim preferowanym języku programowania, korzystając z bibliotek klientów Appium dla języków takich jak Java, Python, JavaScript, Ruby i inne.
  3. Brak konieczności modyfikacji aplikacji: Appium umożliwia testowanie aplikacji natywnych, hybrydowych i mobilnych bez konieczności wprowadzania jakichkolwiek zmian w kodzie aplikacji.
  4. Wsparcie dla wielu frameworków automatyzacji: Appium obsługuje popularne frameworki automatyzacji, takie jak Selenium WebDriver, ułatwiając testerom, którzy już znają te frameworki, przejście do testowania aplikacji mobilnych.

5.Łatwa integracja z frameworkami testowymi: Appium może być łatwo zintegrowany z popularnymi frameworkami testowymi, takimi jak TestNG, JUnit, XCTest i innymi, umożliwiając testerom wykorzystanie istniejących frameworków i narzędzi.

Ogólnie rzecz biorąc, Appium upraszcza proces automatyzacji testowania aplikacji mobilnych, zapewniając zintegrowaną platformę obsługującą wiele platform, języków programowania i frameworków automatyzacji.

Zrozumienie Cucumbera i Jego Roli w Optymalizacji Automatyzacji Testów

Automatyzacja testów za pomocą Cucumbera polega na wykorzystaniu Cucumbera, popularnego narzędzia do tworzenia oprogramowania w sposób zorientowany na zachowanie (BDD), do automatyzacji scenariuszy testowych w czytelnej dla człowieka formie. Cucumber pozwala testerom i programistom pisać przypadki testowe w postaci zwykłego tekstu, korzystając z prostego, anglojęzycznego składni znanego jako Gherkin. Następnie przypadki testowe są tłumaczone na kod wykonywalny za pomocą definicji kroków napisanych w językach programowania, takich jak Java, Ruby, JavaScript itp.

Oto podstawowy przegląd działania automatyzacji testów za pomocą Cucumbera:

Pisanie plików cech: Scenariusze testowe są pisane w plikach cech, używając składni Gherkina. Pliki cech opisują zachowanie systemu w strukturalnym formacie, który jest łatwy do czytania i zrozumienia. Każdy plik cechy zazwyczaj zawiera wiele scenariuszy, z których każdy reprezentuje przypadek testowy.

Przykładowy plik cechy (login.feature):

Feature: User Login
  As a registered user
  I want to be able to log in to my account
  So that I can access my personalized content

  Scenario: Successful login
    Given I am on the login page
    When I enter my username and password
    And I click the login button
    Then I should be logged in successfully

Automatyzacja testów za pomocą Cucumbera oferuje wiele korzyści, w tym poprawę współpracy między interesariuszami, łatwiejsze utrzymanie skryptów testowych oraz zwiększoną czytelność przypadków testowych. Dodatkowo, promuje podejście zorientowane na zachowanie w testowaniu, gdzie testy są pisane z perspektywy użytkowników końcowych, koncentrując się na zachowaniu aplikacji, a nie na jej szczegółach implementacyjnych.

Przykładowe definicje kroków (login_steps.java):

import io.cucumber.java.en.*;

public class LoginSteps {
    @Given("^I am on the login page$")
    public void navigateToLoginPage() {
        // Code to navigate to the login page
    }

    @When("^I enter my username and password$")
    public void enterCredentials() {
        // Code to enter username and password
    }

        @And("^I click the login button$")
    public void clickLoginButton() {
        // Code to click the login button
    }

    @Then("^I should be logged in successfully$")
    public void verifySuccessfulLogin() {
        // Code to verify successful login
    }
}

Przykład kodu pliku cechy wykorzystanego w Cucumberze

Feature: Verify Product Search Functionality

  Scenario Outline: Verify user can search for products on the website
    Given User is on the homepage of the shopping site
    When User enters the search keyword <keyword>
    And User clicks on the search button
    Then User should see search results for the entered keyword

    Examples:
      | keyword    |
      | headphones |

Przykład kodu wykorzystanego w pliku definicji kroków

public class ProductSearch {
    private final WebDriver driver = new ChromeDriver();

    @Given("^User is on the homepage of the shopping site$")
    public void userIsOnHomePage() {
        // Implementation to navigate to the homepage
    }

    @When("^User enters the search keyword ([^\"]*)$")
    public void userEntersSearchKeyword(String keyword) {
        WebElement searchField = driver.findElement(By.id("search-field"));
        searchField.sendKeys(keyword);
    }

    @And("^User clicks on the search button$")
    public void userClicksOnSearchButton() {
        WebElement searchButton = driver.findElement(By.id("search-button"));
        searchButton.click();
    }

    @Then("^User should see search results for the entered keyword$")
    public void verifySearchResults() {
        // Implementation to verify search results
    }
}

W tym przykładzie testujemy funkcjonalność wyszukiwania produktów na stronie internetowej. Plik cechy przedstawia kroki wyszukiwania produktu za pomocą różnych słów kluczowych, a definicje kroków odpowiadają każdemu krokowi w pliku cechy, implementując działania do wykonania podczas testu.

Jak używać Cucumbera do testowania mobilnego i jakie są niezbędne wymagania?

Cucumber można wykorzystać do testowania mobilnego poprzez zintegrowanie go z mobilnymi frameworkami automatyzacji, takimi jak Appium lub Calabash. Oto ogólny przegląd sposobu korzystania z Cucumbera do testowania mobilnego oraz niezbędne wymagania:

Niezbędne Wymagania:

  1. Framework Automatyzacji Mobilnej – Appium
    Wybierz framework automatyzacji mobilnej kompatybilny z Cucumberem do pisania i wykonania skryptów testowych.
  2. Język Programowania i Biblioteki:
    Zainstaluj środowisko uruchomieniowe języka programowania (np. Java, Ruby) oraz niezbędne biblioteki i zależności do testowania mobilnego.
  3. Urządzenia Mobilne lub Emulatory/Symulatory:
    Miej dostęp do fizycznych urządzeń mobilnych lub emulatorów/symulatorów do testowania.
    Upewnij się, że urządzenia mobilne lub emulatory/symulatory są poprawnie skonfigurowane i dostępne z środowiska testowego.
  4. Aplikacja Testowana:
    Miej dostępną aplikację mobilną (APK dla Androida lub IPA dla iOS) do testowania.
    Upewnij się, że aplikacja mobilna jest kompatybilna z wybranym frameworkiem automatyzacji mobilnej.
  5. Środowisko Programistyczne:
    Skonfiguruj środowisko programistyczne z IDE (Zintegrowane Środowiska Programistyczne) lub edytorami tekstowymi do pisania i edycji skryptów testowych.
    Skonfiguruj środowisko do automatyzacji mobilnej, konfigurując pożądane możliwości dla urządzenia mobilnego lub emulatora/symulatora w twoich skryptach testowych.
  6. Pisanie Plików Cech:
    Zdefiniuj scenariusze testowe dla testowania mobilnego w plikach cech, używając składni Gherkin. Pliki cech powinny opisywać zachowanie aplikacji mobilnej z perspektywy użytkownika.
  7. Implementacja Definicji Kroków:
    Napisz definicje kroków w wybranym języku programowania (np. Java, Ruby), aby zdefiniować działania odpowiadające każdemu krokowi w plikach cech.
    Użyj interfejsów API Appium do interakcji z aplikacją mobilną podczas testowania. Obejmuje to działania takie jak dotyk na elementy, wprowadzanie tekstu, przewijanie itp.
  8. Uruchamianie Testów:
    Wykonaj testy Cucumbera, uruchamiając zestaw testów za pomocą wybranego narzędzia do uruchamiania testów w języku programowania (np. JUnit dla Javy, RSpec dla Ruby).
    Upewnij się, że urządzenie mobilne lub emulator/symulator jest podłączony i dostępny podczas wykonywania testów.

Wspomniane narzędzia oferują różnorodny zestaw funkcji i korzyści, które poprawiają proces automatyzacji testowania. Obejmują one:

  • Model Obiektu Strony (POM)
  • Cucumber do testowania opartego na zachowaniach
  • Wsparcie dla prac przepływu CI/CD
  • Wykonywanie równoległe
  • Testowanie wieloplatformowe
  • Programowa kontrola usługi Appium
  • Raporty testowe w formacie HTML
  • Wsparcie dla interfejsu wiersza poleceń (CLI)

Te funkcje wspólnie przyczyniają się do stworzenia solidnego i efektywnego narzędzia do automatyzacji testów, zapewniającego skuteczność i niezawodność procesu testowania.

Konfiguracja i ustawienia środowiska do instalacji Appium i Cucumber

  1. Zainstaluj Zestaw Narzędzi Programistycznych Java (JDK):
    Pobierz i zainstaluj Zestaw Narzędzi Programistycznych Java (JDK) ze strony internetowej Oracle: Pobierz Java SE.
    Postępuj zgodnie z instrukcjami instalacji dostarczonymi dla twojego systemu operacyjnego.
  2. Zainstaluj Node.js:
    Pobierz i zainstaluj Node.js ze strony internetowej: Node.js.
    Postępuj zgodnie z instrukcjami instalacji dostarczonymi dla twojego systemu operacyjnego.
  3. Zainstaluj Appium:
    Otwórz terminal lub wiersz poleceń.
    Zainstaluj Appium globalnie za pomocą narzędzia npm (Node Package Manager), uruchamiając następujące polecenie:
npm install -g appium

Zainstaluj Appium Doctor, narzędzie służące do weryfikacji instalacji Appium i jej zależności:

npm install -g appium-doctor
  1. Zweryfikuj Instalację Appium:
    Uruchom Appium Doctor, aby zweryfikować instalację Appium i jej zależności:
appium-doctor

Rozwiąż wszystkie zgłoszone problemy przez Appium Doctor przed kontynuacją.

  1. Zainstaluj Cucumber z Javą:
    Utwórz nowy katalog dla swojego projektu Cucumber.
    Przejdź do katalogu za pomocą terminala lub wiersza poleceń.
    Zainicjuj nowy projekt Maven, wykonując:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Dodaj zależności Cucumbera do pliku pom.xml:

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>6.12.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>6.12.2</version>
    <scope>test</scope>
</dependency>
  1. Utwórz Strukturę Projektu:
    Wewnątrz katalogu swojego projektu utwórz następującą strukturę:
|-- src
|   |-- test
|       |-- java
|           |-- *.java
|       |-- resources
|           |-- *.feature
  1. Napisz Pliki Cech:
    Utwórz pliki cech w katalogu src/test/resources, używając składni Gherkina do opisu scenariuszy testowych.
  2. Wdrożenie Definicji Kroków:
    Napisz definicje kroków w plikach Java w katalogu src/test/java, aby zdefiniować działania odpowiadające każdemu krokowi w plikach cech.
  3. Skonfiguruj Appium:
    Skonfiguruj Appium do uruchamiania serwera Appium programistycznie lub za pomocą wiersza poleceń przed uruchomieniem testów.
    Upewnij się, że twój serwer Appium jest uruchomiony i dostępny.
  4. Uruchom Testy:
    Wykonaj swoje testy Cucumbera, uruchamiając klasę testową JUnit.
    Alternatywnie, możesz użyć wtyczki Maven Surefire do uruchamiania testów z wiersza poleceń:
mvn test
  1. Analizuj Wyniki:
    Po wykonaniu testów, przejrzyj wyniki testów i rozwiąż wszelkie niepowodzenia lub problemy.
    Dążąc do tych kroków, możesz skonfigurować środowisko do instalacji Appiuma i Cucumbera z Javą, oraz zacząć pisać i wykonywać testy automatyczne dla swoich aplikacji mobilnych.

Jak platformy testowe w chmurze zwiększają automatyzację testów przy użyciu Appium i Cucumbera

  • Skalowalność: Platformy testowe w chmurze zapewniają skalowalną infrastrukturę, pozwalającą na uruchamianie testów na dużej liczbie rzeczywistych urządzeń oraz emulatorów/symulatorów jednocześnie. Ta skalowalność zapewnia możliwość wykonania testów na różnych konfiguracjach urządzeń, systemach operacyjnych i rozmiarach ekranów, umożliwiając kompleksowe pokrycie testami.
  • Pokrycie Urządzeń: Platformy testowe w chmurze oferują dostęp do szerokiego zakresu rzeczywistych urządzeń oraz emulatorów/symulatorów. To obszerne pokrycie urządzeń umożliwia testowanie aplikacji mobilnych na różnorodnych urządzeniach, w tym najnowszych modelach i wersjach systemu operacyjnego, zapewniając kompatybilność i optymalną wydajność na różnych urządzeniach.
  • Wykonywanie Testów Współbieżnych: Platformy testowe w chmurze obsługują współbieżne wykonywanie testów, umożliwiając jednoczesne uruchamianie wielu zestawów testów na różnych urządzeniach. To współbieżne wykonanie znacząco skraca czas wykonania testów, przyspieszając pętlę zwrotną i umożliwiając szybsze dostarczanie oprogramowania wysokiej jakości.
  • Natychmiastowe Dostarczanie: Platformy testowe w chmurze zapewniają natychmiastowe dostarczanie środowisk testowych, eliminując potrzebę ręcznej konfiguracji urządzeń i infrastruktury. Dzięki natychmiastowemu dostarczaniu, możesz szybko uruchamiać środowiska testowe w razie potrzeby, zwiększając wydajność i redukując czas konfiguracji.
  • Zdalny Dostęp: Platformy testowe w chmurze oferują zdalny dostęp do rzeczywistych urządzeń oraz emulatorów/symulatorów, pozwalając testerom i programistom na zdalne interakcje z urządzeniami w celach debugowania i rozwiązywania problemów. Zdalny dostęp umożliwia współpracę między członkami zespołu znajdującymi się w różnych lokalizacjach geograficznych, ułatwiając skuteczne testowanie i rozwiązywanie problemów.
  • Integracja z CI/CD Pipelines: Platformy testowe w chmurze bezproblemowo integrują się z ciągłymi procesami integracji i dostarczania (CI/CD), umożliwiając zautomatyzowane wykonanie testów jako części cyklu życia oprogramowania. Integracja z CI/CD zapewnia automatyczne wykonanie testów za każdym razem, gdy następuje zmiana kodu, pomagając wykryć i rozwiązać problemy we wczesnych fazach procesu deweloperskiego.
  • Raportowanie i Analiza Danych: Platformy testowe w chmurze zapewniają kompleksowe możliwości raportowania i analizy danych, pozwalając śledzić wyniki testów, monitorować metryki wykonania testów i analizować pokrycie testami. Szczegółowe raporty i analizy umożliwiają interesariuszom uzyskanie wglądu w jakość aplikacji oraz podejmowanie świadomych decyzji dotyczących dalszego rozwoju i wydania.

Ogólnie rzecz biorąc, platformy testowe w chmurze zwiększają automatyzację testów za pomocą Appiuma i Cucumbera, dostarczając skalowalnej infrastruktury, obszernego pokrycia urządzeń, współbieżnego wykonywania testów, natychmiastowego dostarczania, zdalnego dostępu, bezproblemowej integracji z CI/CD oraz solidnych możliwości raportowania i analizy danych. Te korzyści przyczyniają się do szybszego, bardziej wydajnego i wyższej jakości testowania aplikacji mobilnych.

Podsumowanie

W przewodniku dotyczącym Appiuma i Cucumbera, który został wcześniej przedstawiony, eksplorowaliśmy obszerny samouczek, w którym opisano kroki instalacji Appiuma i Cucumbera. Ponadto zagłębiliśmy się w wykorzystanie tych narzędzi do prowadzenia testów mobilnych w chmurze. Podkreślone zostały zalety korzystania z platform testowych w chmurze, podkreślając ich efektywność kosztową i przyspieszone procesy testowania na różnorodnych platformach.

Źródło

  • https://medium.com

Poznaj mageek of j‑labs i daj się zadziwić, jak może wyglądać praca z j‑People!

Skontaktuj się z nami