Como criar um complemento do Visual Studio para o Visualizador de Resultados de Teste de Desempenho na Web
Publicado: abril de 2016
Você pode estender a interface de usuário para o visualizador de resultados de teste de desempenho da Web usando as seguintes namespaces:
Além disso, é necessário adicionar uma referência à DLL de LoadTestPackage que está localizada na pasta %ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies.
- Para estender a interface do usuário do Visualizador de resultados da Web desempenho teste, você deve criar um suplemento do Visual Studio e um controle de usuário. Os procedimentos a seguir explicam como criar o suplemento, o controle de usuário e como implementar as classes necessárias para estender interface de usuário do Visualizador de Resultados do Teste de Desempenho na Web.
Requisitos
- O Visual Studio Enterprise
Criar ou abrir uma solução que contenha uma Aplicação Web ASP.NET e um Projeto de teste de carga e desempenho na Web
Para se preparar para estender o Visualizador de resultados de teste de desempenho na Web
Crie ou abra uma solução de não produção com a qual você poderá fazer experiências e que contenha um aplicativo Web ASP.NET e um projeto de desempenho da Web e carregue o projeto de teste com um ou mais testes de desempenho da Web para o aplicativo Web ASP.NET.
Dica
Você pode criar um aplicativo Web ASP.NET e o projeto que contém testes de desempenho na Web seguindo os procedimentos de teste de carga e desempenho na Web [obsoleto] Passo a passo: criando um aplicativo Web simples e [obsoleto] Passo a passo: gravando e executando um teste de desempenho na Web.
Crie um suplemento do Visual Studio
Um suplemento é uma DLL compilada que é executada no ambiente de desenvolvimento integrado Visual Studio (IDE). A compilação ajuda a proteger sua propriedade intelectual e melhora o desempenho. Embora possa criar suplementos manualmente, talvez você ache mais fácil usar o Assistente de Suplemento. O assistente cria um suplemento funcional, mas básico, que você poderá executar imediatamente depois de criá-lo. Após o assistente de suplementos gerar o programa básico, você poderá adicionar código e personalizá-lo.
O assistente de suplementos permite que você forneça um nome de exibição e uma descrição para o suplemento. Ambos serão exibidos no Gerenciador de Suplementos. Opcionalmente, é possível fazer o assistente gerenciar o código que adiciona um comando para abrir o suplemento ao menu de Ferramentas. Você também pode escolher exibir uma caixa de diálogo personalizada Sobre para seu suplemento. Quando o assistente terminar, você terá um novo projeto que tem apenas uma classe que implementa o suplemento. Essa classe é chamada de Conectar.
Você usará o Gerenciador de Suplementos no final deste tópico.
Para obter mais informações, consulte Creating Add-ins and Wizards.
Para criar um suplemento usando o Assistente de Suplemento
No Gerenciador de Soluções, clique com o botão direito na solução, clique em Adicionar e, em seguida, clique em Novo Projeto.
A caixa de diálogo Novo Projeto é exibida.
Em Modelos Instalados, expanda Outros tipos de projetos e selecione Extensibilidade.
Na lista de modelos, selecione Suplemento do Visual Studio.
Em Nome, digite um nome para o suplemento. Por exemplo, WebPerfTestResultsViewerAddin.
Escolha OK.
O Assistente de Suplemento do Visual Studio é iniciado.
Escolha Avançar.
Na página Selecionar uma Linguagem de Programação, selecione a linguagem de programação que deseja usar para gravar o suplemento.
Dica
Este tópico usa o Visual C# para o código de exemplo.
Na página Selecionar um Aplicativo Host, selecione Visual Studio e desmarque Macros do Visual Studio.
Escolha Avançar.
Digite um nome e uma descrição para o suplemento na página Digite um Nome e uma Descrição.
Após o suplemento ser criado, seu nome e descrição são exibidos na lista de Suplementos disponíveis no Gerenciador de Suplementos. Adicione detalhes o suficiente na descrição do suplemento de modo que os usuários possam saber o que o suplemento faz, como funciona, e assim por diante.
Escolha Avançar.
Sobre o Escolher opções de suplemento página, selecione desejo que meu suplemento seja carregado quando o aplicativo host for iniciado.
Desmarque as caixas de seleção restantes.
Na página Escolhendo as informações de "Ajuda Sobre", você pode especificar se você deseja que informações sobre o suplemento sejam exibidas em uma caixa de diálogo Sobre. Se você quiser que as informações a serem exibidos, selecione o Sim, desejo que meu suplemento ofereça 'informações da caixa sobre' caixa de seleção.
As informações que podem ser adicionadas à caixa de diálogo Visual Studio Sobre incluem o número de versão, detalhes de suporte, dados de licenciamento e assim por diante.
Escolha Avançar.
As opções que você selecionou são exibidas na página Resumo para análise. Se você estiver satisfeito, escolha Concluir para criar o suplemento. Se desejar alterar algo, escolha o botão Voltar.
A nova solução e o projeto são criados, e o arquivo Connect.cs para o novo suplemento é exibido no Editor de Códigos.
Você adicionará código para o arquivo de Connect.cs após o seguinte procedimento que cria um controle de usuário que é referenciado por este projeto de WebPerfTestResultsViewerAddin.
Após um suplemento ser criado, é necessário registrá-lo com Visual Studio antes que possa ser ativado no Gerenciador de Suplementos. Você faz isso usando um arquivo XML que tem uma extensão de nome de arquivo .addin.
O arquivo .addin descreve as informações de que Visual Studio precisa para exibir o suplemento em Gerenciador de Suplementos. Quando o Visual Studio inicia, ele verifica o local do arquivo de .addin para todos os arquivos disponíveis de .addin. Se encontrar algum, lerá o arquivo XML e fornecerá ao Gerenciador de Suplementos as informações necessárias para iniciar o suplemento quando clicado.
O arquivo .addin é criado automaticamente quando você cria um suplemento usando o Assistente de Suplemento.
Para obter mais informações, consulte Add-In Registration.
Locais dos arquivos de suplemento
Duas cópias do arquivo .addin são criadas automaticamente pelo Assistente de Suplemento, como segue:
Local do arquivo de suplemento |
Local do arquivo .Dll |
Descrição |
---|---|---|
Pasta raiz do projeto \Documentos\Visual Studio 12\Projects\MyAddin1\MyAddin1\ |
Caminho local (MyAddin1.dll) |
Usado para implantação de projeto do suplemento. Incluído no projeto para facilitar a edição e tem o caminho local para a implantação de XCopy-style. |
Pasta do suplemento \Documentos\Visual Studio 12\Addins\ - ou - Compartilhada local documentos\Addins\ |
Pasta de depuração do projeto (Por exemplo, \Documentos\Visual Studio 12 Projects\MyAddin1\MyAddin1\bin\) |
Usado para executar o suplemento no ambiente de depuração. Deve sempre apontar para o caminho de saída da configuração da compilação atual. |
Criar um projeto de Biblioteca de Controle do Windows Forms
O suplemento do Visual Studio criado no procedimento anterior faz referência a um projeto s um projeto de Biblioteca de Controle Windows Forms para criar uma instância de uma classe UserControl.
Para obter mais informações, consulte Controles de Windows Forms.
Para criar um controle a ser usado no Visualizador de resultados de testes na Web
No Solution Explorer, clique com botão direito a solução, escolha Add e, em seguida, selecione novo projeto.
A caixa de diálogo Novo Projeto é exibida.
Em modelos instalados, expanda Visual Basic ou Visual C# e selecione Windows.
Dica
Este tópico usa o Visual C# para o código de exemplo.
Na lista de modelos de projeto, selecione Biblioteca de Controle do Windows Forms.
Em Nome, digite um nome para o suplemento. Por exemplo, WebPerfTestResultsViewerControl.
Escolha OK.
O projeto WebPerfTestResultsViewerControl da biblioteca de controle Windows Forms é adicionado no Gerenciador de Soluções e UserControl1.cs é exibido no modo de design.
Na caixa de ferramentas, arraste um DataGridView para a superfície de userControl1.
Clique no glifo de marca de ação (
) no canto superior direito do DataGridView e siga estas etapas:
Escolha Encaixar no Recipiente Pai.
Desmarque as caixas de seleção de Habilitar Inclusão, Habilitar Edição, Habilitar Exclusão e Habilitar Reorganização de Colunas.
Escolha Adicionar Coluna.
A caixa de diálogo Adicionar Coluna é exibida.
Na lista suspensa Tipo, selecione DataGridViewTextBoxColumn.
Desmarque o texto "Coluna1" em Texto do cabeçalho.
Escolha Adicionar.
Escolha Fechar.
Na janela Propriedades, altere a propriedade (Nome) do DataGridView para resultControlDataGridView.
Na superfície de design, clique com o botão direito e selecione Exibir código.
O arquivo UserControl1.cs é exibido no Editor de Códigos.
Altere o nome da classe instanciada UserControl de UserContro1 para resultControl:
namespace WebPerfTestResultsViewerControl { public partial class resultControl : UserControl { public resultControl() { InitializeComponent(); }
No próximo procedimento, você adicionará código ao arquivo Connect.cs do projeto WebPerfTestResultsViewerAddin que fará referência à classe resultControl.
Você irá adicionar qualquer código adicional para o arquivo de Connect.cs posteriormente.
Adicionar código ao WebPerfTestResultsViewerAddin
Para adicionar um código ao Suplemento do Visual Studio para estender o Visualizador de resultados de testes na Web
No Gerenciador de Soluções, clique com o botão direito no nó de Referências no projeto WebPerfTestResultsViewerAddin e selecione Adicionar Referência.
Na caixa de diálogo Adicionar Referência, clique na guia .NET.
Role par baixo e selecione Microsoft.VisualStudio.QualityTools.WebTestFramework e System.Windows.Forms.
Escolha OK.
Clique com o botão direito no nó Referências novamente e selecione Adicionar Referência.
Na caixa de diálogo Adicionar Referência, clique na guia Procurar.
Escolha a lista suspensa de Examinar em e navegue até %ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies e selecione o arquivo Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll.
Escolha OK.
Clique com o botão direito no nó de projeto WebPerfTestResultsViewerAddin e selecione Adicionar Referência.
Na caixa de diálogo Adicionar Referência, clique na guia Projetos.
Em Nome do Projeto, selecione o projeto WebPerfTestResultsViewerControl e escolha OK.
Se o arquivo Connect.cs ainda não estiver aberto, no Gerenciador de Soluções, clique com o botão direito do mouse no arquivo Connect.cs no projeto de WebPerfTestResultsViewerAddin e selecione Exibir Código.
No arquivo Connect.cs, adicione as seguintes instruções Using:
using System.IO; using System.Windows.Forms; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.LoadTesting; using Microsoft.VisualStudio.TestTools.WebTesting; using WebPerfTestResultsViewerControl;
Role para baixo até o fim do arquivo do arquivo Connect.cs. Você precisa adicionar uma lista de GUIDs para UserControl caso mais que uma instância do visualizador de resultados de teste de desempenho da Web é aberta. Você adicionará código posteriormente usando esta lista.
Uma segunda lista de cadeia de caracteres é usada no método OnDiscconection que você codificará posteriormente.
private DTE2 _applicationObject; private AddIn _addInInstance; private Dictionary<Guid, List<UserControl>> m_controls = new Dictionary<Guid, List<UserControl>>(); private List<string> temporaryFilePaths = new List<string>();
O arquivo Connect.cs cria uma instância de classe chamada Connect da classe IDTExtensibility2 e também inclui alguns métodos para implementar o suplemento Visual Studio. Um dos métodos é o método de OnConnection, que recebe notificação que o suplemento está sendo carregado. No método OnConnection, você usará a classe LoadTestPackageExt para criar seu pacote de extensibilidade para o Visualizador de Resultados de Teste de Desempenho na Web. Adicione o seguinte código ao método OnConnection:
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Create a load test packge extensibility class. LoadTestPackageExt loadTestPackageExt = _applicationObject.GetObject("Microsoft.VisualStudio.TestTools.LoadTesting.LoadTestPackageExt") as LoadTestPackageExt; // Process open windows. foreach (WebTestResultViewer webTestResultViewer in loadTestPackageExt.WebTestResultViewerExt.ResultWindows) { WindowCreated(webTestResultViewer); } // Create event handlers. loadTestPackageExt.WebTestResultViewerExt.WindowCreated += new EventHandler<WebTestResultViewerExt.WindowCreatedEventArgs>(WebTestResultViewerExt_WindowCreated); loadTestPackageExt.WebTestResultViewerExt.WindowClosed += new EventHandler<WebTestResultViewerExt.WindowClosedEventArgs>(WebTesResultViewer_WindowClosed); loadTestPackageExt.WebTestResultViewerExt.SelectionChanged += new EventHandler<WebTestResultViewerExt.SelectionChangedEventArgs>(WebTestResultViewer_SelectedChanged); }
Adicione o seguinte código à classe conectar para criar o método WebTestResultViewerExt_WindowCreated para o manipulador de eventos loadTestPackageExt.WebTestResultViewerExt.WindowCreated que você adicionou no método OnConnection e para o método WindowCreated que o método WebTestResultViewerExt_WindowCreated chama.
void WebTestResultViewerExt_WindowCreated(object sender, WebTestResultViewerExt.WindowCreatedEventArgs e) { // New control added to new result viewer window. WindowCreated(e.WebTestResultViewer); } private void WindowCreated(WebTestResultViewer viewer) { // Instantiate an instance of the resultControl referenced in the WebPerfTestResultsViewerControl project. resultControl resultControl = new resultControl(); // Add to the dictionary of open playback windows. System.Diagnostics.Debug.Assert(!m_controls.ContainsKey(viewer.TestResultId)); List<UserControl> userControls = new List<UserControl>(); userControls.Add(resultControl); // Add Guid to the m_control List to manage Result viewers and controls. m_controls.Add(viewer.TestResultId, userControls); // Add tabs to the playback control. resultControl.Dock = DockStyle.Fill; viewer.AddResultPage(new Guid(), "Sample", resultControl); }
Adicione o seguinte código à classe conectar para criar o método WebTestResultViewer_SelectedChanged para o manipulador de eventos loadTestPackageExt.WebTestResultViewerExt.SelectionChanged que você adicionou no método OnConnection:
void WebTestResultViewer_SelectedChanged(object sender, WebTestResultViewerExt.SelectionChangedEventArgs e) { foreach (UserControl userControl in m_controls[e.TestResultId]) { // Update the userControl in each result viewer. resultControl resultControl = userControl as resultControl; if (resultControl != null) // Call the resultControl's Update method (This will be added in the next procedure). resultControl.Update(e.WebTestRequestResult); } }
Adicione o seguinte código à classe conectar para criar o método WebTesResultViewer_WindowClosed para o manipulador de eventos loadTestPackageExt.WebTestResultViewerExt.WindowClosed que você adicionou no método OnConnection:
void WebTesResultViewer_WindowClosed(object sender, WebTestResultViewerExt.WindowClosedEventArgs e) { if (m_controls.ContainsKey(e.WebTestResultViewer.TestResultId)) { m_controls.Remove(e.WebTestResultViewer.TestResultId); } }
Agora que o código foi concluído para o suplemento do Visual Studio, você precisa adicionar o método de atualização para o resultControl no projeto WebPerfTestResultsViewerControl.
Adicionar código ao WebPerfTestResultsViewerControl
Para obter mais informações, consulte Noções básicas sobre o desenvolvimento de controle dos Windows Forms.
Para adicionar código ao controle de usuário
No Gerenciador de Soluções, clique com o botão direito no nó de projeto WebPerfTestResultsViewerControl e selecione Propriedades.
Selecione o aplicativo guia e, em seguida, escolha o Target framework lista suspensa e selecione .NET Framework 4 e fechar as propriedades.
Isso é necessário para oferecer suporte às referências de DLL necessárias para estender o Visualizador de Resultados de Teste de Desempenho na Web.
No Gerenciador de Soluções, no projeto WebPerfTestResultsViewerControl, clique com o botão direito no nó Referências e selecione Adicionar Referência.
Na caixa de diálogo Adicionar Referência, clique na guia .NET.
Role para baixo e selecione Microsoft.VisualStudio.QualityTools.WebTestFramework.
Escolha OK.
No arquivo UserControl1.cs, adicione as seguintes instruções Using:
using Microsoft.VisualStudio.TestTools.WebTesting; using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
Adicione o método de atualização que é chamado e passado a um WebTestRequestResult do método WebPerfTestResultsViewerAddin WebTestResultViewer_SelectedChanged no arquivo de Connect.cs. O método Update preenche a Exibição em Grade de Dados com várias propriedades passadas a ele no WebTestRequestResult.
public void Update(WebTestRequestResult WebTestResults) { // Clear the DataGridView when a request is selected. resultControlDataGridView.Rows.Clear(); // Populate the DataGridControl with properties from the WebTestResults. this.resultControlDataGridView.Rows.Add("Request: " + WebTestResults.Request.Url.ToString()); this.resultControlDataGridView.Rows.Add("Response: " + WebTestResults.Response.ResponseUri.ToString()); foreach (RuleResult ruleResult in WebTestResults.ExtractionRuleResults) { this.resultControlDataGridView.Rows.Add("Extraction rule results: " + ruleResult.Message.ToString()); } foreach (RuleResult ruleResult in WebTestResults.ValidationRuleResults) { this.resultControlDataGridView.Rows.Add("Validation rule results: " + ruleResult.Message.ToString()); } foreach (WebTestError webTestError in WebTestResults.Errors) { this.resultControlDataGridView.Rows.Add("Error: " + webTestError.ErrorType.ToString() + " " + webTestError.ErrorSubtype.ToString() + " " + webTestError.ExceptionText.ToString()); } }
Compilar a solução WebPerfTestResultsViewerAddin
Para compilar a solução
- No menu Compilar, selecione Compilar Solução.
Registrar o suplemento WebPerfTestResultsViewerAddin
Para registrar o suplemento usando o Gerenciador de Suplementos
No menu de Ferramentas, selecione Gerenciador de Suplementos.
A caixa de diálogo Gerenciador de Suplementos é exibida.
Marque a caixa de seleção para o suplemento WebPerfTestResultsViewerAddin na coluna Suplementos Disponíveis e desmarque as caixas de seleção sob as colunas Inicialização e Linha de Comando.
Escolha OK.
Para obter mais informações, consulte How to: Control Add-Ins By Using the Add-In Manager.
Executar o teste de desempenho na Web usando a compilação do suplemento WebPerfTestResultsViewerAddin
Para executar o novo suplemento VS para o Visualizador de resultados de testes na Web
Execute seu teste de desempenho na Web e você verá a nova guia do suplemento WebPerfTestResultsViewerAddin denominado Amostra, exibida no Visualizador de Resultados de Teste de Desempenho na Web.
Escolha a guia para ver as propriedades apresentadas no DataGridView.
Segurança do .NET Framework
Para melhorar a segurança impedindo que suplementos mal-intencionados ativem automaticamente, Visual Studio fornece configurações em uma página de Opções de Ferramentas chamada Segurança de macros/suplemento.
Além disso, esta página de opções permite que você especifique as pastas na quais o Visual Studio pesquisa os arquivos de registro .AddIn. Isso melhora a segurança, permitindo que você limite os locais onde os arquivos de registro .AddIn podem ser lidos. Isso ajuda a impedir que arquivos .AddIn mal-intencionados sejam usados acidentalmente.
Configurações de Segurança do Suplemento
As configurações de Caixa de diálogo Segurança de Suplemente, Ambiente, Opções que se relacionam ao suplemento segurança são as seguintes:
Permite que componentes do suplemento sejam carregados. Selecionado por padrão. Quando selecionado, suplementos tem a permissão para carregar em Visual Studio. Quando não selecionados, os suplementos são proibidos de carregarem em Visual Studio.
Permite que componentes do suplemento sejam carregados a partir de um URL. Não selecionado por padrão. Quando selecionados, os suplementos tem permissão para serem carregados de sites externos. Quando não selecionados, os suplementos remotos são proibidos de carregarem em Visual Studio. Se um suplemento não puder ser carregado por algum motivo, ele não poderá ser carregado da Web. Essa configuração controla somente o carregamento da DLL do suplemento. Os arquivos de registro do suplemento devem estar sempre localizados no sistema local.
Para obter mais informações, consulte Add-In Security.
Consulte também
UserControl
Microsoft.VisualStudio.TestTools.LoadTesting
Microsoft.VisualStudio.TestTools.WebTesting
Microsoft.VisualStudio.TestTools.WebTesting.Rules
UserControl
DataGrid
Criar código personalizado e plug-ins para testes de carga
Add-In Registration
Automation Object Model Chart
How to: Control Add-Ins By Using the Add-In Manager
Walkthrough: Debugging an Add-In Project
Propriedades em controles dos Windows Forms
Eventos em controles dos Windows Forms
Desenvolvendo controles dos Windows Forms personalizados com o .NET Framework