Middle+
Racconta casi di verifica del riconnessione nell'app mobile.
sobes.tech AI
Risposta dell'AI
I test di riconnessione verificano come si comporta un'applicazione mobile durante la perdita e il successivo ripristino della connessione con il server o altre risorse di rete.
Scenari di test:
- Cambio di rete:
- Wi-Fi -> Internet mobile (LTE/5G).
- Internet mobile (LTE/5G) -> Wi-Fi.
- Wi-Fi (un punto) -> Wi-Fi (un altro punto).
- Perdita di segnale:
- Entrata in una zona senza copertura (ascensore, metro).
- Attivare/disattivare la modalità aereo.
- Disattivare forzatamente le interfacce di rete (Wi-Fi, Dati mobili) tramite le impostazioni del dispositivo.
- Problemi sul server:
- API temporaneamente non disponibile.
- Riavvio del server.
- Ritardi di rete (simulati tramite proxy).
Cosa verifichiamo:
- Comportamento UI/UX:
- Visualizzazione di indicatori di caricamento o errore.
- Mantenimento dello stato attuale dell'utente (ad esempio, inserimento incompleto, posizione nella lista).
- Visualizzazione corretta delle notifiche di perdita/ripristino della connessione.
- Assenza di crash o "impuntamenti" dell'applicazione.
- Integrità dei dati:
- I dati in fase di invio/ricezione durante la disconnessione devono essere gestiti correttamente al ripristino.
- I dati salvati localmente devono sincronizzarsi con il server.
- Tentativi di ripetizione (Retry Logic):
- L'applicazione deve avere una logica di tentativi ripetuti con ritardo esponenziale (backoff).
- Limiti al numero di tentativi e al tempo di attesa.
- Gestione delle sessioni:
- La sessione utente deve essere mantenuta o correttamente ripristinata senza logout forzato.
Tools e tecniche:
- Proxy di rete: Charles Proxy, Fiddler. Permettono di simulare ritardi, perdita di pacchetti, blocco delle richieste.
- Utilità di rete: Strumenti di sviluppo nel browser (per webview), utilità mobili specializzate per il controllo del traffico.
- Modalità "Aereo": Metodo semplice per simulare una perdita totale di connessione.
- Disattivazione delle interfacce di rete: Tramite le impostazioni di sistema del dispositivo.
- Emulatori di rete: Strumenti che permettono di simulare diverse condizioni di rete (velocità, ritardo, perdita di pacchetti).
- Automazione: Uso di Appium, Espresso (Android), XCUITest (iOS) per automatizzare scenari con cambio di rete o chiamate di funzioni di sistema (attivazione/disattivazione della modalità aereo).
// Esempio di automazione del test di riconnessione usando Appium (Python)
from appium import webdriver
import time
desired_caps = {
'platformName': 'Android',
'deviceName': 'Android Emulator', # O dispositivo reale
'appPackage': 'com.yourapp.package',
'appActivity': 'com.yourapp.MainActivity',
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
try:
// Eseguire azioni che richiedono rete
driver.find_element_by_accessibility_id("some_button").click()
time.sleep(5) # Attendere il caricamento dei dati
// Attivare la modalità aereo
driver.open_notifications()
driver.find_element_by_accessibility_id("Airplane mode").click()
driver.back() # Chiudere le notifiche
print("Modalità aereo ATTIVATA")
time.sleep(10) # Attendere la perdita di connessione
// Tentare di eseguire un'azione di rete
driver.find_element_by_accessibility_id("another_button").click()
// Verificare la visualizzazione dell'indicatore di errore/mancanza di rete
// Disattivare la modalità aereo
driver.open_notifications()
driver.find_element_by_accessibility_id("Airplane mode").click()
driver.back() # Chiudere le notifiche
print("Modalità aereo DISATTIVATA")
time.sleep(10) # Attendere il ripristino della connessione
// Verificare il ripristino della funzionalità e la correttezza dei dati
// ... asserzioni ...
except Exception as e:
print(f"Errore: {e}")
finally:
driver.quit()
Il test di riconnessione è fondamentale per garantire la stabilità e l'affidabilità dell'app mobile in condizioni di rete instabili.