Compartir a través de


Cómo: Crear una regla de extracción personalizada para una prueba de rendimiento web

Este tema se aplica a:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

El tema es aplicable El tema no es aplicable El tema no es aplicable El tema no es aplicable

Puede crear sus propias reglas de extracción. Para ello, derive sus propias reglas de una clase de regla de extracción. Las reglas de extracción derivan de la clase base ExtractionRule.

Visual Studio Ultimate proporciona algunas reglas de extracción predefinidas. Para obtener más información, vea Usar las reglas de validación y extracción en las pruebas de rendimiento web.

Nota

También puede crear reglas de validación personalizadas. Para obtener más información, vea Crear y usar complementos personalizados para las pruebas de carga y de rendimiento web.

Para crear una regla de extracción personalizada

  1. Abra un proyecto de prueba que contenga una prueba de rendimiento web.

  2. (Opcional) Cree un proyecto de bibliotecas de clase independiente para almacenar su regla de extracción.

    Nota importanteImportante

    Puede crear la clase en el mismo proyecto donde están sus pruebas. No obstante, si desea volver a usar la regla, es mejor crear un proyecto de biblioteca de clases diferente para almacenar la regla. Si crea un proyecto independiente, debe completar los pasos opcionales de este procedimiento.

  3. (Opcional) En el proyecto de bibliotecas de clase, agregue una referencia a Microsoft.VisualStudio.QualityTools.WebTestFramework dll.

  4. Cree una clase que se derive de la clase ExtractionRule. Implemente los miembros Extract y RuleName.

  5. (Opcional) Genere el nuevo proyecto de bibliotecas de clase.

  6. (Opcional) En el Proyecto de prueba, agregue una referencia al proyecto de bibliotecas de clase que contiene la regla de extracción personalizada.

  7. En el Proyecto de prueba, abra una prueba de rendimiento web en el Editor de prueba de rendimiento web.

  8. Para agregar la regla de extracción personalizada, haga clic con el botón secundario en una solicitud de prueba de rendimiento web y seleccione Agregar regla de extracción.

    Aparecerá el cuadro de diálogo Agregar regla de extracción. Verá su regla de validación personalizada en la lista Seleccione una regla, junto con las reglas de validación predefinidas. Seleccione su regla de extracción personalizada y, a continuación, haga clic en Aceptar.

  9. Ejecute su prueba de rendimiento web.

Ejemplo

El siguiente código muestra la implementación de una regla de extracción personalizada. Esta regla de extracción extrae el valor de un campo de entrada especificado. Utilice este ejemplo como punto de partida para sus propias reglas de extracción personalizadas.

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

El método Extract contiene la funcionalidad básica de una regla de extracción. El método Extract del ejemplo anterior acepta ExtractionEventArgs, que proporciona la respuesta generada por la solicitud que cubre esta regla de extracción. La respuesta contiene un HtmlDocument que contiene todas las etiquetas de la respuesta. Las etiquetas de entrada se filtran de HtmlDocument. Se examina cada etiqueta de entrada para ver si tiene un atributo llamado nombre cuyo valor equivale al valor de la propiedad Nombre proporcionado por el usuario. Si se encuentra una etiqueta con este atributo, se intenta extraer un valor incluido en el atributo valor, si existe un atributo de valor. En ese caso, se extraen el nombre y el valor de la etiqueta y se agregan al contexto de la prueba de rendimiento web. La regla de extracción pasa.

Vea también

Tareas

Cómo: Agregar una regla de extracción a una prueba de rendimiento web

Tutorial: Agregar reglas de validación y extracción a una prueba de rendimiento web

Cómo: Crear una regla de validación personalizada para una prueba de rendimiento web

Referencia

ExtractionRule

Microsoft.VisualStudio.TestTools.WebTesting.Rules

ExtractAttributeValue

ExtractFormField

ExtractHttpHeader

ExtractRegularExpression

ExtractText

ExtractHiddenFields

Conceptos

Usar las reglas de validación y extracción en las pruebas de rendimiento web