14. System Center
Virtual Machine Manager
Team Foundation Server
Lab Management Hyper-V Host Library Share
Test Case Management Virtual Machine VM Template
Build Management Lab Lab
Agent Agent
Work Item Tracking
Test Build Test Build
Source Control Agent Agent Agent Agent
Test
Controller
Testeurs
Build
Controller
Maîtrise
d’ouvrage
Développeurs
Une définition de build est un ensemble de données liées à un projet d’équipe, chargé de décrire des paramètres de compilationQuoi compiler : une ou plusieurs solutions .NETComment : en mode release, debug, quel type de processeur…Avec quelles actions spécifiques : exécution de tests, analyse de qualité…Quand : à la demande, hebdomadaire, en continu.
Gestion des machines virtuellesTemplates de machinesAbstraction de la couche physiqueNotion de librairie
Les concepts :Composant de TFSConnecté à SCVMMEtend le systèmede Build TFSCorrelationLab / EnvironnementLe serveur TFS est connecté à un serveur de virtualisation. Un ensemble de modèles de machines virtuelles peut être utilisé pour instancier à la demande un nouvel environnement de test complet.La communication entre TFS et le serveur de virtualisation est réalisé par l'intermédiaire de l'outil d'administration System Center Virtual Machine Manager (SCVMM)Les Fonctionnalités : Créer et gérer des environnements de Test virtuels ou physiquesPrendre/restaurer des instantanés de machine virtuelleDéployer un build sur un environnement, le build courant ou n’importe quel buildInteragir avec les machines virtuelles à travers le visionneuse d’environnementDéfinir des paramètres de tests pour les environnementsJouer des tests manuels ou automatiquesLes avantages : Les environnements virtuels peuvent être utilisé pourTester des build en intégration continue avec des tests d’interface automatisésDébugger des erreurs difficile à reproduireDémonstration à des clientsMaintenir des instantanés d’anciens buildsLivrer des Hot-Fix en productionTests de charges…Un instantané de Machine Virtuelle :Un instantané de la machine virtuelle est un instantané à base de fichiers d'état, les données du disque et la configuration d'une machine virtuelle à un point précis dans le temps. Un instantané d'une machine virtuelle est une fonction similaire au état d'hibernation d'un ordinateur portable avec la flexibilité supplémentaire que machine virtuelle prend en charge plusieurs instantanés. Vous pouvez revenir l'état d'un instantané et de continuer à fonctionner à partir de là. L'image ci-dessous montre un arbre d'instantanés pour une machine virtuelle Hyper-V.
La démarche : Installer et configurer des hôtes Hyper-VInstaller et configurer SCVMMConfigurer Lab Management pour TFS : Pour permettre à Team Foundation Server de communiquer avec le serveur SCVMM, vous devez également installer la Console Administrateur SCVMM sur votre Ordinateur TFS s'il s'agit d'un ordinateur différent de l'ordinateur que vous utilisez comme votre Ordinateur VMM. Configurer Lab Management pour chaque collection de projets d’équipeInstaller le contrôleur de build et le contrôleur de testVous pouvez également avoir une installation plus complexe avec des ordinateurs séparés pour SCVMM, Hyper-V, votre serveur de bibliothèque et Team Foundation Server. RemarqueLes ordinateurs que vous utilisez comme serveurs de bibliothèque (notamment l'ordinateur SCVMM qui possède un serveur de bibliothèque par défaut) et comme hôtes Hyper-V doivent être sur un réseau gigabit network connecté à un commutateur de réseau commun. Plus le débit du réseau sera élevé, meilleure sera la performance au cours du déploiement des ordinateurs virtuels vers les hôtes et lors de l'enregistrement des ordinateurs virtuels sur la bibliothèque de votre hôte.
PrérequisLa librairie SCVMM doit être associée au team project3 possibilités A partir de machine physiqueA partir de machine virtuelle existanteA partir de templateComposition à partir de template de machineUtilisation d’un template d’environnementDans la section Environnements, cliquez sur Nouveau. Dans Nom et Emplacement, saisissez le nom de l'environnement ainsi que la librairie SCVMM que vous souhaitez utiliser. Dans Ordinateurs, ajoutez les machines que vous souhaitez voir apparaître dans l'environnement en cliquant sur Ajouter l'environnement (il est possible d'ajouter plusieurs fois le même modèle de machine). Dans Propriétés de l'ordinateur, définissez les informations demandées pour tous les ordinateurs de l'environnement (comme par exemple la clé de produit à utiliser pour Windows). Dans Fonctionnalités, sélectionnez les fonctionnalités que vous souhaitez activer parmi l'exécution des tests, l'exécution d'un flux de travail et l'isolement réseau. Vérifiez les paramètres dans l'étape Résumé. Cliquez sur Terminer pour valider la création du modèle d'environnement. Le déploiement de l'environnement se fait alors en le sélectionnant dans la liste et en cliquant sur Déployer. Il reste à choisir le serveur Hyper-V dans lequel il sera stocké et à le nommer (Le processus de déploiement d'un environnement peut demander un certain temps en fonction du nombre de machines qui y sont incluses. Une des étapes concerne notamment la copie de la machine virtuelle à partir de la librairie SCVMM vers le serveur Hyper-V).L'objectif final d'un environnement virtuel est de fournir à l'équipe qualité, avec un moindre effort, des machines de test les plus à jour possible. Il sera utilisé principalement suivant deux axes : le déploiement de la dernière version de l'application et l'exécution des tests de cette dernière. Dès qu'un environnement est déployé à travers le Lab Management, il est utilisable en amont par les équipes de développement au sein du processus de build. A l'aide de Lab Management, il n'est plus nécessaire d'effectuer le déploiement de la nouvelle version de l'application au sein du processus de build classique que se contente alors de compiler et générer un package de déploiement. Ce package est alors utilisé en entrée d'un autre type de définition de build utilisant un modèle destiné au Lab Management décrit en quatre grandes étapes : Le choix d'un environnement au sein du Lab Management et éventuellement sa restauration automatique à un état spécifique.L'exécution d'un processus de build classique de génération de package.L'exécution de lignes de commande sur les machines de l'environnement.Optionnellement, l'exécution de test automatiques sur l'application fraîchement déployée. L'utilisation de l'environnement au sein de l'exécution d'un test nécessite de définir une configuration de test qui l'exploite. Si cette configuration est définie par le plan de test, elle deviendra la configuration par défaut. Il est également possible de définir à chaque exécution, en démarrant la série de tests avec options (la création d'une configuration de test incluant un environnement virtuel géré par le Lab Management se réalise de la même manière que dans le cas d'un environnement physique). Si l'environnement contient le client en plus des machines serveurs, il est possible de s'y connecter en utilisant le bouton Connexion à l'environnement (visionneuse d'environnement fortement similaire à une connexion à distance Windows). Le test se déroule alors exactement de la même manière que dans le cadre d'une exécution locale, à la différence près que toutes les options du test se réalisent à travers la visionneuse d'environnement, directement sur la machine virtuelle. Si une anomalie est rencontrée (ou si besoin), il est possible de prendre une capture instantanée de tout l'environnement en cliquant sur le bouton Prendre un instantané de l'environnement. Ceci aura pour effet de prendre la capture et d'attacher un lien sur l'étape courante du test dans le but de pouvoir revenir à cet état par la suite. Ceci est très intéressant dans le cadre de la découverte d'anomalie car le développeur a alors la possibilité de visionner l'environnement tel qu'il était lors de l'apparition de l'anomalie et peut investiguer en exploitant les données de la base de données, la configuration du serveur Web, du client… Lorsqu'un personne souhaite visualiser une capture d'un environnement, deux possibilités s'offrent à lui : revenir à l'état correspondant ou ouvrir l'environnement dans son état courant.
Les machines doivent avoirLab Agent : L'agent de lab permet d'interagir avec le système de la machine virtuelle pour effectuer toutes les opérations de configuration nécessairesTest Agent : L'agent de test permet d'exécuter des tests et de récolter des indicateurs sur la machineBuild Agent : L'agent de build apporte la fonctionnalité d'exécution de flux de travail utilisée pour les étapes de déploiement lors d'une build d'intégration continueOutil CodePlex mis à disposition par l'équipe en charge de Lab Management chez Microsoft nommé VMPrepTool : http://vslabmgmt.codeplex.com/. Il permet d'utiliser une machine virtuelle existante contenant tous les composants nécessaires à l'exécution de l'application à déployer et à tester (IIS, SQL Server…) et de la transformer en modèle au sein de la librairie de SCVMM. L'outil installe et configure tous les agents nécessaires au Lab Management sur la machine sélectionnée et la prépare de façon à ce qu'elle puisse être déployée automatiquement à partir de l'outil Test Manager.Les modèles contenus dans le serveur SCVMM sont alors utilisables au sein de l'outil de test. Pour pouvoir les exploiter lors d'un test, il faut déployer un environnement contenant une instanciation du modèle en question. Il faut d'abord référencer le modèle au sein de l'outil Test Manager. Pour cela, on l'importe à partir de la section Ordinateurs virtuels et modèles de la section Bibliothèque du Centre Lab. Cliquez sur Importer puis dans Nom et Ordinateur, sélectionnez un modèle de la Librairie de modèles SCVMM en cliquant sur Parcourir et donnez-lui un rôle. Dans Propriétés de l'ordinateur, saisissez les informations demandées telles que le mot de passe de l'administrateur de la machine. Cliquez sur Terminer pour ajouter le modèle de machine. Il est possible d'importer plusieurs modèles de machines virtuelles, chacun d'entre eux représentant un rôle que l'on pourra utiliser. Il n'est pas possible de déployer directement un modèle, il faut avant qu'il soit inclus dans un modèle d'environnement. Chaque environnement peut être déployé autant de fois que nécessaire et chacun est indépendant des autres.
Avantages : Permet de jouer de façon auto des tests UIPermet d’avoir un environnement propre à chaque testSnapshot disponible aux testeursDéploiement de l’application à chaque buildRésultat des testsVidéos, IntelliTrace, eventLogPour aller plus loin : Test ImpactIntellitrace pour le debugCouverture de code Les tests, qu'ils soient automatisés ou non, peuvent être exécutés sur un environnement différent de la machine du testeur. Pour cela, l'équipe à le choix entre la création d'un environnement physique ou d'un environnement géré par le Lab Management. L'avantage du Lab Management est l'automatisation d'un ensemble d'actions d'administration lourdes et chronophages. En plus de cela, il permet d'enrichir le rapport d'une fiche de bogue en y insérant un lien vers un état spécifique de l'environnement. De cette manière, l'équipe de développement possède tous les éléments nécessaires à la reproduction de l'anomalie et à sa correction.Tester Lab Management, c'est facile.Comment ça marche ? Il suffit d’avoir une machine (8Gb de ram recommandés, 4Gb peuvent suffire) avec Hyper-V, d’importer la machine et de suivre un petit guide et C’EST PARTI :Le lien vers la machine virtuelle Hyper-V : http://www.microsoft.com/downloads/details.aspx?FamilyID=592e874d-8fcd-4665-8e55-7da0d44b0dee&displaylang=enLe lien vers le guide (en anglais) : http://blogs.msdn.com/lab_management/archive/2010/02/12/one-box-lab-management-walkthrough.aspx#Setup3 Améliorations de Lab Management au sein de TFS v11 : http://blogs.msdn.com/b/bharry/archive/2011/10/31/lab-management-improvements-in-tfs-11.aspxLe lab management permet de connecter TFS à un environnement de virtualisation Hyper-V. Avec TFS 2010, il est nécessaire de posséder un server Hyper-V et de passer par System Center Virtual Machine Manager.Dans TFS 11, ceci ne sera plus une obligation pour activer les fonctionnalités associées au lab management de déploiement et d’exécution de test. On peut partir d’un serveur classique (virtualisé ou physique) possédant ce qu’il faut pour faire tourner notre application et simplement l’inclure dans un environnement de type Standard. C’est le Lab Center de Test Manager qui se charge de déployer les agents de tests et de build.Tout devient plus simple et il est surtout plus facile d’intégrer le lab management dans un environnement existant !http://vsarlabman.codeplex.com/releases