Middle+
Conte casos de verificação de reconexão na aplicação móvel.
sobes.tech IA
Resposta da IA
Os testes de reconexão verificam como um aplicativo móvel se comporta ao perder e posteriormente restabelecer a conexão com o servidor ou outros recursos de rede.
Scenários de teste:
- Alteração de rede:
- Wi-Fi -> Internet móvel (LTE/5G).
- Internet móvel (LTE/5G) -> Wi-Fi.
- Wi-Fi (um ponto) -> Wi-Fi (outro ponto).
- Perda de sinal:
- Entrada numa zona sem cobertura (elevador, metro).
- Ativar/desativar modo avião.
- Desligar forçosamente as interfaces de rede (Wi-Fi, Dados móveis) através das definições do dispositivo.
- Problemas no servidor:
- API temporariamente indisponível.
- Reinício do servidor.
- Atrasos de rede (simulados por proxies).
O que verificamos:
- Comportamento de UI/UX:
- Mostrar indicadores de carregamento ou erro.
- Manter o estado atual do utilizador (por exemplo, entrada incompleta, posição na lista).
- Mostrar corretamente as notificações de perda/restauração de conexão.
- Sem falhas ou bloqueios na aplicação.
- Integridade dos dados:
- Os dados em processo de envio/receção durante a desconexão devem ser tratados corretamente após a recuperação.
- Os dados armazenados localmente devem sincronizar-se com o servidor.
- Tentativas de reiteração (Lógica de Retry):
- A aplicação deve ter lógica de reiteração com atraso exponencial (backoff).
- Limites ao número de tentativas e tempo de espera.
- Gestão de sessões:
- A sessão do utilizador deve ser mantida ou recuperada corretamente sem logout forçado.
Instrumentos e técnicas:
- Proxies de rede: Charles Proxy, Fiddler. Permitem simular atrasos, perda de pacotes, bloqueio de pedidos.
- Utilitários de rede: Ferramentas de desenvolvimento no navegador (para webview), utilitários móveis especializados para controlo de tráfego.
- Modo "Em avião": Método simples para simular perda total de ligação.
- Desligar interfaces de rede: Através das definições do sistema do dispositivo.
- Emuladores de rede: Ferramentas que permitem simular diferentes condições de rede (velocidade, atraso, perda de pacotes).
- Automatização: Uso de Appium, Espresso (Android), XCUITest (iOS) para automatizar cenários com mudança de rede ou chamada de funções do sistema (ligar/desligar modo avião).
// Exemplo de automação de teste de reconexão usando Appium (Python)
from appium import webdriver
import time
desired_caps = {
'platformName': 'Android',
'deviceName': 'Android Emulator', # Ou dispositivo real
'appPackage': 'com.yourapp.package',
'appActivity': 'com.yourapp.MainActivity',
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
try:
// Executar ações que requerem rede
driver.find_element_by_accessibility_id("some_button").click()
time.sleep(5) # Espera pelo carregamento de dados
// Ativar modo "Em avião"
driver.open_notifications()
driver.find_element_by_accessibility_id("Airplane mode").click()
driver.back() # Fechar notificações
print("Modo avião ATIVADO")
time.sleep(10) # Espera pela perda de conexão
// Tentar realizar ação de rede
driver.find_element_by_accessibility_id("another_button").click()
// Verificar a exibição do indicador de erro/ausência de rede
// Desativar modo "Em avião"
driver.open_notifications()
driver.find_element_by_accessibility_id("Airplane mode").click()
driver.back() # Fechar notificações
print("Modo avião DESATIVADO")
time.sleep(10) # Espera pela restauração da conexão
// Verificar a restauração da funcionalidade e a coerência dos dados
// ... declarações assert ...
except Exception as e:
print(f"Erro: {e}")
finally:
driver.quit()
O teste de reconexão é fundamental para garantir a estabilidade e confiabilidade da aplicação móvel em ambientes de rede instáveis.