Como: Criar um adaptador de dados de diagnóstico

Para criar um o adaptador de dados de diagnóstico, você criar uma biblioteca de classe usando o Microsoft Visual Studio 2010, e em seguida, adicione as APIs de adaptador de dados de diagnóstico fornecidas pela Microsoft Visual Studio 2010 Premium em sua biblioteca de classe. Enviar qualquer informação que você deseja como um fluxo ou um arquivo para o DataCollectionSink fornecida pelo framework, ao manipular os eventos que são gerados durante a execução de teste. Os fluxos ou arquivos enviados para o DataCollectionSink são armazenados como anexos aos resultados do teste quando seu teste termine. Se você criar um bug esses resultados de testes ou quando você usa Test Runner, também, os arquivos são vinculados ao bug.

Você pode criar um adaptador de dados de diagnóstico que afeta a máquina onde seus testes são executados, ou uma máquina que é parte do ambiente em que você está usando para executar o aplicativo em teste. Por exemplo, coletando os arquivos em sua máquina de teste onde os testes são arquivos de execução ou coletar sobre o fornecimento de máquina na função de servidor Web para seu aplicativo.

Você pode dar a seu adaptador de dados de diagnóstico um nome amigável que exibe quando você cria suas configurações de teste usando Test Manager ou Microsoft Visual Studio 2010. Testar configurações permitem definir o papel do computador será executado adaptadores de dados de diagnóstico específico em seu ambiente, quando você executa os testes. Quando você cria suas configurações de teste, você também pode configurar seus adaptadores de dados de diagnóstico. Por exemplo, você pode criar um adaptador de dados de diagnóstico que coleta de logs personalizados do servidor Web. Quando você cria suas configurações de teste, você pode selecionar para executar este adaptador de dados de diagnóstico na máquina ou máquinas que estão executando essa função de servidor Web e você pode modificar as configurações para seu teste coletar apenas os três últimos logs que foram criados. Para obter mais informações sobre configurações de teste, consulte Configuração de máquinas e coletar informações de diagnóstico usando as configurações de teste.

Eventos são gerados quando você executa os testes para que o seu adaptador de dados de diagnóstico pode executar tarefas nesse ponto no teste.

Observação importanteImportante

Esses eventos podem ser gerados em threads diferentes, especialmente quando você tiver testes executando em várias máquinas. Portanto, você deve estar ciente dos possíveis problemas de threads e não inadvertidamente danificar os dados internos do adaptador personalizado. Verifique se o que seu adaptador de dados de diagnóstico é thread-safe.

A seguir é uma lista parcial dos principais eventos que você pode usar ao criar o seu adaptador de dados de diagnóstico. Para obter uma lista completa de eventos do adaptador de dados de diagnóstico, consulte o resumo DataCollectionEvents classe.

Evento

Descrição

SessionStart

Iniciar o execução de teste

SessionEnd

Final de seu teste

TestCaseStart

Início de cada teste na execução de teste

TestCaseEnd

Final de cada teste na execução de teste

TestStepStart

Início de cada etapa do teste em um teste

TestStepEnd

Final de cada etapa do teste em um teste

ObservaçãoObservação

Quando um teste manual for concluído, mais nenhum evento de coleta de dados é enviado para o adaptador de dados de diagnóstico. Quando um teste é executada novamente, ela terá um novo identificador de caso de teste. Se um usuário redefine um teste durante um teste (que gera a TestCaseReset evento), ou altera um teste etapa o resultado, nenhum evento de coleta de dados é enviado para o adaptador de dados de diagnóstico, mas o identificador do caso de teste permanece o mesmo. Para determinar se um caso de teste foi redefinido, você deve controlar o identificador do caso de teste no seu adaptador de dados de diagnóstico.

Use o procedimento a seguir para criar um adaptador de dados de diagnóstico que coleta um arquivo de dados com base nas informações que você configura quando você cria suas configurações de teste.

Para um projeto de adaptador de dados de diagnóstico de exemplo completo, incluindo um editor de configuração personalizada, consulte Projeto de amostra para a criação de um adaptador de dados de diagnóstico.

Criar e instalar um adaptador de dados de diagnóstico

Para criar e instalar um adaptador de dados de diagnóstico

  1. Crie uma nova biblioteca de classe.

    1. Sobre o arquivo menu, clique em novae aponte para Novo projeto.

    2. De tipos de projeto, selecione o idioma a ser usado.

    3. De modelos instalados do Visual Studio, selecione Biblioteca de classe.

    4. Digite um nome para o seu adaptador de dados de diagnóstico.

    5. Clique em OK.

  2. Adicione o assembly Microsoft.VisualStudio.QualityTools.ExecutionCommon.

    1. No Solution Explorer, clique com o botão direito referências e clique no Add Reference comando.

    2. Clique em .NET e localize Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Clique em OK.

  3. Adicione o assembly Microsoft.VisualStudio.QualityTools.Common.

    1. No Solution Explorer, clique com o botão direito referências e selecione o Add Reference comando.

    2. Clique em /.NET, locate Microsoft.VisualStudio.QualityTools.Common.dll.

    3. Clique em OK.

  4. Adicione o seguinte using instruções para seu arquivo de classe:

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Adicionar o DataCollectorTypeUriAttribute para a classe para seu adaptador de dados de diagnóstico para identificá-lo como um adaptador de dados de diagnóstico, substituindo empresa, produto, e versão com as informações apropriadas para seu adaptador de dados de diagnóstico:

    [DataCollectorTypeUri("datacollector://Company/Product/Version")]
    
  6. Adicionar o DataCollectorFriendlyNameAttribute atributo à classe, substituindo os parâmetros com as informações apropriadas para seu adaptador de dados de diagnóstico:

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

    Esse nome amigável é exibido na atividade de configurações de teste.

    ObservaçãoObservação

    Você também pode adicionar o DataCollectorConfigurationEditorAttribute para especificar o Type do seu editor de configuração personalizada para este adaptador de dados e, opcionalmente, especificar o arquivo de ajuda para usar o editor.

    Você também pode aplicar o DataCollectorEnabledByDefaultAttribute para especificar que ele deve estar sempre ativado.

  7. A classe do adaptador de dados de diagnóstico deve herdar a partir de DataCollector classe como a seguir:

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Adicione as variáveis locais da seguinte maneira:

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Adicionar o Initialize método e um Dispose método. No Initialize método, inicializar o coletor de dados, os dados de configuração de configurações de teste e registrar manipuladores de eventos que você deseja usam como a seguir:

    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 o seguinte código de manipulador de eventos e o método particular para coletar o arquivo de log gerado durante o teste:

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

    Esses arquivos são anexados aos resultados do teste. Se você criar um bug esses resultados de testes ou quando você usa Test Runner, os arquivos também são anexados ao bug.

    Se você quiser usar o seu próprio editor para coletar dados para usar em suas configurações de teste, consulte Como: Criar um Editor personalizado para dados para o seu adaptador de dados de diagnóstico.

  11. Para coletar um arquivo de log quando um teste for concluído com base em que o usuário configurado nas configurações de teste, você deve criar um App.config de arquivo e adicioná-la à sua solução. Esse arquivo tem o seguinte formato e deve conter o URI para o seu adaptador de dados de diagnóstico para identificá-lo. Substituir por valores reais a "empresa/ProductName/versão".

    ObservaçãoObservação

    Se você não precisará configurar todas as informações para o seu adaptador de dados de diagnóstico, você precisa criar um arquivo de configuração.

    <?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> 
    
    ObservaçãoObservação

    O elemento de configuração padrão pode conter quaisquer dados que você precisa. Se o usuário configurar o adaptador de dados de diagnóstico em configurações de teste, em seguida, os dados padrão serão passados ao seu adaptador de dados de diagnóstico quando ele é executado. Porque o XML adicionar o <DefaultConfigurations> seção não é provável que seja parte do esquema declarado, você pode ignorar qualquer erro XML que ele gera.

    Há outros exemplos de arquivos de configuração no seguinte caminho com base em seu diretório de instalação: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors.

    Para obter mais informações sobre como configurar as configurações de teste para usar um ambiente, quando você executa os testes, consulte Criar configurações de teste para testes manuais ou Criar configurações de teste para testes automatizados, como parte de um plano de teste.

    Para obter mais informações sobre como instalar o arquivo de configuração, consulteComo: Instalar um adaptador de dados de diagnóstico personalizado

  12. Desenvolve sua solução para criar o seu conjunto de adaptador de dados de diagnóstico.

  13. Para obter informações sobre como instalar o seu editor personalizado, consulte Como: Instalar um adaptador de dados de diagnóstico personalizado.

  14. Para obter mais informações sobre como configurar as configurações de teste para usar um ambiente, quando você executa os testes, consulte Criar configurações de teste para testes manuais ou Criar configurações de teste para testes automatizados, como parte de um plano de teste.

  15. Para selecionar o seu adaptador de dados de diagnóstico, você deve primeiro selecionar um teste as configurações existentes ou criar um novo do Microsoft Test Manager ou Microsoft Visual Studio 2010. O adaptador é exibido na dados e diagnósticos guia suas configurações de teste com o nome amigável que você atribuiu à classe.

  16. Se você estiver executando seus testes de Microsoft Test Manager, você pode atribuir esses testar configurações de seu plano de teste antes de executar os testes, ou usar o Executar com opções comando atribuir configurações de teste e substituir as configurações de teste. Para obter mais informações sobre configurações de teste, consulte Configuração de máquinas e coletar informações de diagnóstico usando as configurações de teste.

    Se você estiver executando seus testes de Microsoft Visual Studio 2010, você deve defini-los testar configurações de estar ativo. Para obter mais informações sobre configurações de teste, consulte Criar um teste automatizado de configurações para executar testes a partir de Visual Studio.

  17. Execute os testes usando as configurações de teste com o seu adaptador de dados de diagnóstico selecionado.

    O arquivo de dados que você especificou é anexado a resultados de testes.

Consulte também

Tarefas

Criar um teste automatizado de configurações para executar testes a partir de Visual Studio

Criar configurações de teste para testes automatizados, como parte de um plano de teste

Criar configurações de teste para testes manuais

Referência

DataCollectorConfigurationEditorAttribute

DataCollectionEvents

DataCollector

[T:Microsoft.VisualStudio.TestTools.Execution.DataCollectionSinkT:Microsoft.VisualStudio.TestTools.Execution.DataCollectorTypeUriAttribute]

DataCollectorFriendlyNameAttribute

DataCollectorEnabledByDefaultAttribute

Conceitos

Configuração de máquinas e coletar informações de diagnóstico usando as configurações de teste

Como: Criar um Editor personalizado para dados para o seu adaptador de dados de diagnóstico