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 |
---|---|---|---|
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:
Editor de conteúdo de seqüênciaisso é implementado usando o IStringHttpBodyEditorPlugin interface.
Editor de conteúdo binárioisso é implementado usando o IBinaryHttpBodyEditorPlugin interface.
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
Em Visual Studio Ultimatediante do arquivo menu, clique em 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 e, em seguida, selecione Windows.
Observação Este exemplo usa o Visual C#.
Na lista de modelos, selecione Windows Forms Control Library.
Na caixa de texto Nome, digite um nome, por exemplo, MessageEditorse clique em OK.
Observação Este exemplo utiliza a MessageEditors.
O projeto é adicionado à nova solução e um UserControl nomeado UserControl1. cs é apresentado no Designer.
Da caixa de ferramentas, na Controles comuns categoria, arraste um RichTextBox para a superfície de UserControl1.
Clique no glifo de marca de ação () no canto superior direito da RichTextBox de controle e, em seguida, selecione e Encaixar no contêiner pai.
No Solution Explorer, clique com o botão direito do projeto de biblioteca de formulários do Windows e selecione Propriedades.
Em Propriedades, selecione o aplicativo guia.
No estrutura de destino lista suspensa, selecione .NET Framework 4.
A caixa de diálogo de alteração de estrutura de destino é exibida.
Clique em Yes.
No Solution Explorer, clique com o botão direito do referências nó e selecione Adicionar referência de.
A caixa de diálogo Add Reference é exibida.
Clique no.NET , role para baixo e selecione Microsoft.VisualStudio.QualityTools.WebTestFramework e, em seguida, clique em OK.
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.
Na superfície de design, clique com o botão direito e selecione Exibir código.
(Opcional) Altere o nome da classe e o construtor de UserControl1 para 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 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
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.
A caixa de diálogo Add New Item é exibida.
Selecione classe.
No nome texto, digite um nome significativo para a classe, por exemplo, MessageEditorPlugins.
Clique em Adicionar.
Class1 é adicionado ao projeto e apresentados no Editor de código.
No Editor de código, adicione a seguinte instrução using:
using Microsoft.VisualStudio.TestTools.WebTesting;
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
No menu Build, clique em Build < nome do projeto de biblioteca de controle de formulários do Windows >.
Exit Visual Studio Ultimate.
Observaçã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.
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.
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
Crie um projeto de teste.
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.
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.
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.
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
Outros recursos
Criar e usar o Custom Plug-ins para carga e testes de desempenho de Web