Sobes.tech
Middle+

Cuente casos de verificación de reconexión en la aplicación móvil.

sobes.tech AI

Respuesta de la IA

Las pruebas de reconexión verifican cómo se comporta una aplicación móvil al perder y luego restablecer la conexión con el servidor u otros recursos de red.

Escenarios de prueba:

  • Cambio de red:
    • Wi-Fi -> Internet móvil (LTE/5G).
    • Internet móvil (LTE/5G) -> Wi-Fi.
    • Wi-Fi (un punto) -> Wi-Fi (otro punto).
  • Pérdida de señal:
    • Entrada en una zona sin cobertura (ascensor, metro).
    • Activar/desactivar modo avión.
    • Desactivar forzosamente las interfaces de red (Wi-Fi, datos celulares) a través de la configuración del dispositivo.
  • Problemas en el servidor:
    • API temporalmente no disponible.
    • Reinicio del servidor.
    • Retardos de red (simulados mediante proxies).

Qué verificamos:

  • Comportamiento de UI/UX:
    • Mostrar indicadores de carga o errores.
    • Mantener el estado actual del usuario (por ejemplo, entrada incompleta, posición en la lista).
    • Mostrar correctamente las notificaciones de pérdida/restablecimiento de conexión.
    • Sin fallos o bloqueos en la aplicación.
  • Integridad de datos:
    • Los datos en proceso de envío/recepción durante la desconexión deben ser manejados correctamente tras la recuperación.
    • Los datos almacenados localmente deben sincronizarse con el servidor.
  • Reintentos (Lógica de reintento):
    • La aplicación debe tener lógica de reintentos con retraso exponencial (backoff).
    • Límites en la cantidad de reintentos y tiempo de espera.
  • Gestión de sesiones:
    • La sesión del usuario debe mantenerse o recuperarse correctamente sin cerrar sesión forzadamente.

Instrumentos y técnicas:

  • Proxies de red: Charles Proxy, Fiddler. Permiten simular retardos, pérdida de paquetes, bloqueo de solicitudes.
  • Utilidades de red: Herramientas de desarrollo en navegador (para webview), utilidades móviles especializadas para controlar el tráfico.
  • Modo avión: Método sencillo para simular pérdida total de conexión.
  • Desactivar interfaces de red: A través de la configuración del sistema del dispositivo.
  • Emuladores de red: Herramientas que permiten simular diferentes condiciones de red (velocidad, retardo, pérdida de paquetes).
  • Automatización: Uso de Appium, Espresso (Android), XCUITest (iOS) para automatizar escenarios con cambio de red o llamadas a funciones del sistema (activar/desactivar modo avión).
// Ejemplo de automatización de prueba de reconexión usando Appium (Python)

from appium import webdriver
import time

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Android Emulator', # O dispositivo real
    'appPackage': 'com.yourapp.package',
    'appActivity': 'com.yourapp.MainActivity',
    'automationName': 'UiAutomator2'
}

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

try:
    // Realizar acciones que requieran red
    driver.find_element_by_accessibility_id("some_button").click()
    time.sleep(5) # Esperar carga de datos

    // Activar modo avión
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # Cerrar notificaciones
    print("Modo avión ACTIVADO")
    time.sleep(10) # Esperar pérdida de conexión

    // Intentar realizar acción de red
    driver.find_element_by_accessibility_id("another_button").click()
    // Verificar la visualización del indicador de error/falta de red

    // Desactivar modo avión
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # Cerrar notificaciones
    print("Modo avión DESACTIVADO")
    time.sleep(10) # Esperar recuperación de conexión

    // Verificar recuperación de funcionalidad y datos correctos
    // ... declaraciones assert ...

except Exception as e:
    print(f"Error: {e}")

finally:
    driver.quit()

La prueba de reconexión es crítica para garantizar la estabilidad y fiabilidad de la aplicación móvil en entornos de red inestables.