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 utilizando Microsoft Visual Studio 2010 y, a continuación, agregar las API de adaptador de datos de diagnóstico proporcionadas por Microsoft Visual Studio 2010 Premium a la biblioteca de clases. 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 se cree la configuración de pruebas con Test Manager o Microsoft Visual Studio 2010. 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.
Importante |
---|
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 |
---|---|
Inicio de la ejecución de pruebas |
|
Final de la ejecución de pruebas |
|
Inicio de cada prueba en la ejecución de pruebas |
|
Final de cada prueba en la ejecución de pruebas |
|
Inicio de cada paso de prueba en una prueba |
|
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
Cree una nueva biblioteca de clases.
En el menú Archivo, haga clic en Nuevo y, después, elija Nuevo proyecto.
En Tipos de proyecto, seleccione el idioma que desea utilizar.
En Plantillas instaladas de Visual Studio, seleccione Biblioteca de clases.
Escriba un nombre para el adaptador de datos de diagnóstico.
Haga clic en Aceptar.
Agregue el ensamblado Microsoft.VisualStudio.QualityTools.ExecutionCommon.
En el Explorador de soluciones, haga clic con el botón secundario en Referencias y haga clic en el comando Agregar referencia.
Haga clic en .NET y busque Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.
Haga clic en Aceptar.
Agregue el ensamblado Microsoft.VisualStudio.QualityTools.Common.
En el Explorador de soluciones, haga clic con el botón secundario en Referencias y seleccione el comando Agregar referencia.
Haga clic en /.NET y busque Microsoft.VisualStudio.QualityTools.Common.dll.
Haga clic en Aceptar.
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;
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")]
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.
La clase del adaptador de datos de diagnóstico debe heredar de la clase DataCollector del siguiente modo:
public class MyDiagnosticDataAdapter : DataCollector
Agregue las variables locales como se indica a continuación:
private DataCollectionEvents dataEvents; private DataCollectionLogger dataLogger; private DataCollectionSink dataSink; private XmlElement configurationSettings;
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); } }
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 la prueba. Si crea un error a partir de estos resultados de prueba 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.
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/2010"> <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 Crear una configuración de pruebas para pruebas manuales o Crear una configuración de pruebas para pruebas automatizadas como parte de un plan de pruebas.
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.
Compile la solución para crear el ensamblado del adaptador de datos de diagnóstico.
Para obtener información sobre cómo instalar el editor personalizado, vea Cómo: Instalar un adaptador de datos de diagnóstico personalizado.
Para obtener más información sobre cómo establecer la configuración de pruebas para usar un entorno al ejecutar las pruebas, vea Crear una configuración de pruebas para pruebas manuales o Crear una configuración de pruebas para pruebas automatizadas como parte de un plan de pruebas.
Para seleccionar el adaptador de datos de diagnóstico, debe seleccionar primero una configuración de pruebas existentes o crear una nueva desde Microsoft Test Manager o Microsoft Visual Studio 2010. 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.
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 acerca de 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 Microsoft Visual Studio 2010, debe establecer que esta configuración de pruebas esté activa. Para obtener más información sobre la configuración de pruebas, vea Crear una configuración de pruebas para ejecutar pruebas automatizadas desde Visual Studio.
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
Referencia
DataCollectorConfigurationEditorAttribute
[T:Microsoft.VisualStudio.TestTools.Execution.DataCollectionSinkT:Microsoft.VisualStudio.TestTools.Execution.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
Crear una configuración de pruebas para ejecutar pruebas automatizadas desde Visual Studio
Crear una configuración de pruebas para pruebas automatizadas como parte de un plan de pruebas