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.
Czego się nauczysz
Dział zatytułowany „Czego się nauczysz”- 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
Generowanie testów cross-platform
Dział zatytułowany „Generowanie testów cross-platform”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 seconds2. 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.tsclaude "Create a comprehensive Detox test suite for our React Native app:
1. Analyze the navigation structure in /src/navigation/2. Generate E2E tests for each user flow: - Onboarding (first launch experience) - Authentication (login, signup, password reset) - Core feature (main product interaction) - Settings (profile edit, preferences, logout)
3. For each test: - Handle both iOS and Android platform differences - Include proper device synchronization waits - Test both portrait and landscape orientations - Handle system dialogs (permissions, alerts)
4. Create test utilities: - /e2e/utils/auth.ts (login/logout helpers) - /e2e/utils/permissions.ts (grant/deny system permissions) - /e2e/utils/navigation.ts (navigation state helpers)
Run on iOS simulator first, then verify Android compatibility."Generate mobile E2E tests for this React Native application:1. Analyze the app's navigation and screens2. Create Detox tests for all critical user flows3. Handle platform-specific differences (iOS vs Android)4. Run tests on both platforms and fix any failures5. Create a PR with the test suite
Include a device matrix configuration for CI.Flow Maestro do szybkich smoke testów
Dział zatytułowany „Flow Maestro do szybkich smoke testów”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:
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-successUruchom 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.
Wepnij smoke flow Maestro do CI w trybie headless: claude -p "run npm run e2e:smoke and fix any failing Maestro flow, then re-run until green" w zadaniu, które uruchamia jeden emulator iOS i jeden Android. Nieinteraktywny tryb -p plus hook Bash robią z tego niezawodną bramkę na każdy PR.
Przerzuć ciężkie uruchomienia na macierzy urządzeń poza swoją maszynę: odpal pełny zestaw Detox jako zadanie Codex Cloud, by uruchomił zadania iOS i Android równolegle i otworzył PR z wynikami, podczas gdy Ty pracujesz dalej lokalnie. Połącz to z automatyzacją GitHub, by uruchomienie w chmurze startowało na każdym PR.
Strategia macierzy urządzeń
Dział zatytułowany „Strategia macierzy urządzeń”Nie możesz testować na każdym urządzeniu. Wybieraj strategicznie.
Testowanie specyficzne dla platformy
Dział zatytułowany „Testowanie specyficzne dla platformy”Testowanie gestów i interakcji
Dział zatytułowany „Testowanie gestów i interakcji”Testowanie responsywnego layoutu
Dział zatytułowany „Testowanie responsywnego layoutu”Testowanie offline i sieciowe
Dział zatytułowany „Testowanie offline i sieciowe”Gdy coś się zepsuje
Dział zatytułowany „Gdy coś się zepsuje”“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.