# Validation de données

En informatique, la validation de données est un processus permettant de s’assurer que les données ont subi un tri adéquat afin de ne garder que les données de qualité. Ainsi les données deviennent correctes et utiles. Le processus utilise des routines souvent nommées « règles de validation » ou bien « contraintes de validation » qui vérifient l’exactitude, la signification et la sécurité des données qui sont entrées dans le système de validation. Les règles peuvent être mises en œuvre via des fonctionnalités automatisées d’un dictionnaire de données ou par l’inclusion d'un logiciel doté d’une logique de validation.

## Aperçu

La validation des données est destinée à fournir certaines garanties bien définies pour l'adéquation, la précision et la cohérence pour tout type de saisie utilisateur dans une application ou un système automatisé. Les règles de validation des données peuvent être définies et conçues à l'aide de diverses méthodologies et être déployées dans différents contextes.
Des règles de validation des données peuvent être définies, conçues et déployées, par exemple:
Contextes de définition et de conception:
* Dans le cadre de la phase de collecte des exigences dans une ingénierie logicielle ou la conception d'une spécification logicielle
* Dans le cadre d'une phase de modélisation des opérations BPM
Departements :
* comme un ensemble de programmes ou de routines de logique métier dans un langage de programmation
* comme un ensemble de procédures stockées dans un système de gestion de base de données
Pour les applications métier, la validation des données peut être définie via des règles déclaratives d' intégrité des données ou des règles métier basées sur des procédures. Les données non conformes à ces règles affecteront négativement l'exécution des processus métier. Par conséquent, la validation des données doit commencer par la définition du processus métier et un ensemble de règles métier au sein de ce processus. Les règles peuvent être collectées via l'exercice de capture des exigences.

## Différents types de validation des données

En évaluant les bases de la validation des données, des généralisations peuvent être faites concernant les différents types de validation, selon la portée, la complexité et le but des différentes opérations de validation à effectuer.
Par exemple:
* Validation du type de données.
* Validation de la plage et des contraintes
* Validation du code et des références croisées
* Validation structurée

### Vérification du type de données

La validation du type de données est généralement effectuée sur un ou plusieurs champs de données simples.
Le type le plus simple de validation de type de données vérifie que les caractères individuels fournis par l'entrée utilisateur sont cohérents avec les caractères attendus d'un ou plusieurs types de données primitifs connus; tel que défini dans un langage de programmation ou un mécanisme de stockage et de récupération de données ainsi que la spécification des types de données primitifs suivants: 1) entier; 2) flottant (décimal); ou 3) chaîne.
Par exemple, de nombreux systèmes de base de données permettent la spécification de certains caractères spéciaux tels que “,” “+” “-” et même “(“. Une routine de validation des données plus sophistiquée vérifierait que l'utilisateur a entré un code de pays valide, c'est-à-dire que le nombre de chiffres saisis correspond à la convention du pays ou de la zone spécifiée.
Un processus de validation comprend deux étapes distinctes: (a) vérification de validation et (b) action après vérification. L'étape de vérification utilise une ou plusieurs règles de calcul.

### Validation la plage simple et des contraintes

La validation de plage simple et de la contrainte permet d’examiner la cohérence de l'entrée utilisateur avec une plage minimale / maximale, ou la cohérence avec un test d'évaluation d'une séquence de caractères, tel qu'un ou plusieurs tests par rapport aux expressions régulières. Par exemple, un numéro de téléphone américain doit avoir 10 chiffres et pas de lettres ou de caractères spéciaux.

### Vérification du code et des références croisées

La validation du code et des références croisées comprend des tests de validation du type de données, combinés à une ou plusieurs opérations pour vérifier que les données fournies par l'utilisateur sont cohérentes avec une ou plusieurs règles, exigences ou contraintes de validité externes pertinentes pour une organisation, un contexte ou un ensemble particulier, des hypothèses sous-jacentes. Ces contraintes de validité supplémentaires peuvent impliquer des références croisées fournies avec une table de recherche connue ou un service d'informations d'annuaire tel que LDAP.
Par exemple, un utilisateur expérimenté peut entrer une chaîne bien formée qui correspond à la spécification d'une adresse e-mail valide, telle que définie dans la RFC 5322$^,$$^,$, mais cette chaîne bien formée peut ne pas correspondre réellement à un domaine résoluble connecté à un compte de messagerie actif.

### Contrôle structuré

La validation structurée permet de combiner l'une des différentes étapes de validation de type données de base, ainsi qu'un traitement plus complexe. Un tel traitement complexe peut comprendre le test de contraintes conditionnelles pour un objet de données complexe entier ou un ensemble d'opérations de processus dans un système.
Une règle de validation est un critère ou une contrainte utilisé dans le processus de validation des données, effectué après que les données aient été encodées sur un support d'entrée et implique un programme de validation. Ceci est distinct de la vérification formelle, où le fonctionnement d'un programme est déterminé comme étant celui qui était prévu et qui répond à l'objectif. La règle de validation ou le système de vérification encore utilisé par de nombreux grands fabricants de logiciels a été conçu par un employé de Microsoft entre 1997 et 1999.
La méthode consiste à vérifier que les données respectent les paramètres appropriés définis par l'analyste système. Un jugement quant à la validité des données est rendu possible par le programme de validation, mais il ne peut garantir une exactitude complète. Cela ne peut être atteint que par l'utilisation de toutes les commandes de bureau et informatiques intégrées au système au stade de la conception. La différence entre la validité et l'exactitude des données peut être illustrée par un exemple trivial:
Une entreprise a créé un fichier personnel et chaque enregistrement contient un champ pour la classe d'emploi. Les valeurs autorisées sont A, B, C ou D. Une entrée dans un enregistrement peut être validée et acceptée par le système s'il s'agit de l'un de ces caractères, mais il peut ne pas s'agir du grade correct pour le travailleur concerné. L'exactitude d'une note ne peut être établie que par des vérifications administratives ou par référence à d'autres fichiers.
Par conséquent, lors de la conception des systèmes, des définitions de données sont établies et limitent ce qui constitue des données valides. À l'aide de ces définitions de données, une série de vérifications de validation logicielle peut être effectuée.

### Contrôle de cohérence

Le contrôle de cohérence garantit que les données saisies sont logiques. Par exemple, la date de livraison ne peut pas être antérieure à la date de commande.

### Vérification de la plage

* Ne s'applique pas à l'ISBN, mais les données doivent généralement se situer dans les valeurs prédéfinies maximale et minimale. Par exemple, les numéros de compte client peuvent être limités dans les valeurs 10000 à 20000, s'il s'agit de la plage arbitraire des numéros utilisés pour le système

### Critères

Un exemple de vérification de validation est la procédure utilisée pour vérifier un ISBN.
* Taille: Le nombre de caractères dans une valeur d'élément de données est vérifié; par exemple, un ISBN doit être composé de 10 caractères seulement (dans la version précédente - la norme pour 1997 et les versions ultérieures a été modifiée en 13 caractères).
* Vérification des formats: Les données doivent être conformes à un format spécifié. Ainsi, les 9 premiers caractères doivent être les chiffres de 0 à 9, le 10ème doit être ces chiffres ou un X
* Clef de contrôle: Un chiffre supplémentaire calculé, par exemple, sur un numéro de compte, peut être utilisé comme dispositif d'autocontrôle. Lorsque le numéro est entré dans l'ordinateur, le programme de validation effectue un calcul similaire à celui utilisé pour générer à l'origine le chiffre de contrôle et vérifie ainsi sa validité. Ce type de vérification mettra en évidence les erreurs de transcription lorsque deux ou plusieurs chiffres ont été transposés ou placés dans le mauvais ordre. Le 10eme caractère de l'ISBN à 10 caractères est le chiffre de contrôle. ISBN à 10 caractères est le chiffre de contrôle.

## Méthodes de validation
### Vérifications de caractères autorisées

    Il faut vérifier que seuls les caractères attendus soient présents dans le champ. Par exemple, un champ numérique ne peut autoriser que les chiffres 0 à 9, le point décimal et éventuellement un signe “moins” ou des virgules. Une adresse e-mail peut nécessiter au moins un signe “@” et divers autres détails structurels. Les expressions habituelles sont des moyens efficaces de mettre en place de tels contrôles.

### Totaux des lots

    Il faut vérifier les dossiers manquants. Les champs numériques peuvent être ajoutés ensemble pour tous les enregistrements d’un lot. Le total des lots est entré et l’ordinateur vérifie que le total est correct, par exemple, ajouter le champ «coût total» d’un certain nombre de transactions ensemble.

### Vérification de la cardinalité

    Il faut vérifier que ce dossier a un nombre valide d’enregistrements connexes. Par exemple, si l’enregistrement de “Contact” est classé comme “Client”, il doit avoir au moins un “Ordre” associé (Cardinalité 0). S’il n’existe pas d’enregistrement « Client », il doit être remplacé par « graine » ou la commande doit être créée. Ce type de règle peut être complexifié par des conditions supplémentaires. Par exemple, si l’enregistrement des contacts dans la base de données de paiement est marqué comme « ancien employé », alors ce dossier ne doit plus contenir de paiements salariaux associés à cet employé une fois la date de son licenciement enregistré. (Cardinalité = 0).

### Vérifier les chiffres

    Cela est utile à la gestion des données numériques. Un chiffre supplémentaire est ajouté à un nombre qui est calculé à partir d’un jeu de chiffres. L’ordinateur vérifie ce calcul lorsque les données sont saisies. Par exemple, le dernier chiffre de l’ISBN d’un livre est un chiffre déterminé au modulo 10 près. [3]

### Vérifications de cohérence

    Il faut vérifier les champs pour s’assurer que les données dans ces champs correspondent, par exemple, Si titre - "Mr.", puis Genre -"M".

### Totaux de contrôle

    Il s’agit d’un total fait sur un ou plusieurs champs numériques qui apparaît dans chaque enregistrement. Il s’agit d’un total significatif, par exemple, ajouter le paiement total pour un certain nombre de clients

### Vérifications de cohérence inter-systèmes

    Il faut comparer les données dans différents systèmes pour s’assurer qu’elles soient cohérentes. Par exemple, l’adresse d’un client ayant le même id est la même dans les deux systèmes. Les données peuvent être représentées différemment dans différents systèmes et peuvent devoir être transformées en un format commun à comparer. Par exemple, un système peut stocker le nom du client dans un champ nom unique comme «Doe, John Q», tandis qu’un autre dans trois domaines différents: First_Name (John), Last_Name (Doe) et Middle_Name (Qualité); pour comparer les deux, le moteur de validation aurait transformé les données du deuxième système pour correspondre aux données du premier, par exemple, en utilisant SQL: Last_Name ', ' || First_Name substr(Middle_Name, 1, 1) convertirait les données du deuxième système pour ressembler aux données du premier 'Doe, John Q'

### Vérification du type de données

    Vérifie les types de données d’entrée et délivre un message d’erreur si ces données d’entrée ne correspondent pas au type de données choisies. Exemple : « Dans un système d’entrée acceptant les données numériques, si la lettre ‘O’ est remplacée par le nombre zéro « 0 », un message d’erreur s’affichera pour annoncer l’erreur.

### Vérification de l'existence du fichier

    Vérifie que certains dossiers portant un nom spécifique existent. Cette vérification est essentielle pour les programmes qui utilisent la gestion des fichiers.

### 'Vérification du format ou des illustrations

    Il faut vérifier que la donnée est un dans un format spécifique (modèle). Par exemple, les dates n’ont pas forcément à être sous le format JJ/MM/AAAA. Les expressions régulières devraient être considéré pour ce type de validation.

### Totaux de hachage

    C’est un total effectué sur un ou plusieurs champs numériques qui apparaît dans chaque enregistrement. Ceci n’a pas lieu d’exister, par exemple, c’est comme si nous additionnons les numéros de téléphone entre eux.

### Vérification des limites

    Contrairement aux contrôles de portée, les données sont vérifiées pour une limite, haute ou basse, exemple, les datas ne doit être plus grande que 2 (≤2).

### Vérification logique

    Il faut vérifier que les entrées ne comportent pas d’erreur logique, exemple, la valeur d’entrée ne doit pas être égale à 0 si celle-ci divise un autre nombre (calcul impossible).

### Vérification de présence

    Elle a pour but de vérifier que les datas importantes sont réellement présentes et non oubliées par l’utilisateur, exemple, permet de vérifier que le numéro de téléphone des clients soit bien présent dans la base de données.

### Vérification des intervalles

    Elle a pour but de vérifier que les données appartiennent bien à un intervalle prédéfini. Exemple, le mois de naissance d’une personne ne peut être supérieur à 12.

### Intégrité référentielle

    Prenons deux tables appartenant au même système d’une base de données, les données de ces deux tables peuvent être relié grâce à des clés dites primaires ou secondaires. Si les valeurs des clés primaires ne sont pas contraintes par le mécanisme interne de la base de données, [4],alors celui-ci devra être validé. La validation de la clé étrangère permet de vérifier que les tables référencées doivent toujours être référé à une ligne valide dans la table référencée. [5]

### Vérification de l'orthographe et de la grammaire

    Il faut toujours penser à vérifier s'il n'y a pas de fautes d’orthographe et de grammaire.

### Vérification de l’unicité

    Ceci permet de vérifier que chaque valeur est unique. Cela peut être appliqué à plusieurs domaines de valeur (exemple : adresse, nom, prénom).

### Vérification de la table

    La table de vérification prend la donnée d’entrée et compare celle-ci à une liste de valeurs d’entrée valides. Les valeurs de cette liste sont stockées dans une table de base de données.

### Actions de post-validation
#### Mesures d'exécution

    Les mesures d’exécution rejettent généralement la demande de saisie de données et exigent que la personne entrant les données apporte une modification à ces données afin de les rendre conformes. Ceci est plus approprié pour une utilisation interactive, où une personne réelle doit elle-même entrer des données. Il fonctionne également bien pour le téléchargement par lots, où une entrée de fichier peut être rejetée et un ensemble de messages renvoyés à la source ayant entré les données pour expliquer pourquoi les données ont été rejetées. Une autre forme de mesures d’exécution consiste à modifier automatiquement les données et à enregistrer une version conforme au lieu de la version originale. Ceci est le plus approprié pour le changement cosmétique. Par exemple, la conversion d’une entrée [all-caps] à une entrée [Pascal-case] n’a pas besoin de l’utilisateur. Un recours inapproprié à l’exécution automatique se ferait dans les cas où cette exécution entraîne la perte de renseignements commerciaux. Par exemple, enregistrer un commentaire tronqué si la longueur est plus longue que prévu. Ce n’est généralement pas une bonne chose car il peut entraîner la perte de données importantes.

#### Action de consultation

    Les actions de consultation permettent généralement de saisir les données inchangées, mais envoient un message à l’utilisateur en indiquant les problèmes de validation rencontrés.Ceci convient le mieux aux systèmes non interactifs, aux systèmes où le changement n’est pas critique pour l’entreprise, au nettoyage des étapes des données existantes et aux étapes de vérification d’un processus d’entrée.

#### Action de vérification

    Les actions de vérification sont des cas particuliers d’actions de consultation. Dans ce cas, l’utilisateur est invité à vérifier que ses données sont celles qu’il voudrait vraiment entrer. Ici, l’étape de contrôle suggère une alternative (par exemple, une vérification de votre adresse postale renvoie une façon différente de formater cette adresse ou suggère une adresse différente en même temps). Il est souhaitable dans ce cas, de donner à l’utilisateur la possibilité d’accepter la recommandation ou de garder la version déjà enregistrée. Il ne s’agit pas d’un processus de validation strict et est utile pour mettre à jour les adresses à un nouvel emplacement ou à un emplacement qui n’est pas encore pris en charge par les bases de données de validation.

#### Journal de validation

    Même dans les cas où la validation des données n’a pas trouvé de problèmes, fournir un journal des validations qui ont été effectuées et leurs résultats est important. Cela permet d'avoir un suivi et est utile pour identifier les vérifications de validation de données manquantes en cas de problèmes de données (donnée manquante, mal orthographiée) et dans l’amélioration du système de validation.

## Validation et sécurité

Les erreurs et oublis lors de la validation de données peuvent entraîner une faille dans le système de sécurité, menant à une corruption des données ou à une vulnérabilité de sécurité. La validation des données vérifie que les données sont adaptées à leur destination, valides, raisonnables et sécurisées avant d'être traitées.

## Voir également

* Qualité des données