Générer des jeux de tests pour les développeurs à partir des bases de production

Régulièrement, les modèles et les données évoluent, impactant des changements sur les différentes réplications des bases, en développement, test, production, ...

Afin de garantir l'utilisation de données qui soient fidèles à la production, pour être dans un contexte similaire, dans ce tutoriel, nous allons générer des données pour une base de développement/recette à partir d'une base de production, tout en masquant les données jugées sensibles.

Pour cela, nous allons utiliser Change Manager 5.1Aller sur la page de Change Manager, de la société EmbarcaderoAller sur http://www.embarcadero.fr/, outil pour la gestion du changement des bases de données.

Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Share on Google+ 

I. Avant de commencer...

Pour mettre en pratique ce tutoriel, nous avons au minimum besoin de :

  • une base de données (IBM® DB2® pour LUW, Microsoft® SQL Server, Oracle® et/ou Sybase®)
  • les clients associés aux bases de données utilisées
  • Embarcadero Change Manager Ultimate Edition (Masquage des données uniquement disponible dans cette édition)
  • un poste de travail (500 Mo d'espace disque, 1 Go de mémoire) (Informations complémentairesEmbarcadero Change Manager System Requirements)

Concrêtement, nous allons utiliser :

  • une base de données Oracle 10g
  • Client pour Oracle 10g
  • une base de données Microsoft SQL Server
  • Client natif pour Microsoft SQL Server
  • Embarcadero Change Manager Ultimate Edition avec une version d'évaluation de 14 jours

Il existe 4 éditions différentes d'Embarcadero Change Manager : Personal, Standard, Professional & Ultimate.
Les différences entre les éditions sont décrites sur cette pageEmbarcadero Change Manager - Product Editions.

II. Téléchargement de Change Manager

Pour télécharger Embarcadero Change Manager, il suffit d'aller sur le site suivant : Télécharger une versions d'évaluation de Change ManagerDownload a Trial for Change Manager

Une licence d'évaluation est valide pour une durée de 14 jours à compter du téléchargement.

On clique sur le lien Téléchargement correspondant à son système d'exploitation ; dans ce tutoriel, on utilisera WindowsWindows.
On accepte les restrictions d'exportation (Agree), et le téléchargement se lance.
Sur la page Web, on spécifie son utilisateur EDNEmbarcadero Developer Network ou pour les nouveaux, on en crée un, afin de recevoir une licence d'évaluation :

Sign-in
Sign-in

On vérifie ses emails afin de trouver un email intitulé, "Enregistrement de produit Embarcadero", envoyé par "Embarcadero-licensing [activation@embarcadero.com]". On procède ensuite à l'installation du produit...

Certains clients de messagerie peuvent considérer cet email comme du spam et le classer dans le répertoire des courriers indésirables / spams !
Si vous ne le voyez pas arriver dans les 5 minutes, pensez à vérifier...

III. Installation de Change Manager

III-A. Installation des fichiers

Après avoir télécharger le produit on exécute le programme d'installation : cm51

InstallAnywhere décompresse les fichiers et le programme d'installation affiche son premier écran :

Introduction
Introduction

On clique sur Next :

Licence
Licence

On accepte les termes de la licence, on clique sur Next :

Type
Type d'installation

Change Manager peut s'installer de deux façons :

  • Application autonome
  • Extension dans un Eclipse existant (3.3 - Europa)

Dans ce tutoriel, on installera l'application autonome, on clique sur Next :

Répertoire
Répertoire d'installation

Après avoir choisi le répertoire dans lequel on veut installer Change Manager, on clique sur Next :

Raccourcis
Raccourcis

On choisit les raccourcis souhaités et on clique sur Next :

Résumé
Résumé de l'installation

On vérifie les paramètres d'installation puis on lance l'installation en cliquant sur Install :

Installation en cours
Installation en cours

Une fois l'installation terminée, cet écran s'affiche :

Installation terminée
Installation terminée

On coche la case pour lancer Embarcadero Change Manager automatiquement et on clique sur Done.
L'installation est alors terminée. On peut passer à l'enregistrement...

III-B. Enregistrement

Lorsqu'Embarcadero Change Manager se lance pour la première fois, un expert permettant l'enregistrement s'exécute :

Registration
Expert d'enregistrement

On renseigne les différents champs avec les informations reçues par email, et on clique sur Register.
L'interface d'Embarcadero Change Manager se lance...

Change Manager
Embarcadero Change Manager 5.1

IV. Enregistrement des sources de données

Avec la version 5.1, lorsque Change Manager se lance, un expert vous permet d'effectuer les tâches courantes, d'accéder très rapidement à vos précédents travaux, d'importer les sources d'une version précédente, ...

Démarrage
Expert au démarrage de Change Manager

Pour ce tutoriel, nous allons manuellement ajouter deux sources de données distinctes :

  • 1 source pour une base de données Oracle 10g de production contenant les données réelles
  • 1 source pour la base de données Microsoft SQL Server utilisée par les développeurs/testeurs

Pour manuellement ajouter nos sources de données, nous fermons l'expert de bienvenue en cliquant sur Close.

IV-A. Ajout d'une source de données Oracle 10g

Afin d'ajouter une nouvelle source de données, nous allons utiliser le menu contextuel du répertoire Managed Data Sources. Pour cela, on va sur l'onglet Data Source Explorer :

Datasource-Explorer
Onglet Data Source Explorer

On fait un click avec le bouton droit sur le répertoire Managed Data Sources et on clique sur New / Data Source :

new-datasource
Menu contextuel pour créer une nouvelle source de données

Un expert pour nous guider lors de la création de cette nouvelle source de données se lance alors. Notre base de production étant sur Oracle 10g, nous choisissons ce type de base de données.
Nous cochons également la case pour que Change Manager nous crée un répertoire par type de base :

Datasource-wizard
Nouvelle source de données

Les écrans suivant varient en fonction du type de base de données choisi. On constate par exemple qu'en ayant choisi Oracle, on a le choix entre l'utilisation du TNS Name ou de renseigner directement les différentes informations :

oracle-parameters
Paramétrage d'une nouvelle source de données Oracle

Pour accéder à un type de base de données, le client de cette base doit être installé sur la machine qui héberge Embarcadero Change Manager (dans le cadre de ce tutoriel, un client Oracle 10g et un client Microsoft SQL Server sont installés).

On clique sur le bouton Test Connection et si vos paramètres sont correctement renseignés, vous devez obtenir cet écran :

connexion-reussie
Connexion réussie

Il ne reste plus qu'à cliquer sur le bouton Finish pour finaliser la création de cette nouvelle source de données et la visualiser ainsi dans l'explorateur des sources de données :

datasource-ajoutee
Nouvelle source de données Oracle 10g ajoutée

Nous pouvons maintenant procéder à l'enregistrement de la source de données Microsoft SQL Server...

IV-B. Ajout d'une source de données Microsoft SQL Server

Pour procéder à l'ajout de la source de données de développement, on peut procéder de la même manière que pour la première. Nous allons opérer différemment.

Nous allons cliquer sur le menu : File / New / Other...

file-new-other
Menu File / New / Other...

Puis nous allons choisir l'élément Data Source dans le répertoire SQL Development :

new-datasource-wizard
Choix de l'expert pour la création d'une nouvelle source de données

On retrouve alors le même écran que lors de l'enregistrement de la première source de données :

Datasource-wizard
Nouvelle source de données

On définit les différents paramètres spécifiques à Microsoft SQL Server :

mssql-parameters
Paramétrage d'une nouvelle source de données Microsoft SQL Server

On valide que les paramètres sont corrects en cliquant sur le bouton Test Connection :

connexion-reussie
Connexion réussie

Puis on clique sur le bouton Finish pour visualiser les deux sources maintenant configurées dans Embarcadero Change Manager :

2-datasources
Sources de données enregistrées

Comme j'ai coché la case pour la création d'un répertoire par type de base, on constate la création des sous-répertoires par type de base (Oracle & Microsoft SQL Server).

V. Paramétrage pour la création des données

Maintenant que nous avons configuré nos deux sources de données, nous allons créer un job afin de copier les données de notre serveur de production sur notre serveur de développement. Nous allons également paramétrer ce job afin que cette copie, ne contiennent pas de données sensibles, mais des données similaires, utilisables par les développeurs/testeurs.

Pour cela nous créons un nouveau job de comparaison des données, Data Comparison Job. De nombreuses méthodes existent pour créer un nouveau job. Nous allons le créer en utilisant le menu principal de Change Manager et en cliquant sur File / New / Data Comparison Job :

new-data-comparison-job
Créer un nouveau job de comparaison des données

Un nouvel expert s'affiche dans la partie centrale. Il se décompose au départ en 5 parties principales : Overview (vue d'ensemble), Options, Mapping (Mappage des données), Notifications, History (Historique). Une 6ème partie affichera les résultats (Results) après l'exécution du job.

On donne un nom à notre job, éventuellement une description.
Puis on spécifie les deux sources de données à utiliser ainsi que la base de données sur laquelle on souhaite effectuer le traitement (GIM dans ce tutoriel) :

data-copy-overview
Paramétrage du nom du job et des sources de données

On clique ensuite sur l'onglet Options.
On coche la case Automatically Synchronize qui va nous permettre, non seulement d'automatiser la synchronisation, mais également d'utiliser les règles de masquage lors de la future copie.

data-copy-options
Paramétrage de la synchronisation automatique

Parcourez les différentes options pour voir les possibilités proposées lors de la copie des données.

On clique ensuite sur l'onglet Mapping.
Vous pouvez ajouter d'autres bases si vous le souhaitez ou on clique directement sur celle que l'on a choisi dans le premier écran, afin de la sélectionner pour faire apparaître le lien Yes, retrieve the objects in this pair dans la seconde partie du cadre (Table Mapping) :

data-copy-mapping-databases
Sélection de la base pour pouvoir afficher ses tables

On clique sur le lien Yes, retrieve the objects in this pair et Change Manager récupère les différentes tables et les affiche :

data-copy-mapping-tables
Sélection de la table pour pouvoir afficher ses colonnes

On clique sur le lien View Column Mapping pour afficher les différentes colonnes et masquer les données sensibles :

data-copy-mapping-columns
Mappage des colonnes de la table CLIENT

Nous choisissons de mélanger les données entre les différentes lignes de la table de production pour les prénoms et les noms dans la table de la plateforme de développement ainsi que de générer une valeur aléatoire pour les numéros de téléphones :

data-copy-masking-data
Masquage des colonnes sensibles de la table CLIENT de production
masking-data-options
Options pour les règles de masquage des données
Pour le masquage des données, il existe 4 options :
  • None : Recopie la donnée d'origine
  • Randomize : Génère une donnée aléatoire dans le même format que les données d'origine
  • Shuffle : Mélange les lignes
  • Use Default : Utilise le paramètre de masquage défini sur la table elle-même

Voici quelques courts exemples pour illustrer :

Numéro de ligne Source None Randomize Shuffle
1 AAA AAA B4Z QP7 BBB 18W
2 BBB BBB S87 1D0 AAA BBB
3 C1F C1F 1S6 DB4 18W 123
4 123 123 8W9 32D C1F AAA
5 18W 18W TY8 1S6 123 C1F
Numéro de ligne Source None Randomize Shuffle
1 123 123 423 612 789 334
2 456 456 410 384 456 123
3 789 789 231 619 124 456
4 124 124 941 457 334 789
5 334 334 651 314 123 124
Numéro de ligne Source None Randomize Shuffle
1 123-456 123-456 845-124 612-941 123-456 124-951
2 124-951 124-951 107-035 384-078 124-951 123-456

Lorsque l'on a terminé les différents mappages, on clique sur l'onglet Notification si on souhaite être notifié lors de l'exécution du job.
Nous allons simplement paramétrer le job pour que celui-ci génère des fichiers afin que nous puissions contrôler son exécution :

data-copy-notification
Paramétrage des notifications

Nous demandons la génération de fichiers lorsque nous utiliserons un batch en ligne de commande uniquement, quelque soit le résultat. Les fichiers générés seront systématiquement un état sous forme de PDF, et des fichiers de logs en cas de problème.

Nous sommes prêts à générer les données sur la base de développement...
L'onglet History comporte une liste actuellement vide puisque l'on n'a encore jamais exécuté le job.

VI. Génération des données sur la base de développement

Pour exécuter le job que l'on vient de paramétrer, on clique sur le bouton Run Job, situé en haut à droite run-job-button pour lancer la synchronisation entre les deux bases de données. Un message de confirmation vous demande de confirmer avant que toutes les données d'origine de la base de développement ne soient supprimées (dans le contexte de ce tutoriel, seule la table CLIENT est mappée, et sera donc la seule impactée) :

synchronize-confirmation
Confirmation avant la suppression des données mappées dans la source de données Destination

Soyez certain d'effectuer vos manipulations sur les bonnes bases de données !

Lorsque le transfert est terminé, on obtient le 6ème onglet Results avec les résultats :

synchronization-results
Résultats de la synchronisation

On peut cliquer sur View Report afin de générer un état :

custom-report
Etat personnalisé

On sauvegarde le job afin de pouvoir le réutiliser ultérieurement en cliquant sur l'icône en forme de disquette de la barre d'outils ou avec le menu principal de Change Manager (File / Save) :

save-job
Sauvegarder le job de comparaison des donnnées

On peut alors voir notre première sauvegarde apparaitre dans l'onglet History (Historique) :

history
Historique des sauvegardes

VII. Vérification des données générées

On a constaté dans les résultats du job que l'on vient d'exécuter que 5600 lignes avaient été générées.
Nous allons maintenant comparer les données entre ces deux bases pour visualiser les différences. Pour cela, nous allons créer un nouveau job de comparaison des données.
A partir du menu contextuel des comparaisons de données de la source de données de production, nous créons un nouveau job de comparaison des données :

contextual-menu-data-comparison-job
Nouveau job de comparaison des données

Paramétrage du job en fonction des besoins. Dans notre contexte, nous choisissons les mêmes sources de données & donnons un nom au job :

new-data-copy-overview
Paramétrage du nom du job et des sources de données

Le mappage par défaut convient et nous n'avons pas besoin de notification. Nous pouvons directement exécuter ce job et visualiser les résultats :

new-data-results
Résultats de la comparaison des données : Aucune ligne similaire

En cliquant sur le lien View, on fait apparaitre un onglet supplémentaire, Database Results. En choisissant la table que l'on avait précédemment synchronisée, on va pouvoir comparer côte-à-côte les lignes des deux bases de données :

data-database-results
Comparaison des données dans l'onglet Database Results

On constate que les prénoms et les noms sont mélangés, tandis que les numéros de téléphones :

data-database-results-phone
Numéros de téléphones aléatoires

... sont complètement aléatoires.

Nos données ainsi générées pour le développement sont parfaites. Nous allons maintenant pouvoir l'automatiser afin d'avoir régulièrement des données similaires à celles de production.

Embarcadero Change Manager permet également de comparer des schémas. On pourrait par conséquent également automatiser la modification des schémas avant la synchronisation des données...

VIII. Automatisation pour une génération planifiée

Notre premier job a généré les données que nous attendions. Nous allons donc automatiser celui-ci.
Pour cela, nous allons générer un script que l'on pourra exécuter en ligne de commande, donc sans avoir à lancer Change Manager manuellement. Plusieurs méthodes existent pour générer ce script en ligne de commande. Lorsque le job est ouvert, on peut par exemples, cliquer sur le bouton Generate Command Line Image non disponible ou à partir du menu contextuel du job dans l'explorateur de job (Job Explorer) :

context-menu-generate_command_line
Générer un script en ligne de commande

Un expert pour la génération du script se lance. Il permet de définir les états que l'on veut générer :

script-generation-wizard-report
Expert pour la génération de script en ligne de commande

... ainsi que le fichier (Commande DOS ou ANT) :

script-generation-wizard-file
Script en ligne de commande

Lorsque l'on clique sur le bouton Finish, le fichier est alors généré à l'emplacement préalablement choisi :

script-generation-file
Fichier généré

On peut automatiser ce script en le planifiant dans le planificateur des tâches de Windows par exemple.
Nous allons commencer par le tester à partir d'une invite de commande MS-DOS :

batch
Exécution en ligne de commande du job

Le script s'est parfaitement déroulé. Nous pouvons vérifié également un des états que nous avons paramétré lors de la génération du script :

report
Extrait de l'état HTML

Une fois le script planifié pour s'exécuter à intervalles réguliers, on a terminé !

scheduled-tasks
Tâches planifiées

L'exécution du script en ligne de commande ne nécessite pas que l'interface de Change Manager soit lancée sur la machine.

IX. Liens utiles

X. Conclusion

Durant ce tutoriel, nous aurons vu quelques-unes des fonctionnalités d'Embarcadero Change Manager, dont :

  • Création de sources de données (experts dédiés par type de source)
  • Job pour la synchronisation des données
  • Job pour la comparaison des données
  • Comparaison manuelle côte-à-côte des différences
  • Script pour la synchronisation automatique des données

De nombreuses autres fonctionnalités toutes aussi utiles sont également disponibles : pour les configurations, les schémas, l'archivage, la comparaison avec des références, ...
Regardez les vidéos du dernier lienwww.embarcadero.com ! Même si votre anglais n'était pas des meilleurs, les images parlent souvent d'elles-mêmes. Ce tutoriel est fortement inspiré de l'une d'elles !


(Document édité pour mises à jour des URLs)

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Whiler. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.