Laboratorio QA de IMEI: importar, comprobar y reproducir

Ejecuta una prueba CSV completa con resultados esperados y observados. Comprueba formato, Luhn, valores ausentes y duplicados, y repite la misma verificación sin conexión.

Todos los ejemplos son inventarios simulados con datos sintéticos. No se consulta Apple MDM, Samsung Knox, operadores ni bases de datos de dispositivos. El texto importado se procesa en tu navegador; el laboratorio no lo sube al servidor.

1. Ejecuta una prueba de inventario

Hasta 200 filas. En CSV usa la cabecera imei; columnas opcionales: case_id, record_id, slot, expected_status, expected_duplicate. También se acepta el CSV completo del generador: sus metadatos descriptivos no se verifican ni acreditan la identidad del dispositivo. Exportar entrada CSV conserva las columnas originales. Los identificadores se mantienen como texto. Se omiten líneas vacías; usa una fila CSV explícita para probar un valor ausente.

Opcional: reproducir casos desde una semilla

La semilla y el escenario seleccionado generan las mismas cadenas con el contrato 1.0.0. Se sustituye la entrada anterior por casos positivos y negativos etiquetados. La semilla no selecciona prefijos de fabricantes.

Por qué el ejemplo Apple separa los identificadores

El primer registro simulado tiene dos identificadores distintos, IMEI1 e IMEI2. Un segundo registro repite un identificador y omite IMEI2; un tercero tiene un checksum erróneo deliberado. Un dato ausente no es un fallo de checksum. El informe conserva record_id y slot sin afirmar que valida el esquema de respuesta de Apple ni la configuración SIM de un dispositivo.

Cargar la simulación Apple MDM

Por qué el ejemplo Samsung normaliza antes de comparar

Dos registros simulados contienen las mismas cifras con separadores distintos. Se detecta un duplicado tras normalizar y la entrada original sigue visible. Otra fila conserva ceros iniciales y otra falla Luhn. El informe permite investigar duplicados; no fusiona ni corrige registros automáticamente ni acredita compatibilidad con Knox.

Cargar el inventario Samsung simulado

2. Reproduce el resultado sin conexión

Descarga y descomprime el proyecto completo y ejecuta estos comandos dentro de su carpeta. Necesitas Node.js 20 o posterior y npm. No hay dependencias que instalar. El navegador y el proyecto ejecutan exactamente el mismo módulo contract.mjs.

Descargar el proyecto completo (.zip)
cd imei-qa-lab-v1
npm test
npm run verify

El comando de verificación compara cada campo observado con el informe esperado publicado. Estas son las líneas de éxito esperadas; cualquier diferencia termina con código 1.

PASS mixed: 10 rows; 0 mismatches; mixed.observed.json
PASS apple-mdm: 5 rows; 0 mismatches; apple-mdm.observed.json
PASS samsung-inventory: 5 rows; 0 mismatches; samsung-inventory.observed.json

Para comprobar una entrada exportada o generar nuevos casos, usa la CLI directamente. Sustituye my-input.csv por la ruta de tu archivo:

node cli.mjs inspect my-input.csv > my-report.json
node cli.mjs generate my-seed apple-mdm > generated.csv

Ejecución local de referencia: 2026-09-09T18:02:03.915Z · Node v26.7.0 · 9 tests superados · 20 filas verificadas sin diferencias. Los archivos observados registran esa ejecución; no constituyen una certificación externa.

Casos variados: válido, checksum, cuerpo, longitud, caracteres, separadores y duplicados

Simulación Apple MDM: IMEI1/IMEI2 distintos, identificador copiado, campo ausente y checksum erróneo

Inventario Samsung simulado: duplicado tras normalizar, ceros iniciales y checksum erróneo

Qué garantiza el informe

El contrato elimina espacios en blanco, separadores Unicode y guiones ASCII. Después solo acepta cifras ASCII. Un cuerpo de 14 cifras está incompleto; se muestra por separado una propuesta de 15 cifras. Luhn duplica las posiciones 2, 4, 6…14 desde la izquierda del cuerpo.

Los duplicados comparan cadenas normalizadas completas de 15 cifras por orden de entrada, incluidas las de checksum erróneo. Las filas posteriores remiten al primer caso. Los cuerpos incompletos y valores mal formados no participan. Los campos slot se conservan como etiquetas; tu aplicación decide cuáles son obligatorios.

Las columnas opcionales expected_status y expected_duplicate convierten el CSV en comprobaciones. La ausencia de una expectativa no equivale a un aprobado. Un caso deliberadamente inválido es una prueba correcta cuando el fallo observado coincide con lo esperado.

Ejemplos e informes originales: CC0-1.0. Código fuente: MIT. El kit no incluye catálogos TAC de terceros. Usa los datos sintéticos en entornos de prueba; los valores generados pueden coincidir con identificadores asignados.