Partager via


Comment : créer un adaptateur de données de diagnostic

Pour créer un adaptateur de données de diagnostic, vous devez créer une bibliothèque de classes à l'aide de Visual Studio, puis ajouter à cette dernière les API d'adaptateur de données de diagnostic fournies par Visual Studio Premium.Envoyez toutes les informations que vous voulez sous forme de flux de données ou de fichier au DataCollectionSink fourni par l'infrastructure lors de la gestion des événements déclenchés pendant la série de tests.Les flux de données ou les fichiers envoyés au DataCollectionSink sont stockés en tant que pièces jointes aux résultats des tests lorsque votre test est terminé.Si vous créez un bogue à partir de ces résultats de tests ou lorsque vous utilisez Test Runner, les fichiers sont également liés au bogue.

Vous pouvez créer un adaptateur de données de diagnostic qui affecte l'ordinateur où vos tests sont exécutés, ou un ordinateur qui fait partie de l'environnement que vous utilisez pour exécuter votre application testée.Par exemple, collecter des fichiers sur l'ordinateur de test où sont exécutés les tests, ou collecter des fichiers sur l'ordinateur ayant le rôle de serveur Web de votre application.

Vous pouvez attribuer à l'adaptateur de données de diagnostic un nom convivial qui s'affiche lorsque vous créez vos paramètres de test à l'aide de Gestionnaire de tests ou de Visual Studio.Les paramètres de test vous permettent de définir le rôle d'ordinateur qui exécutera des adaptateurs de données de diagnostic spécifiques dans votre environnement lors de l'exécution de vos tests.Vous pouvez également configurer vos adaptateurs de données de diagnostic lorsque vous créez vos paramètres de test.Par exemple, vous pouvez créer un adaptateur de données de diagnostic qui collecte des journaux personnalisés de votre serveur Web.Lorsque vous créez vos paramètres de test, vous pouvez choisir d'exécuter cet adaptateur de données de diagnostic sur les ordinateurs qui prennent en charge ce rôle de serveur Web et modifier la configuration de vos paramètres de test de façon à collecter uniquement les trois derniers journaux créés.Pour plus d'informations sur les paramètres de test, consultez Configuration d'ordinateurs et collecte d'informations de diagnostic à l'aide de paramètres de test.

Les événements sont déclenchés lorsque vous exécutez vos tests afin que votre adaptateur de données de diagnostic puisse exécuter des tâches à ce stade du test.

Important

Ces événements peuvent être déclenchés sur différents threads, en particulier lorsque les tests s'exécutent sur plusieurs ordinateurs.Par conséquent, vous devez savoir que des problèmes de threads peuvent survenir et veiller à ne pas endommager accidentellement les données internes de l'adaptateur personnalisé.Vérifiez que votre adaptateur de données de diagnostic est thread-safe.

Voici une liste partielle des principaux événements que vous pouvez utiliser lorsque vous créez votre adaptateur de données de diagnostic.Pour obtenir une liste complète des événements d'adaptateur de données de diagnostic, consultez la classe DataCollectionEvents abstraite.

Événement

Description

SessionStart

Début de votre série de tests

SessionEnd

Fin de votre série de tests

TestCaseStart

Début de chaque test dans la série de tests

TestCaseEnd

Fin de chaque test dans la série de tests

TestStepStart

Début de chaque étape de test dans un test

TestStepEnd

Fin de chaque étape de test dans un test

[!REMARQUE]

Lorsqu'un test manuel est terminé, plus aucun événement de collecte de données n'est envoyé à l'adaptateur de données de diagnostic.Lorsqu'un test est réexécuté, un nouvel identificateur de cas de test lui est affecté.Si un utilisateur réinitialise un test pendant son exécution (ce qui déclenche l'événement TestCaseReset ) ou modifie le résultat d'une étape de test, aucun événement de collecte de données n'est envoyé à l'adaptateur de données de diagnostic, mais l'identificateur de cas de test reste inchangé.Pour déterminer si un cas de test a été réinitialisé, vous devez effectuer le suivi de l'identificateur de cas de test de votre adaptateur de données de diagnostic.

Utilisez la procédure suivante pour créer un adaptateur de données de diagnostic qui collecte un fichier de données basé sur les informations configurées lors de la création de vos paramètres de test.

Pour obtenir un exemple complet de projet d'adaptateur de données de diagnostic, notamment un éditeur de configuration personnalisé, consultez Exemple de projet pour la création d'un adaptateur de données de diagnostic.

Création et installation d'un adaptateur de données de diagnostic

Pour créer et installer un adaptateur de données de diagnostic

  1. Créer un nouveau projet de bibliothèque de classes.

    1. Dans le menu Fichier, pointez sur Ajouter, puis cliquez sur Nouveau projet.

    2. Dans Types de projets, sélectionnez la langue à utiliser.

    3. Dans Modèles Visual Studio installés, sélectionnez Bibliothèque de classes.

    4. Tapez un nom pour votre Adaptateur de données de diagnostic.

    5. Cliquez sur OK.

  2. Ajoutez l'assembly Microsoft.VisualStudio.QualityTools.ExecutionCommon.

    1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Références, puis sélectionnez la commande Ajouter une référence.

    2. Choisissez .NET et recherchez Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Cliquez sur OK.

  3. Ajoutez l'assembly Microsoft.VisualStudio.QualityTools.Common.

    1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Références, puis sélectionnez la commande Ajouter une référence.

    2. Choisissez /.NET, recherchez Microsoft.VisualStudio.QualityTools.Common.dll.

    3. Cliquez sur OK.

  4. Ajoutez les instructions using suivantes à votre fichier de classe :

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Ajoutez le DataCollectorTypeUriAttribute à la classe de votre adaptateur de données de diagnostic pour l'identifier comme un adaptateur de données de diagnostic, en remplaçant Société, Produit et Version par les informations appropriées pour votre Adaptateur de données de diagnostic :

    [DataCollectorTypeUri("datacollector://Company/Product/Version")]
    
  6. Ajoutez l'attribut DataCollectorFriendlyNameAttribute à la classe, en remplaçant les paramètres par les informations appropriées pour votre Adaptateur de données de diagnostic :

    [DataCollectorFriendlyName("Collect Log Files", false)]
    

    Ce nom convivial est affiché dans l'activité de paramètres test.

    [!REMARQUE]

    Vous pouvez également ajouter le DataCollectorConfigurationEditorAttribute pour spécifier le Type de votre éditeur de configuration personnalisée pour cet adaptateur de données, et indiquer éventuellement le fichier d'aide à utiliser pour l'éditeur.

    Vous pouvez également appliquer le DataCollectorEnabledByDefaultAttribute pour indiquer qu'il doit toujours être activé.

  7. La classe de l'adaptateur de données de diagnostic doit hériter de la classe DataCollector comme suit :

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Ajoutez les variables locales comme suit :

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Ajoutez la méthode Initialize et une méthode Dispose.Dans la méthode Initialize, vous pouvez initialiser le récepteur de données, ainsi que toutes les données de configuration des paramètres de test, et inscrire les gestionnaires d'événements à utiliser comme suit :

    public override void Initialize(
        XmlElement configurationElement, 
        DataCollectionEvents events, 
        DataCollectionSink sink, 
        DataCollectionLogger logger, 
        DataCollectionEnvironmentContext environmentContext)
    {
           dataEvents = events;  // The test events
           dataLogger = logger;  // The error and warning log
           dataSink = sink;      // Saves collected data
           // Configuration from the test settings
           configurationSettings = configurationElement;
    
           // Register common events for the data collector
           // Not all of the events are used in this class
        dataEvents.SessionStart += 
            new EventHandler<SessionStartEventArgs>(OnSessionStart);
        dataEvents.SessionEnd += 
            new EventHandler<SessionEndEventArgs>(OnSessionEnd);
        dataEvents.TestCaseStart += 
            new EventHandler<TestCaseStartEventArgs>(OnTestCaseStart);
        dataEvents.TestCaseEnd += 
            new EventHandler<TestCaseEndEventArgs>(OnTestCaseEnd);
    }
    
    public override void Dispose(bool disposing)
    {
        if (disposing)
        {
            // Unregister the registered events
            dataEvents.SessionStart -= 
                new EventHandler<SessionStartEventArgs>(OnSessionStart);
            dataEvents.SessionEnd -= 
                new EventHandler<SessionEndEventArgs>(OnSessionEnd);
            dataEvents.TestCaseStart -= 
                new EventHandler<TestCaseStartEventArgs>(OnTestCaseStart);
            dataEvents.TestCaseEnd -= 
                new EventHandler<TestCaseEndEventArgs>(OnTestCaseEnd);
        }
    }
    
  10. Utilisez le code de gestionnaire d'événements suivant et la méthode privée pour collecter le fichier journal générées pendant le test :

    public void OnTestCaseEnd(sender, TestCaseEndEventArgs e)
    {
        // Get any files to be collected that are
        // configured in your test settings
        List<string> files = getFilesToCollect();
    
        // For each of the files, send the file to the data sink
        // which will attach it to the test results or to a bug
        foreach (string file in files)
        {
            dataSink.SendFileAsync(e.Context, file, false);
        }
    }
    
    // A private method that returns the file names
    private List<string> getFilesToCollect()
    {
        // Get a namespace manager with our namespace
        XmlNamespaceManager nsmgr =
            new XmlNamespaceManager(
                configurationSettings.OwnerDocument.NameTable);
        nsmgr.AddNamespace("ns", 
            "http://MyCompany/schemas/MyDataCollector/1.0");
    
        // Find all of the "File" elements under our configuration
        XmlNodeList files =
            configurationSettings.SelectNodes(
                "//ns:MyDataCollector/ns:File");
    
        // Build the list of files to collect from the 
        // "FullPath" attributes of the "File" nodes.
        List<string> result = new List<string>();
        foreach (XmlNode fileNode in files)
        {
            XmlAttribute pathAttribute = 
                fileNode.Attributes["FullPath"];
            if (pathAttribute != null &&
                !String.IsNullOrEmpty(pathAttribute.Value))
            {
                result.Add(pathAttribute.Value);
            }
        }
    
        return result;
    }
    

    Ces fichiers sont joints aux résultats de test.Si vous créez un bogue à partir de ces résultats de tests ou lorsque vous utilisez Test Runner, les fichiers sont également joints au bogue.

    Si vous souhaitez utiliser votre propre éditeur pour collecter des données à utiliser dans vos paramètres de test, consultez Comment : créer un éditeur personnalisé pour les données de votre adaptateur de données de diagnostic.

  11. Pour collecter un fichier journal lorsqu'un test se termine en fonction des éléments configurés par l'utilisateur dans les paramètres de test, vous devez créer un fichier App.config et l'ajouter à votre solution.Ce fichier présente le format suivant et doit contenir l'URI de votre adaptateur de données de diagnostic pour l'identifier.Remplacez « Société/NomProduit/Version » par les vraies valeurs.

    [!REMARQUE]

    Si vous n'avez pas besoin de configurer les informations de votre adaptateur de données de diagnostic, vous n'avez pas besoin de créer un fichier de configuration.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="DataCollectorConfiguration" 
          type="Microsoft.VisualStudio.TestTools.Execution.DataCollectorConfigurationSection, 
          Microsoft.VisualStudio.QualityTools.ExecutionCommon, 
          Version=4.0.0.0, Culture=neutral, 
          PublicKeyToken=b03f5f7f11d50a3a" />
      </configSections>
      <DataCollectorConfiguration 
        xmlns="https://microsoft.com/schemas/VisualStudio/TeamTest/11">
        <DefaultConfiguration>
          <!-- Your default config settings -->
            <File FullPath="C:\temp\logfile1.txt"/>
            <File FullPath="C:\temp\logfile2.txt"/>
        </DefaultConfiguration>
      </DataCollectorConfiguration>
    </configuration> 
    

    [!REMARQUE]

    L'élément de configuration par défaut peut contenir les données dont vous avez besoin.Si l'utilisateur ne configure pas l'adaptateur de données de diagnostic dans les paramètres de test, les données par défaut seront transmises à votre adaptateur de données de diagnostic lorsqu'il est exécuté.Comme le code XML que vous ajoutez à la section <DefaultConfigurations> n'est pas susceptible de faire partie du schéma déclaré, vous pouvez ignorer les erreurs XML qu'il génère.

    Il existe d'autres exemples de fichiers de configuration dans le chemin suivant en fonction de votre répertoire d'installation :Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors.

    Pour plus d'informations sur la configuration de vos paramètres de test pour l'utilisation d'un environnement lors de l'exécution des tests, consultez Spécification des paramètres des tests dans Microsoft Test Manager ou Créer des paramètres de test pour des tests du système automatisés à l'aide de Microsoft Test Manager.

    Pour plus d'informations sur l'installation du fichier de configuration, consultez Comment : installer un adaptateur de données de diagnostic personnalisé.

  12. Générez votre solution pour créer votre assembly d'adaptateur de données de diagnostic.

  13. Pour plus d'informations sur l'installation de votre éditeur personnalisé, consultez Comment : installer un adaptateur de données de diagnostic personnalisé.

  14. Pour plus d'informations sur la configuration de vos paramètres de test pour l'utilisation d'un environnement lors de l'exécution des tests, consultez Spécification des paramètres des tests dans Microsoft Test Manager ou Créer des paramètres de test pour des tests du système automatisés à l'aide de Microsoft Test Manager.

  15. Pour sélectionner votre adaptateur de données de diagnostic, vous devez d'abord sélectionner des paramètres de test existants ou en créer dans Microsoft Test Manager ou .L'adaptateur s'affiche sous l'onglet Données et diagnostics de vos paramètres de test avec le nom convivial que vous avez assigné à la classe.

  16. Si vous exécutez vos tests à partir de Microsoft Test Manager, vous pouvez préalablement assigner ces paramètres de test à votre plan de test ou bien utiliser la commande Exécuter avec des options pour assigner et remplacer des paramètres de test.Pour plus d'informations sur les paramètres de test, consultez Configuration d'ordinateurs et collecte d'informations de diagnostic à l'aide de paramètres de test.

    Si vous exécutez vos tests à partir de , vous devez définir ces paramètres de test comme étant actifs.Pour plus d'informations sur les paramètres de test, consultez Spécification de paramètres de test pour Visual Studio Tests.

  17. Exécutez vos tests à l'aide des paramètres de test, en sélectionnant votre adaptateur de données de diagnostic.

    Le fichier de données que vous avez spécifié est joint à vos résultats de tests.

Voir aussi

Tâches

Créer des paramètres de test pour des tests du système automatisés à l'aide de Microsoft Test Manager

Référence

DataCollectorConfigurationEditorAttribute

DataCollectionEvents

DataCollector

DataCollectionSink

DataCollectorTypeUriAttribute

DataCollectorFriendlyNameAttribute

DataCollectorEnabledByDefaultAttribute

Concepts

Configuration d'ordinateurs et collecte d'informations de diagnostic à l'aide de paramètres de test

Comment : créer un éditeur personnalisé pour les données de votre adaptateur de données de diagnostic

Autres ressources

Spécification de paramètres de test pour Visual Studio Tests

Spécification des paramètres des tests dans Microsoft Test Manager