Condividi tramite


Procedura: creare una regola di estrazione personalizzata per un test delle prestazioni Web

Le informazioni contenute in questo argomento sono valide per:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

Argomento applicabile Argomento non applicabile Argomento non applicabile Argomento non applicabile

È possibile creare proprie regole di estrazione. A tale scopo, derivare le proprie regole da una classe di regole di estrazione. Le regole di estrazione derivano dalla classe di base ExtractionRule.

In Visual Studio Ultimate sono disponibili alcune regole di estrazione predefinite. Per ulteriori informazioni, vedere Utilizzo di regole di convalida ed estrazione in test Web.

Nota

È possibile anche creare regole di convalida personalizzate. Per ulteriori informazioni, vedere Creazione e utilizzo di plug-in personalizzati per i test di carico e delle prestazioni Web.

Per creare una regola di estrazione personalizzata

  1. Aprire un progetto di test contenente un test Web.

  2. (Facoltativo) Creare un progetto Libreria di classi distinto in cui archiviare la regola di estrazione.

    Nota importanteImportante

    È possibile creare la classe nello stesso progetto in cui si trovano i test. Tuttavia, se si desidera riutilizzare la regola, è preferibile creare un progetto Libreria di classi distinto in cui archiviarla. Se si crea un progetto distinto, è necessario completare i passaggi facoltativi di questa procedura.

  3. (Facoltativo) Nel progetto Libreria di classi aggiungere un riferimento alla dll Microsoft.VisualStudio.QualityTools.WebTestFramework.

  4. Creare una classe che derivi dalla classe ExtractionRule. Implementare i membri Extract e RuleName.

  5. (Facoltativo) Compilare il nuovo progetto Libreria di classi.

  6. (Facoltativo) Nel progetto di test aggiungere un riferimento al progetto Libreria di classi che contiene la regola di estrazione personalizzata.

  7. Nel progetto di test aprire un test delle prestazioni Web nell'Editor test prestazioni Web.

  8. Per aggiungere la regola di estrazione personalizzata, fare clic con il pulsante destro del mouse su una richiesta test Web e scegliere Aggiungi regola di estrazione.

    Verrà visualizzata la finestra di dialogo Aggiungi regola di estrazione. La regola di convalida personalizzata sarà presente nell'elenco Seleziona una regola, insieme alle regole di convalida predefinite. Selezionare la regola di estrazione personalizzata e fare clic su OK.

  9. Eseguire il test Web.

Esempio

Nell'esempio di codice seguente viene illustrata un'implementazione di una regola di estrazione personalizzata, che estrae il valore da un campo di input specificato. Utilizzare questo esempio come punto di partenza per le regole di estrazione personalizzate.

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

Il metodo Extract contiene le funzionalità principali di una regola di estrazione. Il metodo Extract nell'esempio precedente assume il valore ExtractionEventArgs che fornisce la risposta generata dalla richiesta coperta da questa regola di estrazione. La risposta contiene HtmlDocument che contiene tutti i tag nella risposta. I tag di input vengono filtrati da HtmlDocument. In ciascun tag di input viene cercato un attributo denominato name il cui valore è uguale all'utente che ha fornito il valore della proprietà Name. Se viene rilevato un tag con questo attributo corrispondente, viene eseguito un tentativo di estrarre un valore contenuto nell'attributo value, se esiste. Se presenti, il nome e il valore del tag vengono estratti e aggiunti al contesto del test Web. La regola di estrazione viene passata.

Vedere anche

Attività

Procedura: aggiungere una regola di estrazione a un test Web

Procedura dettagliata: aggiunta di regole di convalida ed estrazione a un test Web

Procedura: creare una regola di convalida personalizzata per un test delle prestazioni Web

Riferimenti

ExtractionRule

Microsoft.VisualStudio.TestTools.WebTesting.Rules

ExtractAttributeValue

ExtractFormField

ExtractHttpHeader

ExtractRegularExpression

ExtractText

ExtractHiddenFields

Concetti

Utilizzo di regole di convalida ed estrazione in test Web