Automatyczne testowanie (IT)Mobile QA Automation Engineer

Jak zrealizować automatyzację testowania aplikacji mobilnych, biorąc pod uwagę szczególne cechy platform (Android/iOS) oraz różne podejścia do automatyzacji?

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź.

Automatyzacja testowania aplikacji mobilnych pojawiła się praktycznie jednocześnie z masowym rozpowszechnieniem smartfonów. Początkowo automatyzacja była trudna, ponieważ narzędzia znacznie różniły się w zależności od platformy, co tworzyło problemy z utrzymywaniem uniwersalnych testów.

Historia pytania

Na początku automatyzacja aplikacji mobilnych była prowadzona oddzielnymi narzędziami dla każdej platformy, na przykład, UI Automator dla Androida i UIAutomation/XCUITest dla iOS. Prowadziło to do dublowania scenariuszy testowych i dodatkowych kosztów.

Z czasem pojawiły się ramy cross-platformowe — na przykład, Appium, pozwalające na wykorzystanie wspólnego kodu dla obu platform, a różnorodność bibliotek i sposobów integracji się rozszerzyła.

Problem

Główne trudności:

  • Różne podejścia do automatyzacji dla Androida i iOS — różne API, ograniczenia w bezpieczeństwie i emulacji.
  • Wsparcie dla różnych wersji urządzeń, systemów operacyjnych i rozdzielczości ekranu.
  • Wolna i niestabilna praca niektórych frameworków, różnice w zachowaniu UI.

Rozwiązanie

Do automatyzacji aplikacji mobilnych zaleca się korzystanie z narzędzi cross-platformowych (Appium, Detox itp.), a testy budować zgodnie z zasadą ponownego wykorzystania kodu z uwzględnieniem szczególnych cech platformy. Ważne jest to, aby testy były wspierane przez wysokiej jakości mocki i ekspresową instalację danych testowych.

Kluczowe cechy:

  • Cross-platformowość i ponowne wykorzystanie testów
  • Integracja z CI/CD dla szybkiej informacji zwrotnej
  • Użycie emulatorów, symulatorów i rzeczywistych urządzeń dla pokrycia różnych scenariuszy

Pytania z haczykiem.

Czy można uruchomić testy dla aplikacji iOS na komputerze z systemem Windows przy użyciu Appium?

Nie, pełnoprawna automatyzacja testowania aplikacji iOS jest możliwa tylko na macOS, ponieważ narzędzia takie jak XCUITest/Xcode uznają tylko system Apple.

Dlaczego nie zaleca się uruchamiania testów Selenium/Webdriver bezpośrednio dla aplikacji mobilnych?

Selenium/Webdriver są przeznaczone do testowania przeglądarek. Do aplikacji mobilnych używane są specyficzne sterowniki (na przykład Appium), które emulują pracę wewnątrz aplikacji.

Czy można ufać tylko testowaniu na emulatorach i nie używać rzeczywistych urządzeń?

Nie, tylko emulatory nie pokrywają wszystkich cech platformy: problemy z wydajnością, różnice w sensorach i zachowaniach systemów operacyjnych ujawniają się tylko na rzeczywistych urządzeniach.

Typowe błędy i antywzorce

  • Uruchamianie testów tylko na emulatorach
  • Dublowanie kodu testów dla każdej platformy
  • Ignorowanie różnic między UI Androida a iOS

Przykład z życia

Negatywna sytuacja

Zespół automatyzacji testów pisał oddzielne testy dla Androida za pomocą UI Automator i przez XCUITest dla iOS, nie używając cross-platformowej powłoki.

Zalety:

  • Szybkość wprowadzania testów na początku
  • Maksymalna adaptacja do każdej platformy

Wady:

  • Podwójny nakład pracy
  • Wzrost błędów i różne scenariusze na różnych platformach

Pozytywna sytuacja

Zespół wprowadził Appium z wzorem Page Object i udało się pokryć 90% testów wspólną logiką, pozostawiając specyficzne zachowania tylko w oddzielnych metodach.

Zalety:

  • Szybka obsługa nowych scenariuszy
  • Mniej kodu, mniej błędów

Wady:

  • Pierwszy etap wprowadzenia zajął więcej czasu
  • Wymagani byli specjaliści z doświadczeniem w automatyzacji mobilnej