Udostępnij za pośrednictwem


Jak: tworzenie rejestratora dodatek typu Plug-In

WebTestRecorderPlugin Umożliwia modyfikowanie nagranych testu wydajności sieci Web.Modyfikacja występuje po wybraniu zatrzymać w wydajności sieci Web badań Rejestrator pasek narzędzi, lecz przed testu zapisywane i przedstawiane w edytorze Test wydajności sieci Web.

Podstawowym zagadnieniem nagrywarkę dodatek typu plug-in pomaga rozwiązać wykonuje swój własny niestandardowy korelacji na parametry dynamiczne.Z funkcji wbudowanych korelacji testów wydajności sieci Web wykryć parametry dynamiczne w rejestracji w sieci Web po zakończeniu lub podczas pracy w Wspierania parametry dynamiczne do sieci Web, parametry testu na pasku narzędzi edytora testów wydajności sieci Web.Aby uzyskać więcej informacji, zobacz Jak: rozwiązać Web Test odtwarzania problemy z wydajnością spowodowane przez parametry dynamiczne.Jednakże wbudowanego w wykrywaniu funkcjonalności nie zawsze znajdzie wszystkie parametry dynamiczne.Na przykład nie znajdzie identyfikator sesji, które zwykle pobiera wartość zmian istniejących między 5 do 30 minut.W związku z tym należy ręcznie wykonać proces korelacji.Aby uzyskać więcej informacji, zobacz Jak: wspieranie dynamicznego parametry parametry testu wydajności sieci Web.

WebTestRecorderPlugin Pozwala pisać kod dla własnego niestandardowego dodatku typu plug-in.Ten dodatek typu plug-in można wykonywać korelacji lub zmodyfikować test wydajności sieci Web na wiele sposobów przed są zapisywane i przedstawiane w edytorze Test wydajności sieci Web.W związku z tym jeśli okaże się, że określonej zmiennej dynamicznej musi być skorelowane dla wielu nagrań, można zautomatyzować proces.

Inne sposoby, można się rejestrator dodatek typu plug-in jest dodawanie ekstrakcji i reguły sprawdzania poprawności, dodanie parametrów kontekstu lub testowania konwersji komentarze do transakcji na wydajność sieci Web.

W poniższych procedurach opisano sposób utworzyć kod szczątkowy nagrywarkę dodatku, wdrożyć dodatek typu plug-in i wykonać dodatku typu plug-in.Przykładowy kod, zgodnie z procedurami demonstruje, jak używać Visual C# do tworzenia Rejestrator korelacji dynamiczne parametru niestandardowego dodatku plug-in.

Wymagania

  • Visual Studio Ultimate

Tworzenie nagrywarkę dodatek typu Plug-in

Aby utworzyć nagrywarkę dodatku

  1. Otwórz rozwiązanie, które zawiera wydajność sieci Web i obciążenia projektu testowego z testu wydajności sieci Web, dla którego chcesz utworzyć nagrywarkę dodatku.

  2. W oknie Solution Explorer, kliknij prawym przyciskiem myszy roztwór, zaznacz Dodaj, a następnie wybierz polecenie Nowego projektu.

    Dodaj nowy projekt zostanie wyświetlone okno dialogowe.

  3. W obszarze Szablonów, wybierz Visual C#.

  4. Z listy szablonów wybierz Biblioteka klas.

  5. W Nazwa pole tekstowe, wpisz nazwę dla dodatku plug-in rejestratora.

    Biblioteka klas jest dodawany do Eksploratora rozwiązań i Nowa klasa jest otwarty w edytorze kodu.

  6. W oknie Solution Explorer, w nowym folderze projektu biblioteki klas, kliknij prawym przyciskiem myszy odwołania folder i wybierz Dodaj odwołanie.

    PoradaPorada

    Przykładem nowego folderu projektu biblioteki klas jest RecorderPlugins.

    Dodaj odwołanie zostanie wyświetlone okno dialogowe.

  7. Wybierz .NET kartę.

  8. Przewiń w dół i wybierz Microsoft.VisualStudio.QualityTools.WebTestFramework , a następnie wybierz OK.

    Microsoft.VisualStudio.QualityTools.WebTestFramework dodaje się w odwołania folder w oknie Solution Explorer.

  9. Pisanie kodu dla urządzenia rejestrującego dodatku plug-in.Najpierw należy utworzyć nową klasę publicznych, która wynika z WebTestRecorderPlugin.

  10. Zastąpić PostWebTestRecording metoda.

    public class Class1 : WebTestRecorderPlugin
        {
            public override void PostWebTestRecording(object sender, PostWebTestRecordingEventArgs e)
            {
                base.PostWebTestRecording(sender, e);
            }
        }
    

    Argumenty zdarzeń daje dwa obiekty, aby pracować z: wynik nagranych i nagranych test wydajności sieci Web.Pozwoli to do iteracji wyniku patrząc na niektóre wartości i następnie skok w tej samej sprawie testu wydajności sieci Web w celu modyfikowania.Test wydajności sieci Web można zmodyfikować też po prostu, jeśli chcesz dodać parametr kontekstu lub parameterize części adresu URL.

    [!UWAGA]

    Jeżeli zmodyfikujesz testu wydajności sieci Web będzie również trzeba ustawić RecordedWebTestModified właściwości na wartość true:e.RecordedWebTestModified = true;

  11. Dodaj więcej kodu według oczekiwań Rejestrator dodatek typu plug-in do wykonania po wystąpieniu rejestrowania w sieci Web.Na przykład można dodać kod do obsługi niestandardowego korelacji, jak pokazano w poniższym przykładzie.Można również utworzyć dodatku plug-in dla takich elementów, nagrywarkę, jak konwersja komentarze do transakcji lub dodawanie reguł sprawdzania poprawności na wydajność sieci Web należy przetestować.

  12. Na budować menu, wybierz polecenie Build < nazwa klasy biblioteki projektu >.

  13. Następnie należy wdrożyć dodatek typu plug-in, w celu użycia go zarejestrować za pomocą rejestratora Visual Studio Ultimate.

Ff400224.collapse_all(pl-pl,VS.110).gifWdrożyć za pomocą rejestratora dodatek typu Plug-in

Po skompilowaniu Rejestrator dodatek typu plug-in, trzeba będzie wynikowy DLL należy umieścić w jednym z dwóch miejsc:

  • %ProgramFiles%\Microsoft visual Studio 11.0\Common7\IDE\PrivateAssemblies\WebTestPlugins

  • %USERPROFILE%\My Documents\Visual Studio 2012\WebTestPlugins

Informacje dotyczące przestrogiPrzestroga

Po skopiowaniu Rejestrator dodatek typu plug-in do jednego z dwóch lokalizacji, należy ponownie uruchomić Visual Studio Ultimate do nagrywarki dodatek typu plug-in do rejestracji.

Ff400224.collapse_all(pl-pl,VS.110).gifWykonać za pomocą rejestratora dodatek typu Plug-in

Podczas tworzenia nowego testu wydajności sieci Web widać Włączyć WebTestRecordPlugins okno dialogowe.Włączyć WebTestRecordPlugins okno dialogowe wyświetla wszystkie dostępne dodatki, które mogą być wykonywane.

Aby wykonać za pomocą rejestratora dodatek typu plug-in

  1. Utwórz nowy test wydajności sieci Web.Aby uzyskać więcej informacji, zobacz Jak: Tworzenie nowego testu wydajności sieci Web przy użyciu rejestratora Test wydajności sieci Web.

    Włączyć WebTestRecordPlugins zostanie wyświetlone okno dialogowe.

  2. Zaznacz pole wyboru dla dodatku plug-in Rejestrator, a następnie kliknij przycisk OK.

    Po zakończeniu nagrywania testu wydajności sieci Web nowy dodatek typu plug-in zanotowany zostanie wykonana.

    Informacje dotyczące przestrogiPrzestroga

    Użytkownik może być komunikat o błędzie podobny do następującego po uruchomieniu testu wydajności sieci Web lub test obciążenia, który używa Twój dodatek typu plug-in:

    Request failed: Exception in <plug-in> event: Could not load file or assembly '<"Plug-in name".dll file>, Version=<n.n.n.n>, Culture=neutral, PublicKeyToken=null' or one of its dependencies.The system cannot find the file specified.

    Jest to spowodowane, jeżeli zmiany w kodzie do dowolnego typu plug-ins i tworzy nową wersję biblioteki DLL (Version=0.0.0.0), ale dodatek typu plug-in jest ciągle odnoszą się oryginalna wersja dodatku plug-in.Aby rozwiązać ten problem, wykonaj następujące kroki:

    1. W wydajności sieci Web i obciążenia badania projektu pojawia się ostrzeżenie w bibliografii.Usuń i ponownie dodać odwołanie do biblioteki DLL dodatku plug-in.

    2. Usuwanie dodatku typu plug-in z egzaminu lub odpowiedniej lokalizacji, a następnie dodane ponownie.

Przykład

W przykładzie pokazano sposób tworzenia dostosowanego Rejestrator test wydajności sieci Web dodatek typu plug-in do wykonywania dynamicznych parametru niestandardowego korelacji.

[!UWAGA]

Pełna lista przykładowy kod znajduje się w dolnej części tego tematu.

Recenzowanie przykładowy kod

Iteracyjne przeglądanie wyników odnaleźć pierwszej strony z ReportSession

Ta część przykładowy kod iterację każdego obiektu nagranych i wyszukuje treść odpowiedzi ReportSession.

           foreach (WebTestResultUnit unit in e.RecordedWebTestResult.Children)
            {
                WebTestResultPage page = unit as WebTestResultPage; 
                if (page != null)
                {
                    if (!foundId)
                    {
                        int indexOfReportSession = page.RequestResult.Response.BodyString.IndexOf("ReportSession");
                        if (indexOfReportSession > -1)
                        {

Dodawanie reguły ekstrakcji

Teraz, że odpowiedzi zostały znalezione, należy dodać regułę ekstrakcji.Ta część przykładowy kod tworzy reguły ekstrakcji przy użyciu ExtractionRuleReference klasy, a następnie znalezienie poprawne żądania w teście wydajności sieci Web, Dodawanie reguły ekstrakcji do.Każdy obiekt wynik ma nową właściwość dodawana o nazwie DeclarativeWebTestItemId, który jest wykorzystywany jest w kodzie Aby uzyskać poprawne żądania z testu wydajności sieci Web.

           ExtractionRuleReference ruleReference = new ExtractionRuleReference();
           ruleReference.Type = typeof(ExtractText);
           ruleReference.ContextParameterName = "SessionId";
           ruleReference.Properties.Add(new PluginOrRuleProperty("EndsWith", "&ControlID="));
           ruleReference.Properties.Add(new PluginOrRuleProperty("HtmlDecode", "True"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("IgnoreCase", "True"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("Index", "0"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("Required", "True"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("StartsWith", "ReportSession="));
           ruleReference.Properties.Add(new PluginOrRuleProperty("UseRegularExpression", "False"));

           WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
           if (requestInWebTest != null)
           {
               requestInWebTest.ExtractionRuleReferences.Add(ruleReference);
               e.RecordedWebTestModified = true;
           }

Zamień parametrów ciągu kwerendy

Kod wyszukuje obecnie wszystkie kwerendy parametry ciągu, które ReportSession, jak nazwa i zmień wartość na {{Identyfikator_sesji}}, jak pokazano w tej części przykładowy kod:

           WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
           if (requestInWebTest != null)
           {
               foreach (QueryStringParameter param in requestInWebTest.QueryStringParameters)
               {
                    if (param.Name.Equals("ReportSession"))
                    {
                        param.Value = "{{SessionId}}";
                    }
                }
            }
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;
using Microsoft.VisualStudio.TestTools.WebTesting.Rules;

namespace RecorderPlugin
{
    [DisplayName("Correlate ReportSession")]
    [Description("Adds extraction rule for Report Session and binds this to querystring parameters that use ReportSession")]
    public class CorrelateSessionId : WebTestRecorderPlugin
    {
        public override void PostWebTestRecording(object sender, PostWebTestRecordingEventArgs e)
        {
            //first find the session id
            bool foundId = false;
            foreach (WebTestResultUnit unit in e.RecordedWebTestResult.Children)
            {
                WebTestResultPage page = unit as WebTestResultPage;
                if (page != null)
                {
                    if (!foundId)
                    {
                        int indexOfReportSession = page.RequestResult.Response.BodyString.IndexOf("ReportSession");
                        if (indexOfReportSession > -1)
                        {
                            //add an extraction rule to this request
                            // Get the corresponding request in the Declarative Web performance test
                            ExtractionRuleReference ruleReference = new ExtractionRuleReference();

                            ruleReference.Type = typeof(ExtractText);
                            ruleReference.ContextParameterName = "SessionId";
                            ruleReference.Properties.Add(new PluginOrRuleProperty("EndsWith", "&ControlID="));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("HtmlDecode", "True"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("IgnoreCase", "True"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("Index", "0"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("Required", "True"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("StartsWith", "ReportSession="));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("UseRegularExpression", "False"));

                            WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
                            if (requestInWebTest != null)
                            {
                                requestInWebTest.ExtractionRuleReferences.Add(ruleReference);
                                e.RecordedWebTestModified = true;
                            }
                            foundId = true;

                        }
                    }
                    else
                    {
                        //now update query string parameters
                        WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
                        if (requestInWebTest != null)
                        {
                            foreach (QueryStringParameter param in requestInWebTest.QueryStringParameters)
                            {
                                if (param.Name.Equals("ReportSession"))
                                {
                                    param.Value = "{{SessionId}}";
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

Zobacz też

Zadania

Jak: tworzenie testu wydajności zakodowane w sieci Web

Jak: Edycja istniejących testu wydajności sieci Web za pomocą edytora Test wydajności sieci Web

Informacje

WebTestRequestPlugin

PostWebTestRecording

ExtractionRuleReference

PostWebTestRecording

Inne zasoby

Tworzenie i używanie niestandardowe dodatki typu plug-in dla obciążenia i testów wydajności sieci Web