Sobes.tech
Middle+

Opowiedz o przypadkach sprawdzania ponownego połączenia w aplikacji mobilnej.

sobes.tech AI

Odpowiedź od AI

Testy ponownego łączenia sprawdzają, jak aplikacja mobilna zachowuje się podczas utraty i ponownego przywracania połączenia z serwerem lub innymi zasobami sieciowymi.

Scenariusze testowe:

  • Zmiana sieci:
    • Wi-Fi -> Internet mobilny (LTE/5G).
    • Internet mobilny (LTE/5G) -> Wi-Fi.
    • Wi-Fi (jeden punkt) -> Wi-Fi (inny punkt).
  • Utrata sygnału:
    • Wejście do strefy bez zasięgu (winda, metro).
    • Włączenie/wyłączenie trybu samolotowego.
    • Wymuszone wyłączenie interfejsów sieciowych (Wi-Fi, dane komórkowe) przez ustawienia urządzenia.
  • Problemy z serwerem:
    • Tymczasowa niedostępność API.
    • Restart serwera.
    • Opóźnienia sieciowe (symulowane przez proxy).

Co sprawdzamy:

  • Zachowanie UI/UX:
    • Wyświetlanie wskaźników ładowania lub błędów.
    • Zachowanie bieżącego stanu użytkownika (np. niedokończony wpis, pozycja na liście).
    • Poprawne wyświetlanie powiadomień o utracie/odzyskaniu połączenia.
    • Brak awarii lub "zawieszania się" aplikacji.
  • Integralność danych:
    • Dane wysyłane/odbierane podczas rozłączenia powinny być poprawnie obsłużone po przywróceniu.
    • Dane zapisane lokalnie powinny synchronizować się z serwerem.
  • Logika ponawiania prób (Retry):
    • Aplikacja powinna mieć logikę ponawiania prób z opóźnieniem wykładniczym (backoff).
    • Limity na liczbę prób i czas oczekiwania.
  • Zarządzanie sesjami:
    • Sesja użytkownika powinna być zachowana lub poprawnie przywrócona bez wymuszonego wylogowania.

Narzedzia i techniki:

  • Proksy sieciowe: Charles Proxy, Fiddler. Pozwalają symulować opóźnienia, utratę pakietów, blokować żądania.
  • Narzędzia sieciowe: Narzędzia deweloperskie w przeglądarce (dla webview), specjalistyczne narzędzia mobilne do kontroli ruchu.
  • Tryb "Samolot": Prosty sposób symulacji całkowitej utraty połączenia.
  • Wyłączanie interfejsów sieciowych: Przez ustawienia systemowe urządzenia.
  • Emulatory sieci: Narzędzia pozwalające symulować różne warunki sieciowe (prędkość, opóźnienie, utrata pakietów).
  • Automatyzacja: Użycie Appium, Espresso (Android), XCUITest (iOS) do automatyzacji scenariuszy z przełączaniem sieci lub wywołaniem funkcji systemowych (włączanie/wyłączanie trybu samolotowego).
// Przykład automatyzacji testu ponownego łączenia z użyciem Appium (Python)

from appium import webdriver
import time

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Android Emulator', # lub rzeczywiste urządzenie
    'appPackage': 'com.yourapp.package',
    'appActivity': 'com.yourapp.MainActivity',
    'automationName': 'UiAutomator2'
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

try:
    // Wykonaj działania wymagające sieci
    driver.find_element_by_accessibility_id("some_button").click()
    time.sleep(5) # Czekaj na załadowanie danych

    // Włącz tryb samolotowy
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # Zamknij powiadomienia
    print("Tryb samolotowy WŁĄCZONY")
    time.sleep(10) # Czekaj na utratę połączenia

    // Spróbuj wykonać akcję sieciową
    driver.find_element_by_accessibility_id("another_button").click()
    // Sprawdź wyświetlenie wskaźnika błędu/braku sieci

    // Wyłącz tryb samolotowy
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # Zamknij powiadomienia
    print("Tryb samolotowy WYŁĄCZONY")
    time.sleep(10) # Czekaj na przywrócenie połączenia

    // Sprawdź przywrócenie funkcjonalności i poprawność danych
    // ... instrukcje assert ...

except Exception as e:
    print(f"Błąd: {e}")

finally:
    driver.quit()

Test ponownego łączenia jest kluczowy dla zapewnienia stabilności i niezawodności aplikacji mobilnej w warunkach niestabilnego środowiska sieciowego.