Przejdź do głównej zawartości

Wzorce testowania aplikacji mobilnych

Twoja aplikacja React Native działa bezbłędnie na iPhone 15 Pro leżącym na biurku. Potem zaczynają napływać raporty o crashach: Android 12 na Samsung Galaxy A13, iOS 16 na iPhone SE (2. generacja) i layout tabletowy, w którym każdy element tekstowy nakłada się na siebie. Testowanie mobilne to eksplozja kombinatoryczna — dziesiątki urządzeń, wiele wersji systemu operacyjnego, różne rozmiary ekranu i zachowania specyficzne dla platformy. Narzędzia AI nie mogą testować na każdym urządzeniu, ale mogą generować testy pokrywające największy obszar.

  • Generowanie testów cross-platform dla aplikacji React Native i Flutter
  • Strategie macierzy urządzeń maksymalizujące pokrycie bez testowania każdej permutacji
  • Wzorce testowania specyficzne dla platformy: gesty, nawigacja i uprawnienia
  • Testowanie responsywnego layoutu na różnych rozmiarach i orientacjach ekranu
  • Prompty AI do generowania zestawów testów Detox i Maestro
Generate Detox E2E tests for our React Native app's onboarding flow:
Flow: Splash -> Welcome -> Permission Requests -> Profile Setup -> Home
1. Splash screen: Verify logo displays, auto-navigates after 2 seconds
2. Welcome: Swipe through 3 carousel pages, tap "Get Started"
3. Permissions: Handle push notification permission dialog (allow and deny paths)
4. Profile: Fill name, select avatar, tap "Complete"
5. Home: Verify the user name appears, main navigation tabs are visible
Platform-specific handling:
- iOS: Use system dialog matchers for permission requests
- Android: Use UiAutomator for permission dialogs
Test both:
- Happy path (all permissions granted)
- Permissions denied path (verify graceful degradation)
- Back navigation at each step
Save to /e2e/onboarding.e2e.ts

Detox daje ścisłą kontrolę na poziomie kodu; Maestro wymienia część tej kontroli na deklaratywne flow w YAML, które pisze się i czyta znacznie szybciej — idealne do smoke testów i dla osób z QA, które nie żyją w kodzie. Flow to po prostu lista komend działających na etykietach dostępności lub widocznym tekście:

.maestro/login-smoke.yaml
appId: com.yourcompany.app
---
- launchApp:
clearState: true
- assertVisible: "Welcome back"
- tapOn: "Email"
- inputText: "qa@example.com"
- tapOn: "Password"
- inputText: "hunter2"
- tapOn: "Sign in"
- assertVisible:
id: "home-tab"
- takeScreenshot: login-success

Uruchom go poleceniem maestro test .maestro/login-smoke.yaml. Poproś AI, by zbudowała flow na podstawie etykiet Twoich ekranów:

To, gdzie każde z narzędzi uruchamia te flow, różni się w praktyce:

Uruchamiaj Detox i Maestro lokalnie na uruchomionym symulatorze/emulatorze podczas iteracji, używając trybu Agent do naprawiania selektorów w momencie, gdy flow zawiedzie. Trzymaj urządzenie i bundler Metro uruchomione, by ponowne uruchomienia były szybkie; checkpointy Cursor pozwalają cofnąć błędną edycję testu bez utraty reszty.

Nie możesz testować na każdym urządzeniu. Wybieraj strategicznie.

“Testy Detox przechodzą na symulatorze, ale failują na prawdziwych urządzeniach.” Symulatory i emulatory nie replikują idealnie zachowania prawdziwych urządzeń. Gesty, wydajność i dialogi systemowe zachowują się inaczej. Uruchamiaj testy critical-path na przynajmniej jednym prawdziwym urządzeniu przez usługę chmurową (BrowserStack, AWS Device Farm).

“Testy są niestabilne z powodu timingu animacji.” Animacje mobilne powodują problemy z timingiem. Wyłącz animacje wewnątrz procesu aplikacji, nie z poziomu testu: spraw, by Twój AppDelegate sprawdzał launch arg przekazywany przez test (np. -disableAnimations) i wywoływał UIView.setAnimationsEnabled(false) — wywołanie tego z samego testu E2E nie ma efektu, bo działa on w osobnym procesie. Na Androidzie ustaw Developer options > Window/Transition/Animator scale na 0x w obrazie emulatora lub polegaj na wbudowanej synchronizacji Detox, która przeczeka animacje.

“Testy Android zachowują się inaczej na różnych producentach.” Samsung, Xiaomi i OnePlus dodają własne warstwy UI wpływające na dialogi systemowe i nawigację. Testuj na trzech głównych producentach z Twoich analityk, nie tylko na standardowym emulatorze Pixel.

“Nasze CI jest zbyt wolne na testy mobilne.” Zestawy testów mobilnych są z natury wolniejsze niż testy webowe. Uruchamiaj smoke testy (3-5 krytycznych flowów) na każdym PR i pełny zestaw w nocy. Użyj chmurowych farm urządzeń do równoległego wykonywania.