Sdílet prostřednictvím


Jak: vytvoření zapisovačem modul Plug-In

WebTestRecorderPlugin Umožňuje upravit zaznamenané test výkonnosti webu.Při úpravě dojde poté, co zvolíte zastavení výkonu webové testování nástrojů záznam, ale před test probíhá uloženy a v editoru testovat výkon webových.

Primární problém modulu plug-in zapisovačem pomůže vyřešit provádí vlastní vlastní korelace dynamické parametry.Funkce vestavěné srovnávací testy výkonu webové rozpoznat dynamické parametry v nahrávání Web složili nebo při použití Podporu dynamických parametrů parametry webové na panelu nástrojů editoru testů výkonu webu.Další informace naleznete v tématu Jak: problémy Web výkonu Test přehrávání způsobené dynamické parametry.Avšak integrovanému rozpoznání funkce není vždy najít všechny dynamické parametry.Nenajde například ID relace, které obvykle získá jeho hodnota změněna mezi 5 až 30 minut.Proto budete muset ručně provést proces korelace.Další informace naleznete v tématu Jak: podporovat dynamické parametry webové parametry testu výkonu.

WebTestRecorderPlugin Vám umožňuje napsat kód pro vlastní modul plug-in vlastní.Tento modul plug-in můžete provádět srovnávací nebo upravovat Web test výkonnosti v mnohém ještě před právě uloženy a v editoru testovat výkon webových.Pokud zjistíte, že má konkrétní Dynamická proměnná má být pro mnoho nahrávek, proto můžete automatizovat proces.

Je několik způsobů, jak lze zapisovací modul plug-in pro přidávání extrakce a ověřovacích pravidel, přidáte parametr kontextu nebo převod komentáře transakcí ve výkonu webových testování.

Následující postupy popisují, jak vytvořit základní kód zapisovačem modul plug-in, instalovat modul plug-in a spustit modul plug-in.Ukázkový kód postupy ukazuje, jak pomocí jazyka Visual C# vytvořit záznam korelace vlastní dynamický parametr modul plug-in.

Požadavky

  • Visual Studio Ultimate

Vytváření zapisovačem modulu Plug-in

Chcete-li vytvořit modul plug-in zapisovačem

  1. Otevřete řešení, které obsahuje Web výkon a zatížení zkušebního projektu s test výkonnosti Web, pro který chcete vytvořit modul plug-in zapisovačem.

  2. V okně Průzkumník řešení klikněte pravým tlačítkem myši řešení, vyberte Přidata pak zvolte Nový projekt.

    Zobrazí se dialogové okno Přidat nový projekt.

  3. Podle Nainstalované šablony, vyberte Visual C#.

  4. V seznamu šablon vyberte Knihovny tříd.

  5. V jméno textové pole, zadejte název modulu plug-in nahrávání.

    Knihovna tříd je přidán do okna Průzkumník řešení a nové třídy se otevře v editoru kódu.

  6. V okně Průzkumník řešení v nové třídy knihovny projektu složky, klepněte pravým tlačítkem myši odkazy složku a vyberte Přidat odkaz na.

    Tip

    Je například novou složku projektu knihovny tříd RecorderPlugins.

    Zobrazí se dialogové okno Přidat odkaz.

  7. Vyberte .NET kartu.

  8. Přejděte dolů a vyberte Microsoft.VisualStudio.QualityTools.WebTestFramework a pak zvolte OK.

    Microsoft.VisualStudio.QualityTools.WebTestFramework je přidán do odkazy složku v Průzkumníku řešení.

  9. Napište kód pro vaše zapisovací modul plug-in.Nejprve vytvořte novou veřejnou třídu, která je odvozena z WebTestRecorderPlugin.

  10. Přepsat PostWebTestRecording metoda.

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

    Argumenty události vám nabídne dva objekty pro práci s: nahrané výsledek a nahrané test výkonnosti webu.To vám umožní iterovat výsledek zobrazenu pro určité hodnoty a pak skok na stejný požadavek test výkonnosti webu k provádění změn.Test výkonnosti webu můžete změnit také pouze pokud jste chtěli přidat parametr kontextu nebo parametrizovat části adresy URL.

    [!POZNÁMKA]

    Pokud upravíte test výkonnosti webu, je třeba nastavit RecordedWebTestModified vlastnost na hodnotu true:e.RecordedWebTestModified = true;

  11. Přidáte další kód podle požadované záznamník maker plug-in spustit po dokončení nahrávání Web.Například můžete přidat kód pro zpracování vlastních korelace, jak je znázorněno v následující ukázce.Můžete také vytvořit obrazec na zapisovač modul plug-in pro takové věci převodem komentáře k transakcím nebo přidáním ověřovací pravidla pro výkon webového testování.

  12. Na sestavení nabídce zvolte sestavení < název projektu knihovny tříd >.

  13. Dále je nutné zavést modul plug-in v pořadí, aby registrovalo záznam Visual Studio Ultimate.

Ff400224.collapse_all(cs-cz,VS.110).gifInstalovat modul Plug-in nahrávání

Po kompilaci modulů plug-in programu záznam budete muset umístěte výsledné DLL na dvou místech:

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

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

Poznámka k upozorněníUpozornění

Po zkopírování plug-in nahrávání na dvou místech je nutné restartovat Visual Studio Ultimate pro nahrávání, chcete-li zaregistrovat modul plug-in.

Ff400224.collapse_all(cs-cz,VS.110).gifSpuštění modulu Plug-in nahrávání

Vytvoříte-li nový test výkonnosti webu, zobrazí se Povolení WebTestRecordPlugins dialogové okno.Povolení WebTestRecordPlugins dialogové okno se zobrazí všechny dostupné moduly plug-in, které mohou být provedeny.

Chcete-li spustit modul plug-in programu záznam

  1. Vytvořte nový test výkonnosti webu.Další informace naleznete v tématu Jak: vytvoření nové Test výkonu webu pomocí záznam Test výkonu webového.

    Povolení WebTestRecordPlugins zobrazí dialogové okno.

  2. Zaškrtněte políčko pro modul plug-in záznam a klepněte na tlačítko OK.

    Po dokončení nahrávání test výkonnosti webu budou provedeny nové zapisovací modul plug-in.

    Poznámka k upozorněníUpozornění

    Pravděpodobně obdržíte chybě podobná následující při spuštění testu výkonnosti webu nebo zkušební zatížení, který používá modul 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.

    To je způsobeno, je-li změnit kód některé moduly plug-in a vytvořit novou verzi knihovny DLL (Version=0.0.0.0), ale modul plug-in je stále odkazuje původní verze modulu plug-in.Chcete-li tento problém vyřešit, postupujte takto:

    1. Ve webové výkon a zatížení zkušebního projektu je zobrazeno upozornění v odkazech.Odebrat a znovu přidat odkaz na knihovnu DLL modulu plug-in.

    2. Odebrat modul plug-in z vašeho testu nebo vhodné umístění a přidejte ji.

Příklad

Tento příklad znázorňuje, jak vytvořit vlastní záznam test výkonu webového modulu plug-in k provedení vlastního parametru dynamické korelace.

[!POZNÁMKA]

Úplný seznam ukázkový kód je umístěn v dolní části tohoto tématu.

Revize ukázkový kód

Iterovat výsledek hledání první stránky s ReportSession

Tato část ukázkového kódu prochází každý zaznamenaný objekt a hledá tělo odpovědi 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)
                        {

Přidání pravidla extrakce

Nyní, že odpověď byla nalezena, je třeba přidat pravidlo extrakce.Tato část ukázkového kódu vytvoří pravidlo extrakce pomocí ExtractionRuleReference třídy a potom vyhledá správné požadavek v test výkonnosti webu přidat pravidlo extrakce.Každý objekt výsledek má novou vlastnost přidánu nazývá DeclarativeWebTestItemId, což je, co je používán v kódu získat správné požadavek z test výkonnosti webu.

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

Nahrazení parametrů řetězce dotazu

Nyní kód najde všechny dotazu řetězec parametrů, které jste ReportSession jako název a změnit hodnotu {{Id_relace}}, jak je uvedeno v této části ukázka kódu:

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

Viz také

Úkoly

Jak: vytvoření Test výkonu kódované webové

Jak: upravit existující Test výkonu Web pomocí editoru webových Test výkonu

Referenční dokumentace

WebTestRequestPlugin

PostWebTestRecording

ExtractionRuleReference

PostWebTestRecording

Další zdroje

Vytvoření a použití vlastní moduly plug-in pro zatížení a webové testy výkonu