Compartilhar via


Como: Criar um Editor de corpo HTTP personalizados para o Editor de teste de desempenho de Web

Este tópico se aplica a:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual StudioExpress

O tópico é aplicável O tópico não é aplicável O tópico não é aplicável O tópico não é aplicável

Você pode criar um editor de conteúdo personalizado que permite que você edite o conteúdo de corpo de seqüência de caracteres ou o corpo de binário de conteúdo de uma solicitação de serviço da Web, por exemplo, SOAP, REST, asmx, wcf, RIA e outros tipos de solicitação de serviço da Web.

Há dois tipos de editores em que você pode implementar:

Essas interfaces estão contidas em Using a Microsoft.VisualStudio.TestTools.WebTesting namespace.

Criar um projeto de biblioteca de controle do Windows

Criar um controle de usuário por meio de um projeto de biblioteca de controle do Windows

  1. Em Visual Studio Ultimatediante do arquivo menu, clique em novo e selecione projeto.

    A caixa de diálgo New Project é exibida.

  2. Em Modelos instalados, selecione Visual Basic ou Visual C# dependendo de sua preferência de programação e, em seguida, selecione Windows.

    ObservaçãoObservação

    Este exemplo usa o Visual C#.

  3. Na lista de modelos, selecione Windows Forms Control Library.

  4. Na caixa de texto Nome, digite um nome, por exemplo, MessageEditorse clique em OK.

    ObservaçãoObservação

    Este exemplo utiliza a MessageEditors.

    O projeto é adicionado à nova solução e um UserControl nomeado UserControl1. cs é apresentado no Designer.

  5. Da caixa de ferramentas, na Controles comuns categoria, arraste um RichTextBox para a superfície de UserControl1.

  6. Clique no glifo de marca de ação (Glifo de marca inteligente) no canto superior direito da RichTextBox de controle e, em seguida, selecione e Encaixar no contêiner pai.

  7. No Solution Explorer, clique com o botão direito do projeto de biblioteca de formulários do Windows e selecione Propriedades.

  8. Em Propriedades, selecione o aplicativo guia.

  9. No estrutura de destino lista suspensa, selecione .NET Framework 4.

  10. A caixa de diálogo de alteração de estrutura de destino é exibida.

  11. Clique em Yes.

  12. No Solution Explorer, clique com o botão direito do referências nó e selecione Adicionar referência de.

  13. A caixa de diálogo Add Reference é exibida.

  14. Clique no.NET , role para baixo e selecione Microsoft.VisualStudio.QualityTools.WebTestFramework e, em seguida, clique em OK.

  15. Se o modo de exibição Designer não ainda estiver aberto, no Solution Explorer, clique com o botão direito UserControl1. cs e selecione View Designer.

  16. Na superfície de design, clique com o botão direito e selecione Exibir código.

  17. (Opcional) Altere o nome da classe e o construtor de UserControl1 para um nome significativo, por exemplo, MessageEditorControl:

    ObservaçãoObservação

    O exemplo usa MessageEditorControl.

    namespace MessageEditors
    {
        public partial class MessageEditorControl : UserControl
        {
            public MessageEditorControl()
            {
                InitializeComponent();
            }
        }
    }
    
  18. Adicione as seguintes propriedades para habilitar a obter e definir o texto em RichTextBox1. O IStringHttpBodyEditorPlugin interface usará EditString e o 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);
                }
            }
    

Adicionar uma classe para o projeto de biblioteca de controle do Windows

Adicione uma classe ao projeto. Ele será usado para implementar a IStringHttpBodyEditorPlugin e IBinaryHttpBodyEditorPlugin interfaces.

Visão geral do código deste procedimento.

O MessageEditorControl UserControl que foi criado no anterior procedimento é instanciado como messageEditorControl:

private MessageEditorControl messageEditorControl

A instância de messageEditorControl é hospedada dentro da caixa de diálogo da plug-in é criada pelo CreateEditor método. Do Além disso, o messageEditorControl RichTextBox é preenchido com o conteúdo da IHttpBody. No entanto, a criação de plug-in não pode ocorrer a menos que SupportsContentType retorna true. No caso desse editor, SupportsContentType retorna true se a ContentType na IHttpBody contém "xml".

Quando a edição do corpo da seqüência é concluída e a usuário clica em OK na caixa de diálogo plug-in, GetNewValue é chamado para obter o texto editado como uma seqüência de caracteres e a atualização do String Body na solicitação no Editor de desempenho de teste da Web.

Para criar uma classe e implementar o código de interface IStringHttpBodyEditorPlugin

  1. No Solution Explorer, clique com o botão direito do projeto de biblioteca de controle de formulários do Windows e selecione Add New Item.

  2. A caixa de diálogo Add New Item é exibida.

  3. Selecione classe.

  4. No nome texto, digite um nome significativo para a classe, por exemplo, MessageEditorPlugins.

  5. Clique em Adicionar.

    Class1 é adicionado ao projeto e apresentados no Editor de código.

  6. No Editor de código, adicione a seguinte instrução using:

    using Microsoft.VisualStudio.TestTools.WebTesting;
    
  7. Escreva ou copie o seguinte código para instanciar a classe XmlMessageEditor do IStringHttpBodyEditorPlugin interface e implementar os métodos necessários:

        /// <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;
        }
    

Adicione um IBinaryHttpBodyEditorPlugin à classe

Implementar a interface IBinaryHttpBodyEditorPlugin.

Visão geral do código deste procedimento.

A implementação de código para o IBinaryHttpBodyEditorPlugin interface é semelhante a IStringHttpBodyEditorPlugin abordados no procedimento anterior. No entanto, a versão binária usa uma matriz de bytes para manipular os dados binários em vez de uma seqüência de caracteres.

O MessageEditorControl UserControl criado no primeiro procedimento é instanciado como messageEditorControl:

private MessageEditorControl messageEditorControl

A instância de messageEditorControl é hospedada dentro da caixa de diálogo da plug-in é criada pelo CreateEditor método. Do Além disso, o messageEditorControl RichTextBox é preenchido com o conteúdo da IHttpBody. No entanto, a criação de plug-in não pode ocorrer a menos que SupportsContentType retorna true. No caso desse editor, SupportsContentType retorna true se a ContentType na IHttpBody contém o "msbin1".

Quando a edição do corpo da seqüência é concluída e a usuário clica em OK na caixa de diálogo plug-in, GetNewValue é chamado para obter o texto editado como uma seqüência de caracteres e a atualização do BinaryHttpBody.Data na solicitação no Editor de desempenho de teste da Web.

Para adicionar o IBinaryHttpBodyEditorPlugin para a classe

  • Escreva ou copie o seguinte código sob a classe XmlMessageEditor adicionado no procedimento anterior para instanciar a classe Msbin1MessageEditor do IBinaryHttpBodyEditorPlugin interface e implementar os métodos necessários:

    /// <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;
        }
    

Criar e implantar os Plug-Ins

Crie e implante a dll resultante para o IStringHttpBodyEditorPlugin e IBinaryHttpBodyEditorPlugin

  1. No menu Build, clique em Build < nome do projeto de biblioteca de controle de formulários do Windows >.

  2. Exit Visual Studio Ultimate.

    ObservaçãoObservação

    Você deve sair todas as instâncias de Visual Studio Ultimate para garantir que a dll do arquivo não está bloqueado antes de você tentar copiar o proprietário.

  3. Copie o arquivo. dll resultante da sua pasta bin\debug de projetos (por exemplo, MessageEditors.dll) para %ProgramFiles%\Microsoft 10.0\Common7\IDE\PrivateAssemblies\WebTestPlugins de Visual Studio.

  4. Inicie o Visual Studio Ultimate

    O arquivo. dll deve ser registrado com Visual Studio Ultimate.

Verifique se o Plug-Ins usando um teste de desempenho de Web

Para testar o seus plug-ins

  1. Crie um projeto de teste.

  2. Crie uma Web de teste de desempenho e insira uma URL no navegador para um serviço da Web, por exemplo, http://dev.virtualearth. NET/WebServices/v1/Metadata/searchservice/dev.virtualearth. NET.WebServices.v1.Search.WSDL.

  3. Quando você terminar a gravação, no Editor de teste de desempenho de Web, expanda a solicitação de serviço da Web e selecione um String Body ou um Corpo binário.

  4. Na janela Propriedades, selecione corpo binário ou corpo de seqüência de caracteres e clique nas reticências (…).

    O Editar dados de corpo HTTP caixa de diálogo é exibida.

  5. Agora você pode editar os dados e clique em OK. Isso invoca o método aplicável da GetNewValue para atualizar o conteúdo do IHttpBody.

Compilando o código

  • Verifique se a estrutura de multidifusão para o projeto de biblioteca de controle do Windows é .NET Framework 4. Por padrão, o Windows Control Library projetos destino a .NET Framework 4 estrutura do cliente que não permitirá a inclusão de referência ' Microsoft.VisualStudio.QualityTools.WebTestFramework '.

    Para obter mais informações, consulte Página de aplicativo, Designer de projeto (C#).

Consulte também

Tarefas

Como: Criar um nível de solicitação plug-in

Como: Criar uma regra de extração personalizada para um teste de desempenho de Web

Como: Criar uma regra de validação personalizada para um teste de desempenho de Web

Como: Create a Load Test Plug-in

Como: Criar um teste de desempenho da Web codificado

Referência

IStringHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IBinaryHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IHttpBody

ContentType

UserControl

RichTextBox

Outros recursos

Criar e usar o Custom Plug-ins para carga e testes de desempenho de Web

Como: Criar um suplemento de Visual Studio para o Visualizador de resultados de teste de desempenho da Web