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.
Rapport ligne par ligne
Contrat randomimei-qa 1.0.0. Les clés de statut des téléchargements restent en anglais. Un contrôle valide ne prouve ni attribution, ni propriété, ni état sur le réseau.
JSON conserve les chaînes exactes. Lors de l’import CSV dans un tableur, définissez les colonnes d’identifiants comme Texte pour conserver les zéros. Le rapport CSV préfixe d’une apostrophe les cellules ressemblant à des formules ; JSON conserve l’original.
Entrées originales, statut observé, statut attendu, doublons et résultats des assertions.
Cas / enregistrement simulé
Original / normalisé
Observé
Attendu
Doublon
Vérification de l’attente
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.
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.
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.
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.
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.