Кодирование пользовательского правила извлечения для веб-теста производительности
Можно создавать собственные правила извлечения. Для этого пользовательские правила необходимо наследовать от класса правил извлечения. Правила извлечения являются производными от базового класса ExtractionRule.
В Visual Studio Ultimate предусмотрено несколько предварительно определенных правил извлечения. Дополнительные сведения см. в разделе [удалено] Использование правил проверки и извлечения в веб-тестах производительности.
Примечание
Можно также создавать собственные правила проверки.Дополнительные сведения см. в разделе Создание пользовательского кода и подключаемых модулей для нагрузочных тестов.
Требования
- Visual Studio Ultimate
Создание пользовательского правила извлечения
Откройте тестовый проект, содержащий веб-тест производительности.
(Необязательно) Создайте отдельный проект библиотеки классов, в котором будет храниться созданное правило извлечения.
Важно!
Требуемый класс можно создать в том же проекте, в котором находятся тесты.Однако если предполагается повторно использовать правило, то лучше создать для хранения этого правила отдельный проект библиотеки классов.При создании отдельного проекта необходимо выполнить дополнительные действия, описанные в данной процедуре.
(Необязательно) В проекте библиотеки классов добавьте ссылку на DDL-библиотеку Microsoft.VisualStudio.QualityTools.WebTestFramework.
Создайте класс, производный от класса ExtractionRule. Реализуйте члены Extract и RuleName.
(Необязательно) Выполните построение нового проекта библиотеки классов.
(Необязательно) В тестовом проекте добавьте ссылку на проект библиотеки классов, содержащий пользовательское правило извлечения.
В тестовом проекте откройте веб-тест производительности в редакторе веб-тестов производительности.
Чтобы добавить пользовательское правило извлечения, щелкните правой кнопкой мыши запрос веб-теста производительности и выберите команду Добавить правило извлечения.
Откроется диалоговое окно Добавление правила извлечения. Пользовательское правило проверки появится в списке Выбрать правило вместе с предопределенными правилами проверки. Выберите пользовательское правило извлечения и нажмите кнопку ОК.
Выполните веб-тест производительности.
Пример
В следующем коде показана реализация пользовательского правила извлечения. Это правило извлекает значение из указанного поля ввода. Данный пример можно использовать в качестве отправной точки для создания собственного правила извлечения.
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
Метод Extract содержит основные функции правила извлечения. Метод Extract из предыдущего примера принимает аргумент ExtractionEventArgs, который предоставляет ответ, созданный запросом, содержащимся в данном правиле извлечения. Ответ содержит объект HtmlDocument, в котором находятся все теги ответа. В объекте HtmlDocumentотфильтровываются теги "input". Каждый тег "input" проверяется на наличие атрибута name, значение которого равно значению свойства Имя, предоставленному пользователем. После обнаружения тега с соответствующим атрибутом выполняется попытка извлечь значение, содержащееся в атрибут value, если атрибут "value" существует. Если он существует, значения атрибутов "name" и "value" данного тега извлекаются и добавляются в контекст веб-теста производительности. Правило извлечения завершается успехом.
См. также
Задачи
[удалено] Практическое руководство. Добавление правила извлечения к веб-тесту производительности
Кодирование пользовательского правила проверки для веб-теста производительности
Ссылки
Microsoft.VisualStudio.TestTools.WebTesting.Rules
Основные понятия
[удалено] Использование правил проверки и извлечения в веб-тестах производительности
Другие ресурсы
[удалено] Добавление правил проверки и извлечения в веб-тест производительности