Sobes.tech
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.