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.