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:
Editor de conteúdo da cadeia de caracteres isso é implementado usando a interface de IStringHttpBodyEditorPlugin .
Editor de conteúdo de binário isso é implementado usando a interface de IBinaryHttpBodyEditorPlugin .
Essas interfaces são contidas no namespace de Microsoft.VisualStudio.TestTools.WebTesting .
Requisitos
- Visual Studio Ultimate
Em Visual Studio Ultimate, no menu de Arquivo , escolha Novo e selecione Projeto.
A caixa de diálgo New Project é exibida.
Em Modelos Instalados, selecione Visual Basic ou Visual C# dependendo de sua preferência de programação, selecione Janelas.
Observação Este exemplo usa Visual C#.
Na lista de modelos, Biblioteca de Controle Windows Formsselecione.
Na caixa de texto nome, digite um nome, por exemplo, MessageEditors, e escolha OK.
Observação Este exemplo usa MessageEditors.
O projeto é adicionado para a nova solução e UserControl chamado UserControl1.cs é apresentado no designer.
De Caixa de Ferramentas, na categoria de Controles Comuns , arraste RichTextBox na superfície de UserControl1.
Escolha o glifo de marca de ação () no canto superior direito do controle de RichTextBox , selecione e Encaixar no Contêiner Pai.
No solution Explorer, clique com o botão direito do mouse no projeto de biblioteca de formulários do Windows e selecione Propriedades.
Em propriedades, selecione a guia de Aplicativo .
Na lista suspensa de Estrutura de Destino , o .NET Framework 4selecione.
A caixa de diálogo de alteração de Framework de destino é exibida.
Escolha Sim.
No solution Explorer, clique com o botão direito do mouse no nó de Referências e selecione Adicionar Referência.
A caixa de diálogo Add Reference é exibida.
Escolha. o guia derede , rola para baixo e Microsoft.VisualStudio.QualityTools.WebTestFramework selecione e clique em OK.
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.
Na superfície de design, clique com o botão direito do mouse e selecione Exibir Código.
(Opcional) alterar o nome da classe e o construtor de UserControl1 a um nome significativo, por exemplo, MessageEditorControl:
Observação O exemplo usa MessageEditorControl.
namespace MessageEditors { public partial class MessageEditorControl : UserControl { public MessageEditorControl() { InitializeComponent(); } } }
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); } }
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.
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.
A caixa de diálogo Add New Item é exibida.
ClasseSelecione.
Na caixa de texto de Nome , digite um nome significativo para a classe, por exemplo, MessageEditorPlugins.
Escolha Adicionar.
Class1 é adicionado ao projeto e apresentado no editor de códigos.
No editor de códigos, adicione a seguinte declaração de uso:
using Microsoft.VisualStudio.TestTools.WebTesting;
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; }
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.
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; }
Para criar e implantar o DLL resultante para o IStringHttpBodyEditorPlugin e o IBinaryHttpBodyEditorPlugin
No menu, escolha de compilação a compilação <Windows Form Control Library project name>.
Sair Visual Studio Ultimate.
Observaçã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.
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.
Inicie o Visual Studio Ultimate
O arquivo .dll deve ser registrado com Visual Studio Ultimate.
Crie um teste O.
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.
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.
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.
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.
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#).
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
Criar e usar o Custom Plug-ins para carga e testes de desempenho da Web