Aplicación para iOS
# Plan de pruebas — XamIoT iOS
Versión de la aplicación: v1.0.5
---
## 1. Autenticación
### TC-IOS-AUTH-01 — Conexión válida
Requisitos previos: cuenta existente y activada
Pasos:
1. Abrir la aplicación
2. Introducir un correo electrónico y una contraseña válidos
3. Pulsar «Iniciar sesión»
Resultado esperado: token JWT almacenado en Keychain, redirección a la lista de sensores
---
### TC-IOS-AUTH-02 — Inicio de sesión con contraseña incorrecta
Pasos:
1. Introducir un correo electrónico válido + contraseña incorrecta
2. Pulsar «Iniciar sesión»
Resultado esperado: se muestra un mensaje de error, no se realiza la navegación
---
### TC-IOS-AUTH-03 — Persistencia de sesión
Pasos:
1. Iniciar sesión
2. Cerrar la aplicación por completo
3. Volver a abrir la aplicación
Resultado esperado: el usuario sigue conectado, no aparece una nueva pantalla de inicio de sesión
---
### TC-IOS-AUTH-04 — Cerrar sesión
Pasos:
1. Ir a Ajustes
2. Pulsar «Desconectar»
3. Confirmar
Resultado esperado: token eliminado del llavero, vuelta a la pantalla de inicio de sesión, credenciales de WiFi borradas
---
### TC-IOS-AUTH-05 — Contraseña olvidada
Pasos:
1. En la pantalla de inicio de sesión, pulse «Contraseña olvidada»
2. Introducir el correo electrónico
3. Validar
Resultado esperado: se recibe el correo electrónico de restablecimiento y se muestra un mensaje de confirmación
---
### TC-IOS-AUTH-06 — Creación de cuenta
Pasos:
1. Pulsar «Crear una cuenta»
2. Introducir correo electrónico, contraseña, nombre, apellidos y número de teléfono con prefijo de país
3. Validar
Resultado esperado: se envía un correo electrónico de confirmación y se muestra un mensaje
---
### TC-IOS-AUTH-07 — Selector de servidor (huevo de Pascua)
Pasos:
1. En la pantalla de inicio de sesión, pulsa 5 veces sobre el título
2. Cambiar de servidor
Resultado esperado: el servidor seleccionado se mantiene, las llamadas a la API apuntan al servidor correcto
---
## 2. Registro BLE
### TC-IOS-BLE-01 — Escaneo de sensores
Requisitos previos: Bluetooth activado, un sensor SoundSense alimentado y no registrado
Pasos:
1. Pulsa «+» para añadir un sensor
2. Observe la lista de dispositivos BLE
Resultado esperado: el sensor aparece con su nombre (prefijo «SOUND-SENSOR»)
---
### TC-IOS-BLE-02 — Registro completo
Pasos:
1. Selecciona el sensor en la lista
2. Introducir el SSID y la contraseña de la red WiFi
3. Validar la conexión WiFi
4. Introducir un nombre para el sensor
5. Confirmar la creación
Resultado esperado:
- WiFi configurado a través de GATT
- El estado de WiFi pasa a positivo (got_ip / connected)
- Credenciales MQTT (host, puerto, usuario, contraseña) enviadas a través de BLE
- Sensor creado en la API
- Sensor visible en la lista
---
### TC-IOS-BLE-03 — WiFi incorrecto
Pasos:
1. Iniciar el registro con un SSID/contraseña de WiFi incorrectos
Resultado esperado: el estado de WiFi pasa a negativo tras el tiempo de espera, se muestra un mensaje de error, posibilidad de volver a intentarlo
---
### TC-IOS-BLE-04 — Bluetooth desactivado
Pasos:
1. Desactivar el Bluetooth
2. Intentar añadir un sensor
Resultado esperado: mensaje solicitando activar el Bluetooth
---
### TC-IOS-BLE-05 — Tiempo de espera de WiFi
Pasos:
1. Iniciar el registro con una red WiFi fuera de alcance
Resultado esperado: tiempo de espera agotado tras 10 segundos, mensaje de error, opción de volver a intentarlo
---
### TC-IOS-BLE-06 — Desconexión BLE durante el registro
Pasos:
1. Iniciar el registro
2. Alejar el sensor durante la fase WiFi
Resultado esperado: se muestra un error, estado coherente, no se crea ningún sensor duplicado en la API
---
## 3. Datos del sensor y MQTT
### TC-IOS-MQTT-01 — Visualización de la lista de sensores
Requisitos previos: al menos un sensor registrado y conectado a MQTT
Pasos:
1. Abrir la lista de sensores
Resultado esperado: cada sensor muestra el último nivel de sonido (dB), el tiempo transcurrido desde la última medición y la minigráfica
---
### TC-IOS-MQTT-02 — Actualización automática
Pasos:
1. Activar la actualización automática (botón de alternancia)
2. Esperar 10 segundos
Resultado esperado: los datos se actualizan automáticamente cada 10 segundos
---
### TC-IOS-MQTT-03 — Volver al primer plano
Pasos:
1. Poner la aplicación en segundo plano
2. Volver a la aplicación
Resultado esperado: los datos se actualizan automáticamente al volver
---
### TC-IOS-MQTT-04 — Sensor desconectado
Condiciones previas: sensor apagado o desconectado
Pasos:
1. Consultar la lista
Resultado esperado: el tiempo relativo «last seen» refleja la última conexión real, no un fallo del sistema
---
## 4. Reglas de alerta
### TC-IOS-RULES-01 — Creación de una regla a partir de una plantilla
Pasos:
1. Acceder a los detalles de un sensor
2. Escribir «Añadir una regla»
3. Seleccionar una plantilla
4. Configurar el operador, el umbral, el tiempo de espera y la etiqueta
5. Activar y guardar
Resultado esperado: regla creada a través de la API, visible en la lista del sensor
---
### TC-IOS-RULES-02 — Umbral fuera de límites
Pasos:
1. Crear una regla
2. Introducir un umbral inferior al mínimo o superior al máximo de la plantilla
Resultado esperado: umbral bloqueado en los límites mínimo/máximo, no se envía fuera de límites
---
### TC-IOS-RULES-03 — Tiempo de espera inferior al mínimo
Pasos:
1. Intentar introducir un tiempo de espera inferior a cooldown_min_sec
Resultado esperado: tiempo de espera bloqueado en el valor mínimo
---
### TC-IOS-RULES-04 — Activación/desactivación de una regla
Pasos:
1. En la lista de reglas, cambiar el interruptor de activación
Resultado esperado: estado actualizado mediante PATCH en la API; el interruptor refleja el nuevo estado
---
### TC-IOS-RULES-05 — Edición de una regla existente
Pasos:
1. Toca una regla existente
2. Modificar el umbral y el tiempo de espera
3. Guardar
Resultado esperado: cambios guardados en la API
---
### TC-IOS-RULES-06 — Eliminación de una regla
Pasos:
1. Deslizar la regla hacia la izquierda
2. Confirmar la eliminación
Resultado esperado: regla eliminada en la API, desaparece de la lista
---
## 5. Gestión de sensores
### TC-IOS-DEV-01 — Edición del nombre de un sensor
Pasos:
1. Arrastrar el sensor → Editar
2. Cambiar el nombre
3. Guardar
Resultado esperado: nombre actualizado en la API y localmente (SwiftData)
---
### TC-IOS-DEV-02 — Eliminación de un sensor
Pasos:
1. Arrastrar el sensor → Eliminar
2. Confirmar
Resultado esperado: sensor eliminado en la API, retirado de la lista
---
### TC-IOS-DEV-03 — Persistencia local (SwiftData)
Pasos:
1. Registrar un sensor
2. Activar el modo avión
3. Volver a abrir la aplicación
Resultado esperado: los sensores siguen visibles (datos locales), sin fallos
---
## 6. Notificaciones push
### TC-IOS-NOTIF-01 — Autorización de notificaciones
Pasos:
1. Primer inicio de la aplicación
2. Aceptar las notificaciones
Resultado esperado: token APNs registrado a través de la API POST /devices)
---
### TC-IOS-NOTIF-02 — Recepción en primer plano
Requisitos previos: una regla de alerta activa, el sensor activa un umbral
Pasos:
1. Mantener la aplicación abierta
Resultado esperado: banner mostrado, carga útil registrada localmente (SwiftData), insignia incrementada
---
### TC-IOS-NOTIF-03 — Recepción en segundo plano
Pasos:
1. Poner la aplicación en segundo plano
2. El sensor activa una alerta
Resultado esperado: notificación del sistema recibida, carga útil capturada de forma silenciosa
---
### TC-IOS-NOTIF-04 — Reinicio de la insignia
Pasos:
1. Volver a la aplicación tras recibir notificaciones
Resultado esperado: insignia puesta a 0 mediante POST /me/badge/reset
---
### TC-IOS-NOTIF-05 — Resumen de notificaciones en la lista
Pasos:
1. Activar una alerta en un sensor
2. Consultar la lista de sensores
Resultado esperado: la línea del sensor muestra «Alerta: hay Xs»
---
## 7. Parámetros y configuración
### TC-IOS-CFG-01 — Eliminación de cuenta
Pasos:
1. Ir a los ajustes
2. Escriba «Eliminar mi cuenta»
3. Introduce el correo electrónico de confirmación
4. Confirmar
Resultado esperado: cuenta eliminada a través de la API, vuelta a la pantalla de inicio de sesión
---
### TC-IOS-CFG-02 — Almacenamiento de credenciales WiFi
Pasos:
1. Registrar un sensor con un SSID/contraseña de WiFi
2. Iniciar un segundo registro
Resultado esperado: SSID y contraseña rellenados automáticamente
---
## 8. Pruebas de robustez
### TC-IOS-ROB-01 — Pérdida de red durante el uso
Pasos:
1. Activar el modo avión mientras la aplicación está abierta
Resultado esperado: se muestra un mensaje de error de red, no se bloquea, recuperación al volver a tener conexión
---
### TC-IOS-ROB-02 — Token caducado
Pasos:
1. Dejar la aplicación inactiva el tiempo suficiente para que caduque el token
2. Intentar una acción API
Resultado esperado: redirección a la pantalla de inicio de sesión
---
### TC-IOS-ROB-03 — Actualización manual
Pasos:
1. Deslizar hacia abajo la lista de sensores (pull-to-refresh)
Resultado esperado: datos recargados desde la API
---


