XamIoT

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

---