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
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.
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.
Podle Nainstalované šablony, vyberte Visual C#.
V seznamu šablon vyberte Knihovny tříd.
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.
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.
Vyberte .NET kartu.
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í.
Napište kód pro vaše zapisovací modul plug-in.Nejprve vytvořte novou veřejnou třídu, která je odvozena z WebTestRecorderPlugin.
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;
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í.
Na sestavení nabídce zvolte sestavení < název projektu knihovny tříd >.
Dále je nutné zavést modul plug-in v pořadí, aby registrovalo záznam Visual Studio Ultimate.
Instalovat 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
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. |
Spuš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
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.
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.
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:
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.
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
Další zdroje
Vytvoření a použití vlastní moduly plug-in pro zatížení a webové testy výkonu