Como: criar um Editor de corpo HTTP personalizado para o Editor de teste de desempenho de Web

Você pode criar um editor de conteúdo personalizado que permite que você edite o conteúdo do corpo da cadeia de caracteres ou o conteúdo binária do corpo de uma solicitação de um serviço Web, por exemplo, SOAP, RESTO, asmx, wcf, RIA e outra solicitação de serviço Web digite.

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

Essas interfaces são contidas no namespace de Microsoft.VisualStudio.TestTools.WebTesting .

Requisitos

  • Visual Studio Ultimate

Crie um projeto de biblioteca de controle do Windows

Crie um controle de usuário usando um projeto de biblioteca de controle do Windows

  1. Em Visual Studio Ultimate, no menu de Arquivo , escolha 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, selecione Janelas.

    ObservaçãoObservação

    Este exemplo usa Visual C#.

  3. Na lista de modelos, Biblioteca de Controle Windows Formsselecione.

  4. Na caixa de texto nome, digite um nome, por exemplo, MessageEditors, e escolha OK.

    ObservaçãoObservação

    Este exemplo usa MessageEditors.

    O projeto é adicionado para a nova solução e UserControl chamado UserControl1.cs é apresentado no designer.

  5. De Caixa de Ferramentas, na categoria de Controles Comuns , arraste RichTextBox na superfície de UserControl1.

  6. Escolha o glifo de marca de ação (Glifo de marca inteligente) no canto superior direito do controle de RichTextBox , selecione e Encaixar no Contêiner Pai.

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

  8. Em propriedades, selecione a guia de Aplicativo .

  9. Na lista suspensa de Estrutura de Destino , o .NET Framework 4selecione.

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

  11. Escolha Sim.

  12. No solution Explorer, clique com o botão direito do mouse no nó de Referências e selecione Adicionar Referência.

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

  14. Escolha. o guia derede , rola para baixo e Microsoft.VisualStudio.QualityTools.WebTestFramework selecione e clique em OK.

  15. Se o criador de exibição ainda não está aberto, no solution Explorer, clique com o botão direito do mouse UserControl1.cs e selecione Exibir Designer.

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

  17. (Opcional) alterar o nome da classe e o construtor de UserControl1 a 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 ativar obter e definir o texto em RichTextBox1.A interface de IStringHttpBodyEditorPlugin usará EditString e 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);
                }
            }
    

Para adicionar uma classe ao projeto de biblioteca de controle do Windows

Adicionar uma classe ao projeto.Será usado para implementar IStringHttpBodyEditorPlugin e IBinaryHttpBodyEditorPlugin interfaces.

Visão geral de código neste procedimento

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

private MessageEditorControl messageEditorControl

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

Quando a edição do corpo da cadeia de caracteres e terminar o usuário clica em OK na caixa de diálogo plug-in, GetNewValue é chamado para obter o texto editado como uma cadeia de caracteres e para atualizar Corpo da string na solicitação no editor de desempenho de teste na Web.

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

  1. No solution Explorer, clique com o botão direito do mouse no projeto de biblioteca de controle de formulários do Windows e selecione Adicionar novo item.

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

  3. ClasseSelecione.

  4. Na caixa de texto de Nome , digite um nome significativo para a classe, por exemplo, MessageEditorPlugins.

  5. Escolha Adicionar.

    Class1 é adicionado ao projeto e apresentado no editor de códigos.

  6. No editor de códigos, adicione a seguinte declaração de uso:

    using Microsoft.VisualStudio.TestTools.WebTesting;
    
  7. Escreva ou copie o seguinte código para criar uma instância da classe de XmlMessageEditor de interface de IStringHttpBodyEditorPlugin e implementar 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 a classe

Implementar a interface IBinaryHttpBodyEditorPlugin.

Visão geral de código neste procedimento

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

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

private MessageEditorControl messageEditorControl

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

Quando a edição do corpo da cadeia de caracteres e terminar o usuário clica em OK na caixa de diálogo plug-in, GetNewValue é chamado para obter o texto editado como uma cadeia de caracteres e para atualizar BinaryHttpBody.Data na solicitação no editor de desempenho de teste na Web.

Para adicionar o IBinaryHttpBodyEditorPlugin a classe

  • Escreva ou copie o seguinte código sob a classe de XmlMessageEditor adicionado no procedimento anterior para criar uma instância da classe de Msbin1MessageEditor de interface de IBinaryHttpBodyEditorPlugin e implementar 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

Para criar e implantar o DLL resultante para o IStringHttpBodyEditorPlugin e o IBinaryHttpBodyEditorPlugin

  1. No menu, escolha de compilação a compilação <Windows Form Control Library project name>.

  2. Sair Visual Studio Ultimate.

    ObservaçãoObservação

    Você deve sair todas as instâncias de Visual Studio Ultimate para garantir que o arquivo DLL não está bloqueado antes de tentar copiar o.

  3. Copie o arquivo .DLL resultante de seus projetos bin \ debug de (por exemplo, MessageEditors.dll) para %ProgramFiles% \ Microsoft Visual Studio 11,0 \ Common7 \ IDE \ \ PrivateAssemblies WebTestPlugins.

  4. Inicie o Visual Studio Ultimate

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

Verifique os plug-ins usando um teste de desempenho da Web

Para testar os plug-ins

  1. Crie um teste O.

  2. Crie um teste de desempenho da Web e insira um URL no navegador a um serviço Web, por exemplo, http://dev.virtualearth.rede/webservices/v1/metadata/searchservice/dev.virtualearth.net.webservices.v1.search.wsdl.

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

  4. Na janela propriedades, selecione o corpo da cadeia de caracteres ou o corpo de binário e escolha o botão reticências (…).

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

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

Compilando o código

  • Verifique se a estrutura de destino para o projeto de biblioteca de controle do Windows é o .NET Framework 4.5.Por padrão, os projetos de biblioteca de controle do Windows destinam-se a estrutura de cliente do .NET Framework 4.5 que não permitirá a inclusão de referência de 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 da Web

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

Como: criar um teste de carga plug-in

Como: criar um teste de desempenho da Web codificado

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

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 da Web