Udostępnij za pośrednictwem


Porady: tworzenie adaptera danych diagnostycznych

Aby utworzyć kartę danych diagnostycznych, utwórz bibliotekę klas przy użyciu Visual Studio, a następnie dodaj interfejs API kart danych diagnostycznych zapewniany przez Visual Studio Premium do biblioteki klas.Wyślij wszelkie informacje, które chcesz, jako strumień lub plik do DataCollectionSink dostarczanego przez szablon, podczas obsługi zdarzeń zachodzących podczas trwania testu.Strumienie lub pliki wysłane do DataCollectionSink są przechowywane jako załączniki do wyników testów po ich zakończeniu.Jeśli tworzysz usterkę z tych wyników testów lub jeśli używasz narzędzia Test Runner, pliki są również łączone z usterką.

Można utworzyć kartę danych diagnostycznych, która wpływa na maszynę, na której przeprowadzane są testy, lub maszynę, która jest częścią środowiska używanego do uruchamiania aplikacji poddawanych testom.Na przykład zbieranie plików na maszynie testowej, gdzie są wykonywane testy, lub zbieranie plików na komputerze pełniącym rolę serwera sieci Web dla aplikacji.

Możesz nadać karcie danych diagnostycznych przyjazną nazwę, która jest wyświetlana podczas tworzenia ustawień test przy użyciu Test Manager lub za pomocą Visual Studio.Ustawienia testu umożliwiają definiowanie, która rola komputera uruchomi określone karty danych diagnostycznych w środowisku, podczas przeprowadzania testów.Możesz również skonfigurować karty danych diagnostycznych podczas tworzenia ustawień testu.Na przykład można utworzyć adapter danych diagnostycznych, który zbiera niestandardowe dzienniki z serwera sieci Web.Podczas tworzenia ustawień testu, możesz wybrać uruchomienie tej karty danych diagnostycznych na maszynie lub maszynach, które wykonują tę rolę serwera sieci Web i możesz zmodyfikować konfigurację dla ustawień testu do zbierania tylko ostatnich trzech dzienników, które zostały utworzone.Aby uzyskać więcej informacji na temat ustawień testowych, zobacz Konfigurowanie maszyn i zbieranie informacji diagnostycznych za pomocą ustawień testowych.

Zdarzenia są wywoływane po uruchomieniu testów, tak adapter danych diagnostycznych mógł wykonywać zadania w tym punkcie w teście.

Ważna uwagaWażne

Zdarzenia te mogą zostać zainicjowane w różnych wątkach, zwłaszcza jeśli testy są przeprowadzane na wielu komputerach.W związku z tym musisz zdawać sobie sprawę z możliwych problemów z wątkami aby przypadkowo nie uszkodzić danych wewnętrznych karty niestandardowej.Upewnij się, że adapter danych diagnostycznych jest bezpieczny dla wątków.

Oto częściowa lista kluczowych zdarzeń, których można używać podczas tworzenia karty danych diagnostycznych.Aby uzyskać pełną listę zdarzeń adaptera danych diagnostycznych, zobacz omówienie abstrakcyjnej klasy DataCollectionEvents.

Zdarzenie

Opis

SessionStart

Rozpoczęcie cyklu testów

SessionEnd

Zakończenie cyklu testów

TestCaseStart

Rozpoczęcie każdego testu w cyklu testów

TestCaseEnd

Zakończenie każdego testu w cyklu testów

TestStepStart

Rozpoczęcie każdego etapu testu

TestStepEnd

Zakończenie każdego etapu testu

[!UWAGA]

Po zakończeniu testu ręcznego do karty danych diagnostycznych nie są już wysyłane zdarzenia kolekcji danych.Jeśli test jest przeprowadzany ponownie, otrzymuje nowy identyfikator przypadku testowego.Jeśli użytkownik resetuje test podczas testu (co powoduje zdarzenie TestCaseReset) lub zmieni wynik kroku testu, nie jest wysyłane zdarzenie zbierania danych do adaptera danych diagnostycznych, ale identyfikator przypadku testowego pozostaje bez zmian.Aby ustalić, czy został przypadek testowy został zresetowany, należy śledzić identyfikator przypadku testowego w karcie danych diagnostycznych.

Poniższa procedura umożliwia utworzenie karty danych diagnostycznych, która zbiera plik danych, który jest oparty o informacje, które można skonfigurować podczas tworzenia ustawień testu.

Aby uzyskać pełny przykład projektu adaptera danych diagnostycznych, w tym z edytorem konfiguracji niestandardowych, zobacz Przykładowy projekt do tworzenia adaptera danych diagnostycznych.

Tworzenie i instalowanie adaptera danych diagnostycznych

Aby utworzyć i zainstalować kartę danych diagnostycznych

  1. Utwórz nową bibliotekę klas.

    1. W menu Plik, wybierz Nowy, a następnie wskaż Nowy projekt.

    2. Z okna Typy projektu wybierz język, którego chcesz użyć.

    3. Z okna Zainstalowane szablony programu Visual Studio wybierz opcję Biblioteka klas.

    4. Wpisz nazwę dla karty danych diagnostycznych.

    5. Wybierz przycisk OK.

  2. Dodaj zestaw Microsoft.VisualStudio.QualityTools.ExecutionCommon.

    1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania i wybierz polecenie Dodaj odwołanie.

    2. Wybierz .NET i zlokalizuj Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll.

    3. Wybierz przycisk OK.

  3. Dodaj zestaw Microsoft.VisualStudio.QualityTools.Common.

    1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania i wybierz polecenie Dodaj odwołanie.

    2. Wybierz /.NET i zlokalizuj Microsoft.VisualStudio.QualityTools.Common.dll.

    3. Wybierz przycisk OK.

  4. Dodaj następujące instrukcje using do pliku klasy:

    using Microsoft.VisualStudio.TestTools.Common;
    using Microsoft.VisualStudio.TestTools.Execution;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System;
    
  5. Dodaj DataCollectorTypeUriAttribute do klasy dla adaptera danych diagnostycznych w celu zidentyfikowania go jako taki adapter, zastępując firmę, produkt i wersję odpowiednimi informacjami dla adaptera danych diagnostycznych:

    [DataCollectorTypeUri("datacollector://Company/Product/Version")]
    
  6. Dodaj atrybut DataCollectorFriendlyNameAttribute do klasy, zastępując odpowiednie informacje diagnostyczne adaptera danych diagnostycznych:

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

    Ta przyjazna nazwa jest wyświetlana w działaniu dotyczącym ustawień testu.

    [!UWAGA]

    Możesz również dodać DataCollectorConfigurationEditorAttribute, aby określić Type edytora konfiguracji niestandardowej dla tej karty danych, i aby opcjonalnie określić plik pomocy dla edytora.

    Możesz również zastosować DataCollectorEnabledByDefaultAttribute, aby określić, że powinien być zawsze włączony.

  7. Klasa karty danych diagnostycznych musi dziedziczyć z klasy DataCollector w następujący sposób:

    public class MyDiagnosticDataAdapter : DataCollector
    
  8. Dodawanie zmiennych lokalnych w następujący sposób:

    private DataCollectionEvents dataEvents;
    private DataCollectionLogger dataLogger;
    private DataCollectionSink dataSink;
    private XmlElement configurationSettings;
    
  9. Dodaj metody Initialize i Dispose.W metodzie Initialize zainicjujesz ujście danych, wszelkie dane konfiguracyjne z ustawień testów i zarejestrujesz programy obsługi zdarzeń, których chcesz użyć, w następujący sposób:

    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. Użyj następujące kodu programu obsługi zdarzeń i metody prywatnej do zbierania pliku dziennika generowanego podczas testu:

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

    Te pliki są dołączone do wyników testów.Jeśli tworzysz usterkę z tych wyników testów lub jeśli używasz narzędzia Test Runner, pliki są również dołączone do usterki.

    Jeśli chcesz użyć własnego edytora do zbierania danych do wykorzystania w ustawieniach testów, zobacz Porady: tworzenie edytora niestandardowego dla danych dla Twojego adaptera danych diagnostycznych.

  11. Aby zebrać plik dziennika, gdy test zakończy prace w oparciu o to, jak użytkownik skonfigurował ustawienia testu, musisz utworzyć plik App.config i dodać go do rozwiązania.Ten plik ma następujący format i musi zawierać identyfikator URI niezbędny dla identyfikacji karty danych diagnostycznych.Podstaw rzeczywiste wartości "Firma/Nazwa produktu/Wersja".

    [!UWAGA]

    Jeśli nie ma potrzeby konfigurowania żadnych informacji dla adaptera danych diagnostycznych, nie trzeba utworzyć pliku konfiguracji.

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

    [!UWAGA]

    Element konfiguracji domyślnej może zawierać dowolne wymagane dane.Jeśli użytkownik nie skonfiguruje adaptera danych diagnostycznych w ustawieniach testu, domyślne dane zostaną przekazane do adaptera danych diagnostycznych, gdy jest wykonywany.Ponieważ kod XML dodany do sekcji <DefaultConfigurations> nie może być częścią zadeklarowanego schematu, można zignorować wszelkie błędy XML, jakie generuje.

    Inne przykłady plików konfiguracyjnych znaleźć można w następującej ścieżce bazującej na katalogu instalacji: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors.

    Aby uzyskać więcej informacji na temat konfigurowania ustawień testów w celu używania środowiska podczas wykonywania testów, zobacz Zbieranie większej ilości danych diagnostycznych podczas wykonywania testów ręcznych lub Tworzenie ustawień automatycznych testów systemowych przy użyciu programu Microsoft Test Manager.

    Aby uzyskać więcej informacji dotyczących instalowania plików konfiguracji, zobacz Porady: instalowanie niestandardowego adaptera danych diagnostycznych.

  12. Skompiluj rozwiązanie do utworzenia zestawu adaptera danych diagnostycznych.

  13. Aby uzyskać informacje o instalowaniu niestandardowego edytora, zobacz Porady: instalowanie niestandardowego adaptera danych diagnostycznych.

  14. Aby uzyskać więcej informacji na temat konfigurowania ustawień testów w celu używania środowiska podczas wykonywania testów, zobacz Zbieranie większej ilości danych diagnostycznych podczas wykonywania testów ręcznych lub Tworzenie ustawień automatycznych testów systemowych przy użyciu programu Microsoft Test Manager.

  15. Aby zaznaczyć kartę danych diagnostycznych, musisz najpierw wybrać istniejące ustawienia testu lub utworzyć nowy z Microsoft Test Manager lub Visual Studio.Adapter jest wyświetlany na karcie Dane i Diagnostyka w ustawieniach testowych pod przyjazną nazwą, którą przypisałeś do klasy.

  16. W przypadku uruchamiania testów z programu Microsoft Test Manager można przypisać te ustawienia testów do planu testów przed uruchomieniem testów lub użyć polecenia Uruchom z opcjami w celu przypisywania ustawień testów i zastępowania ustawień testów.Aby uzyskać więcej informacji na temat ustawień testowych, zobacz Konfigurowanie maszyn i zbieranie informacji diagnostycznych za pomocą ustawień testowych.

    Jeśli uruchamiasz testy z programu Visual Studio, musisz ustawić te ustawienia testów, aby były aktywne.Aby uzyskać więcej informacji na temat ustawień testowych, zobacz Wprowadzanie ustawień testów w programie Visual Studio.

  17. Uruchom testy przy użyciu ustawień testowych z wybraną kartą danych diagnostycznych.

    Plik danych, który określiłeś, jest dołączany do wyników testu.

Zobacz też

Zadania

Tworzenie ustawień automatycznych testów systemowych przy użyciu programu Microsoft Test Manager

Informacje

DataCollectorConfigurationEditorAttribute

DataCollectionEvents

DataCollector

DataCollectionSink

DataCollectorTypeUriAttribute

DataCollectorFriendlyNameAttribute

DataCollectorEnabledByDefaultAttribute

Koncepcje

Konfigurowanie maszyn i zbieranie informacji diagnostycznych za pomocą ustawień testowych

Porady: tworzenie edytora niestandardowego dla danych dla Twojego adaptera danych diagnostycznych

Inne zasoby

Wprowadzanie ustawień testów w programie Visual Studio

Zbieranie większej ilości danych diagnostycznych podczas wykonywania testów ręcznych