Compartir a través de


Cómo: Crear un adaptador de datos de diagnóstico

Para crear un adaptador de datos de diagnóstico, debe crear una biblioteca de clases con Visual Studio y, a continuación, agregar a la biblioteca de clases las APIs del adaptador de datos de diagnóstico proporcionadas por Visual Studio Premium.Al administrar los eventos que se generan durante la ejecución de pruebas, envíe la información que desee como una secuencia o archivo al objeto DataCollectionSink proporcionado por el marco.Las secuencias o los archivos enviados a DataCollectionSink se almacenan como datos adjuntos a los resultados de pruebas cuando una prueba finaliza.Si crea un error a partir de estos resultados de pruebas o al utilizar el Ejecutor de pruebas, los archivos también se vinculan al error.

Puede crear un adaptador de datos de diagnóstico que afecte a la máquina donde se ejecutan las pruebas, o a una máquina que forme parte del entorno que esté usando para ejecutar la aplicación que se prueba.Por ejemplo, puede recopilar archivos en la máquina de pruebas donde estas se ejecutan, o puede recopilar archivos en la máquina que desempeña el rol de servidor web para la aplicación.

Puede asignar al adaptador de datos de diagnóstico un nombre descriptivo que se mostrará cuando cree la configuración de pruebas mediante Test Manager o Visual Studio.La configuración de pruebas permite definir qué rol de máquina ejecutará adaptadores de datos de diagnóstico concretos en el entorno.También puede configurar sus adaptadores de datos de diagnóstico al crear la configuración de pruebas.Por ejemplo, puede crear un adaptador de datos de diagnóstico que recopile los registros personalizados del servidor web.Al crear la configuración de pruebas, puede seleccionar que se ejecute este adaptador de datos de diagnóstico en la máquina o máquinas que están realizando este rol de servidor web y puede modificar la configuración de pruebas para que solo se recopilen los tres últimos registros que se crearon.Para obtener más información sobre la configuración de pruebas, vea Configurar máquinas y recopilar información de diagnóstico con la configuración de pruebas.

Cuando ejecuta las pruebas, se generan eventos de modo que el adaptador de datos de diagnóstico pueda realizar tareas en ese punto de la prueba.

Nota importanteImportante

Estos eventos se pueden generar en subprocesos diferentes, sobre todo si las pruebas se ejecutan en varias máquinas.Por tanto, debe tener en cuenta los posibles problemas de subprocesamiento y debe tener cuidado de no dañar inadvertidamente los datos internos del adaptador personalizado.Asegúrese de que su adaptador de datos de diagnóstico es seguro para subprocesos.

A continuación se muestra una lista parcial de eventos clave que puede usar al crear el adaptador de datos de diagnóstico.Para obtener una lista completa de los eventos del adaptador de datos de diagnóstico, vea la clase abstracta DataCollectionEvents.

Evento

Descripción

SessionStart

Inicio de la ejecución de pruebas

SessionEnd

Final de la ejecución de pruebas

TestCaseStart

Inicio de cada prueba en la ejecución de pruebas

TestCaseEnd

Final de cada prueba en la ejecución de pruebas

TestStepStart

Inicio de cada paso de prueba en una prueba

TestStepEnd

Final de cada paso de prueba en una prueba

[!NOTA]

Cuando se completa una prueba manual, no se envían más eventos de recolección de datos al adaptador de datos de diagnóstico.Cuando se ejecute de nuevo una prueba, tendrá un nuevo identificador de caso de prueba.Si un usuario restablece una prueba durante un proceso de prueba (que genera el evento TestCaseReset ) o cambia un resultado del paso de pruebas, no se envía ningún evento de recolección de datos al adaptador de datos de diagnóstico, pero el identificador de caso de prueba sigue siendo el mismo.Para determinar si una caso de prueba se ha restablecido, debe hacer un seguimiento del identificador de caso de prueba del adaptador de datos de diagnóstico.

Utilice el siguiente procedimiento para crear un adaptador de datos de diagnóstico que recopile un archivo de datos basado en la información que se configura al crear la configuración de pruebas.

Para obtener un ejemplo completo de proyecto de adaptador de datos de diagnóstico, que incluye un editor de configuración personalizado, vea Proyecto de ejemplo para crear un adaptador de datos de diagnóstico.

Crear e instalar un adaptador de datos de diagnóstico

Par crear e instalar un adaptador de datos de diagnóstico

  1. Cree una nueva biblioteca de clases.

    1. En el menú Archivo, seleccione Agregar y luego elija Nuevo proyecto.

    2. En Tipos de proyecto, seleccione el idioma que desea utilizar.

    3. En Plantillas instaladas de Visual Studio, seleccione Biblioteca de clases.

    4. Escriba un nombre para el adaptador de datos de diagnóstico.

    5. Elija Aceptar.

  2. Agregue el ensamblado Microsoft.VisualStudio.QualityTools.ExecutionCommon.

    1. En el Explorador de soluciones, haga clic con el botón secundario en Referencias y elija el comando Agregar referencia.

    2. Seleccione .NET y busque Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Elija Aceptar.

  3. Agregue el ensamblado Microsoft.VisualStudio.QualityTools.Common.

    1. En el Explorador de soluciones, haga clic con el botón secundario en Referencias y seleccione el comando Agregar referencia.

    2. Elija /.NET, busque Microsoft.VisualStudio.QualityTools.Common.dll.

    3. Elija Aceptar.

  4. Agregue las instrucciones using siguientes al archivo de clase:

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Agregue DataCollectorTypeUriAttribute a la clase para que el adaptador de datos de diagnóstico lo identifique como un adaptador de datos de diagnóstico, y reemplace Compañía, Producto y Versión por la información apropiada para el adaptador de datos de diagnóstico:

    [DataCollectorTypeUri("datacollector://Company/Product/Version")]
    
  6. Agregue el atributo DataCollectorFriendlyNameAttribute a la clase, reemplazando los parámetros por la información apropiada para el adaptador de datos de diagnóstico:

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

    Este nombre descriptivo se muestra en la actividad de configuración de pruebas.

    [!NOTA]

    También puede agregar DataCollectorConfigurationEditorAttribute para especificar el Type de su editor de configuración personalizado para este adaptador de datos y para especificar opcionalmente el archivo de ayuda que se va a usar para el editor.

    También puede aplicar DataCollectorEnabledByDefaultAttribute para especificar que siempre debe estar habilitado.

  7. La clase del adaptador de datos de diagnóstico debe heredar de la clase DataCollector del siguiente modo:

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Agregue las variables locales como se indica a continuación:

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Agregue el método Initialize y un método Dispose.En el método Initialize, puede inicializar el receptor de datos, los datos de la configuración de pruebas y registrar los controladores de eventos que desee usar del siguiente modo:

    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. Use el código de controlador de eventos y el método privado siguientes para recopilar el archivo de registro generado durante la prueba:

    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;
    }
    

    Estos archivos se adjuntan a los resultados de pruebas.Si crea un error a partir de estos resultados de pruebas o al usar Ejecutor de pruebas, los archivos también se adjuntarán al error.

    Si desea usar su propio editor para recopilar datos que se van a usar en la configuración de pruebas, vea Cómo: Crear un editor personalizado para los datos del adaptador de datos de diagnóstico.

  11. Para recopilar un archivo de registro cuando finalice una prueba basándose en lo que el usuario configuró en la configuración de pruebas, debe crear un archivo App.config y agregarlo a la solución.Este archivo tiene el siguiente formato y debe contener el URI para que el adaptador de datos de diagnóstico lo identifique.Sustituya "Compañía/NombreDeProducto/Versión" por valores reales.

    [!NOTA]

    Si no necesita configurar ninguna información para el adaptador de datos de diagnóstico, no necesita crear ningún archivo de configuración.

    <?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> 
    

    [!NOTA]

    El elemento de configuración predeterminado puede contener cualquier dato que necesite.Si el usuario no configura el adaptador de datos de diagnóstico en la configuración de pruebas, los datos predeterminados se pasarán al adaptador de datos de diagnóstico cuando se ejecute.Puesto que no es probable que el código XML que agrega a la sección <DefaultConfigurations> forme parte del esquema declarado, puede omitir cualquier error de XML que genere.

    Hay otros ejemplos de archivos de configuración en la siguiente ruta de acceso basada en el directorio de instalación: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors.

    Para obtener más información sobre cómo establecer la configuración de pruebas para usar un entorno al ejecutar las pruebas, vea Especificar la configuración de prueba en Microsoft Test Manager o Crear la configuración para pruebas del sistema automatizadas mediante Microsoft Test Manager.

    Para obtener más información sobre cómo instalar el archivo de configuración, vea Cómo: Instalar un adaptador de datos de diagnóstico personalizado.

  12. Compile la solución para crear el ensamblado del adaptador de datos de diagnóstico.

  13. Para obtener información sobre cómo instalar el editor personalizado, vea Cómo: Instalar un adaptador de datos de diagnóstico personalizado.

  14. Para obtener más información sobre cómo establecer la configuración de pruebas para usar un entorno al ejecutar las pruebas, vea Especificar la configuración de prueba en Microsoft Test Manager o Crear la configuración para pruebas del sistema automatizadas mediante Microsoft Test Manager.

  15. Para seleccionar el adaptador de datos de diagnóstico, debe seleccionar primero una configuración de pruebas existente o crear una nueva desde Microsoft Test Manager o Visual Studio.El adaptador se muestra en la pestaña Datos y diagnósticos de su configuración de pruebas con el nombre descriptivo que asignó a la clase.

  16. Si está ejecutando las pruebas en Microsoft Test Manager, puede asignar estas configuraciones de pruebas a su plan de pruebas antes de ejecutar las pruebas o usar el comando Ejecutar con opciones para asignar e invalidar configuraciones de pruebas.Para obtener más información sobre la configuración de pruebas, vea Configurar máquinas y recopilar información de diagnóstico con la configuración de pruebas.

    Si ejecuta las pruebas desde Visual Studio, debe establecer que esta configuración de pruebas esté activa.Para obtener más información acerca de la configuración de pruebas, vea Especificar la configuración para las pruebas de Visual Studio.

  17. Ejecute las pruebas usando la configuración de pruebas y con el adaptador de datos de diagnóstico seleccionado.

    El archivo de datos que especificó se adjunta a los resultados de pruebas.

Vea también

Tareas

Crear la configuración para pruebas del sistema automatizadas mediante Microsoft Test Manager

Referencia

DataCollectorConfigurationEditorAttribute

DataCollectionEvents

DataCollector

DataCollectionSink

DataCollectorTypeUriAttribute

DataCollectorFriendlyNameAttribute

DataCollectorEnabledByDefaultAttribute

Conceptos

Configurar máquinas y recopilar información de diagnóstico con la configuración de pruebas

Cómo: Crear un editor personalizado para los datos del adaptador de datos de diagnóstico

Otros recursos

Especificar la configuración para las pruebas de Visual Studio

Especificar la configuración de prueba en Microsoft Test Manager