Kodowanie niestandardowej reguły wyodrębniania dla testów wydajności sieci Web
Można tworzyć własne reguły wyodrębniania.Aby to zrobić, należy utworzyć własne reguły, pochodne po klasie reguły wyodrębniania.Reguły wyodrębniania pochodzą od klasy podstawowej ExtractionRule.
Visual Studio Ultimate dostarcza niektóre wstępnie zdefiniowane reguły wyodrębniania.Aby uzyskać więcej informacji, zobacz [wycofane] Korzystanie z reguł walidacji i wyodrębniania podczas testów wydajności sieci Web.
[!UWAGA]
Można również tworzyć niestandardowe reguły poprawności.Aby uzyskać więcej informacji, zobacz Tworzenie niestandardowych kodów i wtyczek dla testów obciążeń.
Wymagania
- Visual Studio Ultimate
Aby utworzyć niestandardową regułę wyodrębniania
Otwórz Projekt testu, który zawiera test wydajności sieci Web.
(Opcjonalnie) Utwórz oddzielny projekt Biblioteki klas do przechowywania reguły wyodrębniania.
Ważne
Klasę można utworzyć w tym samym projekcie, w którym znajdują się testy.Jednakże, jeżeli chcesz ponownie użyć reguły, najlepiej utworzyć oddzielny projekt Biblioteki klas, w którym chcesz przechowywać swoją regułę.Po utworzeniu oddzielnego projektu, należy wykonać kroki opcjonalne w tej procedurze.
(Opcjonalnie) W projekcie Biblioteki klas dodaj odwołanie do biblioteki dll Microsoft.VisualStudio.QualityTools.WebTestFramework.
Utwórz klasę, która pochodzi od klasy ExtractionRule.Zaimplementuj elementy członkowskie Extract i RuleName.
(Opcjonalnie) Skompiluj nowy projekt Biblioteki klas.
(Opcjonalnie) W Projekcie testu dodaj odwołanie do projektu Biblioteki klas, który zawiera niestandardową regułę wyodrębniania.
W Projekcie testu otwórz test wydajności sieci Web w Edytorze testu wydajności sieci Web.
Aby dodać niestandardową regułę wyodrębniania, kliknij prawym przyciskiem myszy żądanie testu wydajności sieci Web i wybierz Dodaj regułę wyodrębniania.
Pojawi się okno dialogowe Dodaj regułę wyodrębniania.Widać niestandardową regułę poprawności na liście Wybierz regułę, wraz ze wstępnie zdefiniowanymi regułami poprawności.Wybierz niestandardową regułę wyodrębniania, a następnie wybierz OK.
Uruchom swój test wydajności sieci Web.
Przykład
Poniższy kod pokazuje implementacja niestandardowej reguły wyodrębniania.Ta reguła wyodrębniania wyodrębnia wartość określonego pola wejściowego.Należy użyć tego przykładu jako punktu wyjścia dla niestandardowych reguł wyodrębniania.
using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.WebTesting;
using System.Globalization;
namespace ClassLibrary2
{
//-------------------------------------------------------------------------
// This class creates a custom extraction rule named "Custom Extract Input"
// The user of the rule specifies the name of an input field, and the
// rule attempts to extract the value of that input field.
//-------------------------------------------------------------------------
public class CustomExtractInput : ExtractionRule
{
/// Specify a name for use in the user interface.
/// The user sees this name in the Add Extraction dialog box.
//---------------------------------------------------------------------
public override string RuleName
{
get { return "Custom Extract Input"; }
}
/// Specify a description for use in the user interface.
/// The user sees this description in the Add Extraction dialog box.
//---------------------------------------------------------------------
public override string RuleDescription
{
get { return "Extracts the value from a specified input field"; }
}
// The name of the desired input field
private string NameValue;
public string Name
{
get { return NameValue; }
set { NameValue = value; }
}
// The Extract method. The parameter e contains the web performance test context.
//---------------------------------------------------------------------
public override void Extract(object sender, ExtractionEventArgs e)
{
if (e.Response.HtmlDocument != null)
{
foreach (HtmlTag tag in e.Response.HtmlDocument.GetFilteredHtmlTags(new string[] { "input" }))
{
if (String.Equals(tag.GetAttributeValueAsString("name"), Name, StringComparison.InvariantCultureIgnoreCase))
{
string formFieldValue = tag.GetAttributeValueAsString("value");
if (formFieldValue == null)
{
formFieldValue = String.Empty;
}
// add the extracted value to the web performance test context
e.WebTest.Context.Add(this.ContextParameterName, formFieldValue);
e.Success = true;
return;
}
}
}
// If the extraction fails, set the error text that the user sees
e.Success = false;
e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}", Name);
}
}
}
Imports System
Imports System.Collections.Generic
Imports Microsoft.VisualStudio.TestTools.WebTesting
Imports System.Globalization
Namespace ClassLibrary2
'-------------------------------------------------------------------------
' This class creates a custom extraction rule named "Custom Extract Input"
' The user of the rule specifies the name of an input field, and the
' rule attempts to extract the value of that input field.
'-------------------------------------------------------------------------
Public Class CustomExtractInput
Inherits ExtractionRule
' Specify a name for use in the user interface.
' The user sees this name in the Add Extraction dialog box.
'---------------------------------------------------------------------
Public Overrides ReadOnly Property RuleName() As String
Get
Return "Custom Extract Input"
End Get
End Property
' Specify a description for use in the user interface.
' The user sees this description in the Add Extraction dialog box.
'---------------------------------------------------------------------
Public Overrides ReadOnly Property RuleDescription() As String
Get
Return "Extracts the value from a specified input field"
End Get
End Property
' The name of the desired input field
Private NameValue As String
Public Property Name() As String
Get
Return NameValue
End Get
Set(ByVal value As String)
NameValue = value
End Set
End Property
' The Extract method. The parameter e contains the web performance test context.
'---------------------------------------------------------------------
Public Overrides Sub Extract(ByVal sender As Object, ByVal e As ExtractionEventArgs)
If Not e.Response.HtmlDocument Is Nothing Then
For Each tag As HtmlTag In e.Response.HtmlDocument.GetFilteredHtmlTags(New String() {"input"})
If String.Equals(tag.GetAttributeValueAsString("name"), Name, StringComparison.InvariantCultureIgnoreCase) Then
Dim formFieldValue As String = tag.GetAttributeValueAsString("value")
If formFieldValue Is Nothing Then
formFieldValue = String.Empty
End If
' add the extracted value to the web performance test context
e.WebTest.Context.Add(Me.ContextParameterName, formFieldValue)
e.Success = True
Return
End If
Next
End If
' If the extraction fails, set the error text that the user sees
e.Success = False
e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}", Name)
End Sub
End Class
end namespace
Metoda Extract zawiera podstawowe funkcje reguły wyodrębniania.Metoda Extract w poprzednim przykładzie przyjmuje ExtractionEventArgs, który dostarcza odpowiedzi wygenerowanych przez żądanie, które obejmuje reguła wyodrębniania.Odpowiedź zawiera HtmlDocument zawierający wszystkie tagi w odpowiedzi.Tagi wejściowe są odfiltrowane z HtmlDocument.Każdy tag wejściowy jest sprawdzany pod kątem atrybutu o nazwie nazwa, którego wartość jest równa wartości dostarczonej przez użytkownika we właściwości Nazwa.Jeśli znaleziono znacznik, pasujący do tego atrybutu, podejmowana jest próba, aby wyodrębnić wartość, zawartą w atrybucie wartość jeśli istnieje atrybut wartość.Jeśli istnieje, nazwa i wartość tagu są wyodrębniane i dodawane do kontekstu testu wydajności sieci web.Reguła wyodrębniania zdaje test.
Zobacz też
Zadania
[wycofane] Porady: dodawanie reguły wyodrębniania do testów wydajności WWW
Kodowanie niestandardowej reguły walidacji dla testów wydajności sieci Web
Informacje
Microsoft.VisualStudio.TestTools.WebTesting.Rules
Koncepcje
[wycofane] Korzystanie z reguł walidacji i wyodrębniania podczas testów wydajności sieci Web
Inne zasoby
[wycofane] Wskazówki: dodawanie zasad walidacji i wyodrębniania do testu wydajności sieci Web