Objetivo: demostrar que todas las funciones operan sin ninguna conectividad.
./gradlew assembleRelease); el de debug sí declara INTERNET para Metro.aapt dump permissions app-release.apk no debe listar android.permission.INTERNET.npm run check:offline (auditoría estática)..gguf, un paquete .pack, un PDF escaneado, un DOCX y un TXT.| # | Caso | Resultado esperado |
|---|---|---|
| 1 | Abrir la app por primera vez | Se instala el currículo base; 28 materias visibles en Materias |
| 2 | Importar modelo GGUF | Muestra nombre, cuantización, RAM estimada vs disponible; se activa y carga |
| 3 | Importar un archivo que no es GGUF (p. ej. un PDF renombrado) | Error “no es un modelo GGUF”, el archivo se borra |
| 4 | Chat: “¿Qué es la fotosíntesis?” | Respuesta en streaming, tokens/s visibles |
| 5 | Chat largo (> 30 mensajes) | Sigue respondiendo; no hay error de contexto (truncamiento automático) |
| 6 | Detener generación (■) | Se detiene; la respuesta queda marcada “(respuesta detenida)” |
| 7 | Foto de un ejercicio de álgebra | OCR extrae el texto, recorte automático, se propone “Explícame paso a paso…” |
| 8 | Importar PDF escaneado de 5 páginas | Progreso de OCR por página; se indexa; el chat cita el documento como fuente |
| 9 | Importar DOCX y TXT | Se indexan; el archivo original desaparece de la caché |
| 10 | Importar paquete .pack |
Materias/preguntas/flashcards actualizadas; fragmentos en la base vectorial |
| 11 | Reimportar paquete con versión anterior | Error “ya tienes una versión más reciente” |
| 12 | Humanizador con tono “Estudiante COBAEV” | Texto reescrito sin muletillas de IA; el detector de tono no lo marca como robótico |
| 13 | Quiz de 10 preguntas | Calificación 0–10, revisión de respuestas, historial |
| 14 | Generar 5 preguntas con IA | Se agregan al banco de la materia |
| 15 | Flashcards: “No la sabía” | La tarjeta vuelve al final de la cola |
| 16 | Exportar respaldo | Diálogo del sistema para guardar .zip; restaurar en otro teléfono recupera chats |
| 17 | Uso prolongado (15 min de generación continua) | Si el teléfono se calienta, baja hilos/tokens y aplica pausas; no se cierra |
| 18 | Memoria baja (abrir apps pesadas y volver) | Contexto reducido a 1024 sin fallos |
Con el teléfono conectado por USB y adb: adb shell dumpsys netstats detail | grep mx.cobaev.ia debe mostrar 0 bytes transmitidos por la app tras la sesión de pruebas.