Prowadzenie automatyzacji testów przy użyciu Appium i Cucumber na infrastrukturze opartej na chmurze
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.

Główne cechy Appium obejmują:
- 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.
- 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.
- Brak konieczności modyfikacji aplikacji: Appium umożliwia testowanie aplikacji natywnych, hybrydowych i mobilnych bez konieczności wprowadzania jakichkolwiek zmian w kodzie aplikacji.
- 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:
- Framework Automatyzacji Mobilnej – Appium
Wybierz framework automatyzacji mobilnej kompatybilny z Cucumberem do pisania i wykonania skryptów testowych. - 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. - 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. - 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. - Ś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. - 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. - 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. - 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
- 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. - Zainstaluj Node.js:
Pobierz i zainstaluj Node.js ze strony internetowej: Node.js.
Postępuj zgodnie z instrukcjami instalacji dostarczonymi dla twojego systemu operacyjnego. - 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
- 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ą.
- 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>
- Utwórz Strukturę Projektu:
Wewnątrz katalogu swojego projektu utwórz następującą strukturę:
|-- src
| |-- test
| |-- java
| |-- *.java
| |-- resources
| |-- *.feature
- Napisz Pliki Cech:
Utwórz pliki cech w katalogu src/test/resources, używając składni Gherkina do opisu scenariuszy testowych. - 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. - 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. - 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
- 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


