Laboratoire QA IMEI : importer, vérifier et reproduire

Exécutez un test CSV complet avec résultats attendus et observés. Vérifiez le format, Luhn, les valeurs manquantes et les doublons, puis répétez la vérification hors ligne.

Les exemples sont des inventaires simulés avec des données synthétiques. Aucun service Apple MDM, Samsung Knox, opérateur ou registre de téléphones n’est interrogé. Le texte importé est traité dans votre navigateur ; le laboratoire ne le téléverse pas.

1. Exécuter un test d’inventaire

Jusqu’à 200 lignes. En CSV, utilisez l’en-tête imei ; colonnes facultatives : case_id, record_id, slot, expected_status, expected_duplicate. Le CSV complet du générateur est aussi accepté : ses métadonnées descriptives ne sont ni vérifiées ni une preuve d’identité de l’appareil. L’export de l’entrée CSV conserve les colonnes originales. Les identifiants restent du texte. Les lignes vides sont ignorées ; utilisez une ligne CSV explicite pour tester une valeur manquante.

Facultatif : reproduire des cas à partir d’une graine

La graine et le scénario choisi génèrent les mêmes chaînes avec le contrat 1.0.0. Cela remplace l’entrée ci-dessus par des cas positifs et négatifs étiquetés. La graine ne sélectionne pas de préfixes constructeur.

Pourquoi l’exemple Apple sépare les identifiants

Le premier enregistrement simulé contient deux identifiants distincts, IMEI1 et IMEI2. Un deuxième répète un identifiant et omet IMEI2 ; un troisième contient une erreur de contrôle délibérée. Une donnée manquante n’est pas un échec de contrôle. Le rapport conserve record_id et slot sans prétendre valider le schéma de réponse Apple ou la configuration SIM d’un appareil.

Charger la simulation Apple MDM

Pourquoi l’exemple Samsung normalise avant de comparer

Deux enregistrements simulés contiennent les mêmes chiffres avec des séparateurs différents. Un doublon apparaît après normalisation, tandis que l’entrée originale reste visible. Une autre ligne conserve les zéros initiaux et une autre échoue à Luhn. Le rapport aide à examiner les doublons ; il ne fusionne ni ne corrige automatiquement les enregistrements et ne certifie pas la compatibilité Knox.

Charger l’inventaire Samsung simulé

2. Reproduire le résultat hors ligne

Téléchargez et décompressez le projet complet, puis exécutez ces commandes dans son dossier. Node.js 20 ou ultérieur et npm sont requis. Aucune dépendance à installer. Le navigateur et le projet exécutent exactement le même module contract.mjs.

Télécharger le projet complet (.zip)
cd imei-qa-lab-v1
npm test
npm run verify

La commande compare chaque champ observé au rapport attendu publié. Voici les lignes de succès attendues ; tout écart termine avec le code 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

Pour vérifier une entrée exportée ou générer de nouveaux cas, utilisez directement la CLI. Remplacez my-input.csv par le chemin de votre fichier :

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

Exécution locale de référence : 2026-09-09T18:02:03.915Z · Node v26.7.0 · 9 tests réussis · 20 lignes vérifiées sans écart. Les fichiers observés documentent cette exécution ; ce n’est pas une certification externe.

Cas variés : valide, contrôle, corps, longueur, caractères, séparateurs et doublons

Simulation Apple MDM : IMEI1/IMEI2 distincts, identifiant copié, champ manquant et contrôle erroné

Inventaire Samsung simulé : doublon après normalisation, zéros initiaux et contrôle erroné

Ce que garantit le rapport

Le contrat supprime les espaces blancs, les séparateurs Unicode et les traits d’union ASCII. Il n’accepte ensuite que les chiffres ASCII. Un corps de 14 chiffres est incomplet ; une proposition de 15 chiffres apparaît séparément. Luhn double les positions 2, 4, 6…14 depuis la gauche du corps.

Les doublons comparent les chaînes normalisées complètes de 15 chiffres dans l’ordre de saisie, y compris celles dont le contrôle est erroné. Les lignes suivantes renvoient au premier cas. Les corps incomplets et valeurs mal formées ne participent pas. Les champs slot restent des étiquettes ; votre application décide lesquels sont obligatoires.

Les colonnes facultatives expected_status et expected_duplicate transforment le CSV en assertions. Une attente absente ne vaut pas réussite. Un cas volontairement invalide est un test réussi quand l’échec observé correspond à l’attente.

Exemples et rapports originaux : CC0-1.0. Code source : MIT. Aucun catalogue TAC tiers n’est inclus. Gardez les données synthétiques dans les environnements de test ; les valeurs générées peuvent coïncider avec des identifiants attribués.