Compartir a través de


Cómo: Crear un editor de cuerpo HTTP personalizado para el Editor de 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 un editor de contenido personalizado que le permite editar el contenido del texto de la cadena o el contenido del texto binario de una solicitud de servicio Web, por ejemplo, SOAP, REST, asmx, wcf, RIA y otros tipos de solicitud de servicio Web.

Hay dos tipos de editores que puede implementar:

Estas interfaces están contenidas en el espacio de nombres Microsoft.VisualStudio.TestTools.WebTesting.

Crear un proyecto de Biblioteca de controles de Windows

Crear un control de usuario mediante un proyecto de Biblioteca de controles de Windows

  1. En Visual Studio Ultimate, en el menú Archivo, haga clic en Nuevo y, a continuación, seleccione Proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

  2. En Plantillas instaladas, seleccione Visual Basic o Visual C# dependiendo de su preferencia de programación y, a continuación, seleccione Windows.

    Nota

    En este ejemplo se usa Visual C#.

  3. En la lista de plantillas, seleccione Biblioteca de controles de Windows Forms.

  4. En el cuadro de texto Nombre, escriba un nombre, por ejemplo MessageEditors y, a continuación, haga clic en Aceptar.

    Nota

    En este ejemplo se usa MessageEditors.

    El proyecto se agregará a la nueva solución y aparecerá un UserControl denominado UserControl1.cs en el diseñador.

  5. En el Cuadro de herramientas, bajo la categoría Controles comunes, arrastre un RichTextBox hasta la superficie de UserControl1.

  6. Haga clic en el glifo de la etiqueta de acción (Glifo de etiqueta inteligente) situado en la esquina superior derecha del control RichTextBox y seleccione Acoplar en contenedor primario.

  7. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto Biblioteca de controles de Windows Forms y seleccione Propiedades.

  8. En Propiedades, seleccione la pestaña Aplicación.

  9. En la lista desplegable Versión de .NET Framework de destino, seleccione .NET Framework 4.

  10. Aparecerá el cuadro de diálogo Cambio de versión de .NET Framework de destino.

  11. Haga clic en .

  12. En el Explorador de soluciones, haga clic con el botón secundario en el nodo Referencias y seleccione Agregar referencia.

  13. Aparecerá el cuadro de diálogo Agregar referencia.

  14. Haga clic en la pestaña .NET, desplácese hacia abajo y seleccione Microsoft.VisualStudio.QualityTools.WebTestFramework y, a continuación, haga clic en Aceptar.

  15. Si el Diseñador de vistas todavía no está abierto, en el Explorador de soluciones, haga clic con el botón secundario en UserControl1.cs y, a continuación, seleccione Diseñador de vistas.

  16. En la superficie de diseño, haga clic con el botón secundario y seleccione Ver código.

  17. (Opcional) Cambie el nombre de la clase y el constructor de UserControl1 a un nombre significativo, por ejemplo MessageEditorControl:

    Nota

    En el ejemplo se usa MessageEditorControl.

    namespace MessageEditors
    {
        public partial class MessageEditorControl : UserControl
        {
            public MessageEditorControl()
            {
                InitializeComponent();
            }
        }
    }
    
  18. Agregue las siguientes propiedades para habilitar la obtención y el establecimiento del texto en RichTextBox1. La interfaz IStringHttpBodyEditorPlugin usará EditString y IBinaryHttpBodyEditorPlugin usará EditByteArray:

            public String EditString
            {
                get
                {
                    return this.richTextBox1.Text;
                }
                set
                {
                    this.richTextBox1.Text = value;
                }
            }
    
    public byte[] EditByteArray
            {
                get
                {
                    return System.Convert.FromBase64String(richTextBox1.Text);
                }
                set
                {
                    richTextBox1.Text = System.Convert.ToBase64String(value, 0, value.Length);
                }
            }
    

Agregue una clase para el proyecto Biblioteca de controles de Windows Forms.

Agregue una clase al proyecto. Se usará para implementar las interfaces IBinaryHttpBodyEditorPlugin y IStringHttpBodyEditorPlugin.

Información general del código de este procedimiento

Se crea una instancia del UserControl MessageEditorControl creado en el procedimiento anterior como messageEditorControl:

private MessageEditorControl messageEditorControl

La instancia de messageEditorControl se hospeda dentro del cuadro de diálogo de complemento creado por el método CreateEditor. Además, el RichTextBox de messageEditorControl se rellena con el contenido de IHttpBody. Sin embargo, la creación del complemento no se puede producir a menos que SupportsContentType devuelva true. En el caso de este editor, SupportsContentType devuelve true si ContentType en IHttpBody contiene "xml".

Cuando se completa la edición del texto de la cadena y el usuario hace clic en Aceptar en el cuadro de diálogo del complemento, se llama a GetNewValue para obtener el texto editado como una cadena y actualizar el Texto de la cadena de la solicitud en el Editor de prueba de rendimiento web.

Para crear una clase e implementar el código de la interfaz IStringHttpBodyEditorPlugin

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto Biblioteca de controles de Windows Forms y seleccione Agregar nuevo elemento.

  2. Se abrirá el cuadro de diálogo Agregar nuevo elemento.

  3. Seleccione Clase.

  4. En el cuadro de texto Nombre, escriba un nombre significativo para la clase, por ejemplo MessageEditorPlugins.

  5. Haga clic en Agregar.

    Class1 se agregará al proyecto y se presentará en el Editor de código.

  6. En el Editor de código, agregue la siguiente instrucción using:

    using Microsoft.VisualStudio.TestTools.WebTesting;
    
  7. Escriba o copie el siguiente código para crear una instancia de la clase XmlMessageEditor de la interfaz IStringHttpBodyEditorPlugin e implementar los métodos necesarios:

        /// <summary>
        /// Editor for generic text based hierarchical messages such as XML and JSON.
        /// </summary>
        public class XmlMessageEditor : IStringHttpBodyEditorPlugin
        {
            public XmlMessageEditor()
            {
            }
    
            /// <summary>
            /// Determine if this plugin supports the content type.
            /// </summary>
            /// <param name="contentType">The content type to test.</param>
            /// <returns>Returns true if the plugin supports the specified content type.</returns>
            public bool SupportsContentType(string contentType)
            {
                return contentType.ToLower().Contains("xml");
            }
    
            /// <summary>
            /// Create a UserControl to edit the specified bytes.  
            /// This control will be hosted in the
            /// plugin dialog which provides OK and Cancel buttons.
            /// </summary>
            /// <param name="contentType">The content type of the BinaryHttpBody.</param>
            /// <param name="initialValue">The bytes to edit.  The bytes are the payload of a BinaryHttpBody.</param>
            /// <returns>A UserControl capable of displaying and editing the byte array value of the specified content type.</returns>
            public object CreateEditor(string contentType, string initialValue)
            {
                messageEditorControl = new MessageEditorControl();
                messageEditorControl.EditString = initialValue;
                return this.messageEditorControl;
            }
    
            /// <summary>
            /// Gets the edited bytes after the OK button is clicked on the plugin dialog.
            /// </summary>
            public string GetNewValue()
            {
                return messageEditorControl.EditString;
            }
    
            private MessageEditorControl messageEditorControl;
        }
    

Agregar IBinaryHttpBodyEditorPlugin a la clase

Implementar la interfaz IBinaryHttpBodyEditorPlugin.

Información general del código de este procedimiento

La implementación del código para la interfaz IBinaryHttpBodyEditorPlugin es similar a la IStringHttpBodyEditorPlugin tratada en el procedimiento anterior. Sin embargo, la versión binaria usa una matriz de bytes para administrar los datos binarios en lugar de una cadena.

Se crea una instancia del UserControl MessageEditorControl creado en el primer procedimiento como messageEditorControl:

private MessageEditorControl messageEditorControl

La instancia de messageEditorControl se hospeda dentro del cuadro de diálogo de complemento creado por el método CreateEditor. Además, el RichTextBox de messageEditorControl se rellena con el contenido de IHttpBody. Sin embargo, la creación del complemento no se puede producir a menos que SupportsContentType devuelva true. En el caso de este editor, SupportsContentType devuelve true si ContentType en IHttpBody contiene "msbin1".

Cuando se completa la edición del texto de la cadena y el usuario hace clic en Aceptar en el cuadro de diálogo del complemento, se llama a GetNewValue para obtener el texto editado como una cadena y actualizar BinaryHttpBody.Data de la solicitud en el Editor de prueba de rendimiento web.

Para agregar IBinaryHttpBodyEditorPlugin a la clase

  • Escriba o copie el siguiente código bajo la clase XmlMessageEditor agregada en el procedimiento anterior para crear una instancia de la clase Msbin1MessageEditor de la interfaz IBinaryHttpBodyEditorPlugin e implementar los métodos necesarios:

    /// <summary>
        /// Editor for MSBin1 content type (WCF messages)
        /// </summary>
        public class Msbin1MessageEditor : IBinaryHttpBodyEditorPlugin
        {
            /// <summary>
            /// 
            /// </summary>
            public Msbin1MessageEditor()
            {
            }
    
            /// <summary>
            /// Determine if this plugin supports a content type.
            /// </summary>
            /// <param name="contentType">The content type to test.</param>
            /// <returns>Returns true if the plugin supports the specified content type.</returns>
            public bool SupportsContentType(string contentType)
            {
                return contentType.ToLower().Contains("msbin1");
            }
    
            /// <summary>
            /// Create a UserControl to edit the specified bytes.  This control will be hosted in the
            /// plugin dialog which provides OK and Cancel buttons.
            /// </summary>
            /// <param name="contentType">The content type of the BinaryHttpBody.</param>
            /// <param name="initialValue">The bytes to edit.  The bytes are the payload of a BinaryHttpBody.</param>
            /// <returns>A UserControl capable of displaying and editing the byte array value of the specified content type.</returns>
            public object CreateEditor(string contentType, byte[] initialValue)
            {
                messageEditorControl = new MessageEditorControl();
                messageEditorControl.EditByteArray = initialValue;
                return messageEditorControl;
            }
    
            /// <summary>
            /// Gets the edited bytes after the OK button is clicked on the plugin dialog.
            /// </summary>
            public byte[] GetNewValue()
            {
                return messageEditorControl.EditByteArray;
            }
    
            private MessageEditorControl messageEditorControl;
            private object originalMessage;
        }
    

Compilar e implementar los complementos

Para compilar e implementar el archivo dll resultante para IStringHttpBodyEditorPlugin e IBinaryHttpBodyEditorPlugin

  1. En el menú Generar, haga clic en Generar <nombre del proyecto Biblioteca de controles de Windows Forms>.

  2. Salga de Visual Studio Ultimate.

    Nota

    Debe salir de todas las instancias de Visual Studio Ultimate para asegurarse de que no se bloquea el archivo dll antes de intentar copiarlo.

  3. Copie el archivo .dll resultante de la carpeta bin\debug del proyecto (por ejemplo, MessageEditors.dll) en %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\WebTestPlugins.

  4. Inicie Visual Studio Ultimate.

    El archivo .dll se debe registrar con Visual Studio Ultimate.

Comprobar los complementos usando una prueba de rendimiento web

Para probar los complementos

  1. Cree un proyecto de prueba.

  2. Cree una prueba de rendimiento web y escriba una dirección URL en el explorador para un servicio Web, por ejemplo http://dev.virtualearth. net/webservices/v1/metadata/searchservice/dev.virtualearth. net.webservices.v1.search.wsdl.

  3. Al finalizar la grabación, en el Editor de prueba de rendimiento web, expanda la solicitud para el servicio Web y seleccione Texto de la cadena o Cuerpo binario.

  4. En la ventana Propiedades, seleccione Texto de la cadena o Cuerpo binario y haga clic en los puntos suspensivos (.).

    Aparecerá el cuadro de diálogo Editar datos del cuerpo HTTP.

  5. Ahora puede editar los datos y hacer doble clic en Aceptar. Esto invoca el método GetNewValue aplicable para actualizar el contenido de IHttpBody.

Compilar el código

  • Compruebe que la versión de .NET Framework de destino para el proyecto Biblioteca de controles de Windows Forms es .NET Framework 4. De forma predeterminada, los proyectos Biblioteca de controles de Windows Forms tienen como destino el marco de cliente .NET Framework 4, que no permitirá la inclusión de la referencia de Microsoft.VisualStudio.QualityTools.WebTestFramework.

    Para obtener más información, vea Página de aplicación, Diseñador de proyectos (C#).

Vea también

Tareas

Cómo: Crear un complemento de nivel de solicitud

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

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

Cómo: Crear un complemento de pruebas de carga

Cómo: Crear una prueba de rendimiento web codificada

Referencia

IStringHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IBinaryHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IHttpBody

ContentType

UserControl

RichTextBox

Otros recursos

Crear y usar complementos personalizados para las pruebas de carga y de rendimiento web

Cómo: Crear un complemento de Visual Studio para el visor de resultados de pruebas de rendimiento web