Comment : créer un adaptateur de données de diagnosticHow to: Create a Diagnostic Data Adapter

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 Enterprise.To create a diagnostic data adapter, you create a class library using Visual Studio, and then add the Diagnostic Data Adapter APIs provided by Visual Studio Enterprise to your class library. Envoyez toutes les informations que vous voulez sous forme de flux de données ou de fichier au DataCollectionSink fourni par l’infrastructure durant la gestion des événements déclenchés pendant la série de tests.Send any information that you want as a stream or a file to the DataCollectionSink provided by the framework, when handling the events that are raised during the test run. 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é.The streams or files sent to the DataCollectionSink are stored as attachments to the test results when your test finishes. Si vous créez un bogue à partir de ces résultats de tests ou quand vous utilisez Test RunnerTest Runner, les fichiers sont également liés au bogue.If you create a bug from these test results or when you use Test RunnerTest Runner, the files are also linked to the bug.

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.You can create a diagnostic data adapter that affects the machine where your tests are run, or a machine that is part of the environment you are using to run your application under test. 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.For example, collecting files on your test machine where the tests are run, or collecting files on the machine serving in the Web server role for your application.

Vous pouvez attribuer à l’adaptateur de données de diagnostic un nom convivial qui s’affiche quand vous créez vos paramètres de test à l’aide de Microsoft Test Manager ou de Visual Studio.You can give your diagnostic data adapter a friendly name that displays when you create your test settings using Microsoft Test Manager or using 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.Test settings enable you to define which machine role will run specific diagnostic data adapters in your environment when you run your tests. Vous pouvez également configurer vos adaptateurs de données de diagnostic lorsque vous créez vos paramètres de test.You can also configure your diagnostic data adapters when you create your test settings. Par exemple, vous pouvez créer un adaptateur de données de diagnostic qui collecte des journaux personnalisés de votre serveur Web.For example, you may create a diagnostic data adapter that collects custom logs from your Web server. 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.When you create your test settings, you can select to run this diagnostic data adapter on the machine or machines that are performing this Web server role and you can modify the configuration for your test settings to collect only the last three logs that were created. Pour plus d’informations sur les paramètres de test, consultez Collecter des informations de diagnostic à l’aide des paramètres de test.For more information about test settings, see Collect Diagnostic Information Using Test Settings.

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.Events are raised when you run your tests so that your diagnostic data adapter can perform tasks at that point in the 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.These events may be raised on different threads, especially when you have tests running on multiple machines. 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é.Therefore, you must be aware of possible threading issues and not inadvertently corrupt the internal data of the custom adapter. Vérifiez que votre adaptateur de données de diagnostic est thread-safe.Make sure your diagnostic data adapter is 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.The following is a partial list of key events that you can use when you create your diagnostic data adapter. Pour obtenir une liste complète des événements d'adaptateur de données de diagnostic, consultez la classe DataCollectionEvents abstraite.For a complete list of diagnostic data adapter events, see the abstract DataCollectionEvents class.

événementEvent DescriptionDescription
SessionStart Début de votre série de testsStart of your test run
SessionEnd Fin de votre série de testsEnd of your test run
TestCaseStart Début de chaque test dans la série de testsStart of each test in the test run
TestCaseEnd Fin de chaque test dans la série de testsEnd of each test in the test run
TestStepStart Début de chaque étape de test dans un testStart of each test step in a test
TestStepEnd Fin de chaque étape de test dans un testEnd of each test step in a test

Note

Lorsqu’un test manuel est terminé, plus aucun événement de collection de données n’est envoyé à l’adaptateur de données de diagnostic.When a manual test is completed, no more data collection events are sent to the diagnostic data adapter. Lorsqu'un test est réexécuté, un nouvel identificateur de cas de test lui est affecté.When a test is rerun, it will have a new test case identifier. 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é.If a user resets a test during a test (which raises the TestCaseReset event), or changes a test step outcome, no data collection event is sent to the diagnostic data adapter, but the test case identifier remains the same. 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.To determine whether a test case has been reset, you must track the test case identifier in your diagnostic data adapter.

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.Use the following procedure to create diagnostic data adapter that collects a data file that is based on information that you configure when you create your test settings.

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.For a complete example diagnostic data adapter project, including a custom configuration editor, see Sample Project for Creating a Diagnostic Data Adapter.

Création et installation d’un adaptateur de données de diagnosticCreating and Installing a Diagnostic Data Adapter

Pour créer et installer un adaptateur de données de diagnosticTo create and install a diagnostic data adapter

  1. Créer un nouveau projet de bibliothèque de classes.Create a new class library.

    1. Dans le menu Fichier, sélectionnez Nouveau, puis pointez sur Nouveau projet.On the File menu, choose New, and then point to New Project.

    2. Dans Types de projets, sélectionnez la langue à utiliser.From Project types, select the language to use.

    3. Dans Modèles Visual Studio installés, sélectionnez Bibliothèque de classes.From Visual Studio installed templates, select Class Library.

    4. Tapez un nom pour votre Adaptateur de données de diagnostic.Type a name for your Diagnostic Data Adapter.

    5. Cliquez sur OK.Choose OK.

  2. Ajoutez l’assembly Microsoft.VisualStudio.QualityTools.ExecutionCommon.Add the 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.In Solution Explorer, right-click References and choose the Add Reference command.

    2. Choisissez .NET et recherchez Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.Choose .NET and locate Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Cliquez sur OK.Choose OK.

  3. Ajoutez l’assembly Microsoft.VisualStudio.QualityTools.Common.Add the 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.In Solution Explorer, right-click References and select the Add Reference command.

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

    3. Cliquez sur OK.Choose OK.

  4. Ajoutez les instructions using suivantes à votre fichier de classe :Add the following using statements to your class file:

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Ajoutez 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 Company, Product et Version par les informations appropriées pour votre adaptateur de données de diagnostic :Add the DataCollectorTypeUriAttribute to the class for your diagnostic data adapter to identify it as a diagnostic data adapter, replacing Company, Product, and Version with the appropriate information for your Diagnostic Data Adapter:

    [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 :Add the DataCollectorFriendlyNameAttribute attribute to the class, replacing the parameters with the appropriate information for your Diagnostic Data Adapter:

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

    Ce nom convivial est affiché dans l'activité de paramètres test.This friendly name is displayed in the test settings activity.

    Note

    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.You can also add the DataCollectorConfigurationEditorAttribute to specify the Type of your custom configuration editor for this data adapter, and to optionally specify the help file to use for the editor.

    Vous pouvez également appliquer le DataCollectorEnabledByDefaultAttribute pour indiquer qu'il doit toujours être activé.You can also apply the DataCollectorEnabledByDefaultAttribute to specify that it should always be enabled.

  7. La classe de l'adaptateur de données de diagnostic doit hériter de la classe DataCollector comme suit :Your diagnostic data adapter class must inherit from the DataCollector class as follows:

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Ajoutez les variables locales comme suit :Add the local variables as follows:

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Ajoutez la méthode Initialize et une méthode Dispose.Add the Initialize method and a Dispose method. 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 :In the Initialize method, you initialize the data sink, any configuration data from test settings, and register the event handlers you want to use as follows:

    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 :Use the following event handler code and private method to collect the log file generated during the 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.These files are attached to the test results. Si vous créez un bogue à partir de ces résultats de tests ou lorsque vous utilisez Test RunnerTest Runner, les fichiers sont également joints au bogue.If you create a bug from these test results or when you use Test RunnerTest Runner, the files are also attached to the bug.

    Si vous voulez utiliser votre propre éditeur pour collecter des données à utiliser dans vos paramètres de test, consultez Guide pratique pour créer un éditeur personnalisé pour les données de votre adaptateur de données de diagnostic.If you want to use your own editor to collect data to use in your test settings, see How to: Create a Custom Editor for Data for Your Diagnostic Data Adapter.

  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.To collect a log file when a test finishes based on what the user configured in test settings, you must create an App.config file and add it to your solution. Ce fichier présente le format suivant et doit contenir l'URI de votre adaptateur de données de diagnostic pour l'identifier.This file has the following format and must contain the URI for your diagnostic data adapter to identify it. Remplacez « Société/NomProduit/Version » par les vraies valeurs.Substitute real values for the "Company/ProductName/Version".

    Note

    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.If you do not need to configure any information for your diagnostic data adapter, then you do not need to create a configuration file.

    <?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="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
        <DataCollector typeUri="datacollector://MyCompany/MyProduct/1.0">
          <DefaultConfiguration>
            <!-- Your default config settings -->
            <Binaries>
              <Binary FullPath="C:\Example\Example.dll"/>
              <Binary FullPath="\\Server2\Example2.dll"/>
            </Binaries>
            <Symbols>
              <Symbol FullPath="\\ExampleServer\ExampleSymbol.pdb"/>
            </Symbols>
          </DefaultConfiguration>
        </DataCollector>
      </DataCollectorConfiguration>
    </configuration>
    

    Note

    L'élément de configuration par défaut peut contenir les données dont vous avez besoin.The default configuration element can contain any data that you require. 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é.If the user does not configure the diagnostic data adapter in test settings, then the default data will be passed to your diagnostic data adapter when it is executed. 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.Because the XML you add to the <DefaultConfigurations> section is not likely to be part of the declared schema, you can ignore any XML errors it generates.

    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.There are other examples of configuration files in the following path based on your installation directory: 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 durant l’exécution de vos tests, consultez Collecter des données de diagnostic dans les tests manuels (VSTS).For more information about how to configure your test settings to use an environment when you run your tests, see Collect diagnostic data in manual tests (VSTS).

    Pour plus d’informations sur l’installation du fichier de configuration, consultez Guide pratique pour installer un adaptateur de données de diagnostic personnaliséFor more information about installing the configuration file, see How to: Install a Custom Diagnostic Data Adapter

  12. Générez votre solution pour créer votre assembly d'adaptateur de données de diagnostic.Build your solution to create your diagnostic data adapter assembly.

  13. Pour plus d’informations sur l’installation de votre éditeur personnalisé, consultez Guide pratique pour installer un adaptateur de données de diagnostic personnalisé.For information about installing your custom editor, see How to: Install a Custom Diagnostic Data Adapter.

  14. Pour plus d’informations sur la configuration de vos paramètres de test pour l’utilisation d’un environnement durant l’exécution de vos tests, consultez Collecter des données de diagnostic dans les tests manuels (VSTS).For more information about how to configure your test settings to use an environment when you run your tests, see Collect diagnostic data in manual tests (VSTS).

  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 Visual Studio.To select your diagnostic data adapter, you must first select an existing test settings or create a new one from Microsoft Test Manager or Visual Studio. 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.The adapter is displayed on the Data and Diagnostics tab of your test settings with the friendly name that you assigned to the class.

  16. Définissez ces paramètres de test comme actifs.Set these test settings to be active. Pour plus d’informations sur les paramètres de test, consultez Collecter des informations de diagnostic à l’aide des paramètres de test.For more information about test settings, see Collect Diagnostic Information Using Test Settings.

  17. Exécutez vos tests à l'aide des paramètres de test, en sélectionnant votre adaptateur de données de diagnostic.Run your tests using the test settings with your diagnostic data adapter selected.

    Le fichier de données que vous avez spécifié est joint à vos résultats de tests.The data file that you specified is attached to your test results.

Voir aussiSee also