Compartir a través de


Cómo: Crear un complemento de Visual Studio para el visor de resultados de pruebas de rendimiento web

 

Publicada: julio de 2016

Puede extender la interfaz de usuario para el Visor de resultados de pruebas de rendimiento web utilizando los siguientes espacios de nombres:

Además, necesita agregar una referencia al archivo DLL denominado LoadTestPackage que se encuentra en la carpeta %ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies.

  • Para extender la interfaz de usuario del Visor de resultados de pruebas de rendimiento web, debe crear un control de usuario y un complemento de Visual Studio. Los siguientes procedimientos explican cómo crear el complemento y el control de usuario, y cómo implementar las clases necesarias para extender la interfaz de usuario del Visor de resultados de pruebas de rendimiento web.

Requisitos

  • Visual Studio Enterprise

Crear o abrir una solución que contenga una aplicación web ASP.NET y un proyecto de prueba de carga y rendimiento web

Para preparar la extensión del Visor de resultados de pruebas de rendimiento web

Crear un complemento de Visual Studio

Un complemento es un archivo DLL compilado que se ejecuta dentro del entorno de desarrollo integrado (IDE) de Visual Studio. El compilador ayuda a proteger la propiedad intelectual y mejora el rendimiento. A pesar de que los complementos se pueden crear manualmente, es posible que resulte más sencillo utilizar el Asistente para complementos. Este asistente crea un complemento funcional, aunque básico, que se puede ejecutar inmediatamente después de haberlo creado. Una vez que el Asistente para complementos genere el marco de trabajo básico, puede agregar código y personalizarlo.

El Asistente para complementos le permite proporcionar un nombre para mostrar y una descripción para su complemento. Ambos aparecerán en el Administrador de complementos. Además, puede dejar que el asistente genere código que agrega al menú Herramientas un comando para abrir el complemento. También puede optar por mostrar un cuadro Acerca de personalizado para el complemento. Cuando se complete el asistente, aparecerá un proyecto nuevo con una sola clase que implementa el complemento. La clase se denomina Connect.

Utilizará el Administrador de complementos al final de este tema.

Para obtener más información, vea Creating Add-ins and Wizards.

Para crear un complemento con el Asistente para complementos

  1. En el Explorador de soluciones, haga clic con el botón secundario en la solución, elija Agregar y, a continuación, seleccione Nuevo proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

  2. En Plantillas instaladas, expanda Otros tipos de proyectos y seleccione Extensibilidad.

  3. En la lista de plantillas, seleccione Complemento de Visual Studio.

  4. En Nombre, escriba el nombre del complemento. Por ejemplo, WebPerfTestResultsViewerAddin.

  5. Elija Aceptar.

    Se inicia el Asistente para complementos de Visual Studio.

  6. Elija Siguiente.

  7. En la página Seleccione un lenguaje de programación, seleccione el lenguaje de programación que desee utilizar para escribir el complemento.

    Nota

    En este tema se utiliza Visual C# para el código muestra.

  8. En la página Seleccione una aplicación host, seleccione Visual Studio y desactive Macros de Visual Studio.

  9. Elija Siguiente.

  10. Especifique un nombre y una descripción del complemento en la página Especifique un nombre y una descripción.

    Una vez creado el complemento, su nombre y descripción se muestran en la lista Complementos disponibles del Administrador de complementos. Agregue bastantes detalles a la descripción del complemento para que los usuarios sepan lo que hace el complemento, cómo funciona, etc.

  11. Elija Siguiente.

  12. En la página Elija las opciones del complemento, seleccione Me gustaría que se cargue al iniciar la aplicación host.

  13. Desactive las casillas restantes.

  14. En la página Elección de información para Ayuda - Acerca de, especifique si desea que la información del complemento se muestre en el cuadro de diálogo Acerca de. Si desea mostrar la información, active la casilla Sí, me gustaría que mi complemento ofreciera información en el cuadro Acerca de.

    La información que se puede agregar al cuadro de diálogo Acerca de de Visual Studio incluye número de versión, detalles de compatibilidad, datos de la licencia, etc.

  15. Elija Siguiente.

  16. Utilice la página Resumen para revisar las opciones seleccionadas en el asistente. Si está de acuerdo, elija Finalizar para crear el complemento. Si desea cambiar algo, elija el botón Atrás.

    Se crea el nuevo proyecto y la solución, y se muestra el archivo Connect.cs para el complemento en el Editor de código.

    Agregará el código al archivo Connect.cs después del siguiente procedimiento, que crea un control de usuario al que hará referencia el proyecto WebPerfTestResultsViewerAddin.

Una vez creado un complemento, debe registrarlo con Visual Studio para poder activarlo en el Administrador de complementos. Para este fin se usa un archivo XML con extensión .addin.

Este archivo .addin describe la información que Visual Studio requiere para mostrar el complemento en el Administrador de complementos. Cuando se inicia Visual Studio, busca en la ubicación de archivos .addin los archivos .addin disponibles. Si encuentra alguno, lee el archivo XML y facilita al Administrador de complementos la información necesaria para iniciar el complemento cuando se haga clic en él.

El archivo .addin se crea automáticamente al crear un complemento mediante el Asistente para complementos.

Para obtener más información, vea Add-In Registration.

Ubicaciones de archivos de complemento

El Asistente para complementos crea automáticamente dos copias del archivo .addin, como se muestra a continuación:

Ubicación del archivo .addin

Ubicación del archivo .dll

Descripción

Carpeta raíz del proyecto

\Documentos\Visual Studio 12\Projects\MyAddin1\MyAddin1\

Ruta de acceso local (MyAddin1.dll)

Se utiliza para la implementación del proyecto de complemento. Se incluye en el proyecto para facilitar la edición y tiene la ruta de acceso local para la implementación de estilo XCopy.

Carpeta de complementos

\Documentos\Visual Studio 12\Addins\

O bien

Ubicación de documentos compartida\Addins\

Carpeta de depuración del proyecto

(Por ejemplo, \ Documentos\Visual Studio 12

Projects\MyAddin1\MyAddin1\bin \)

Se utiliza para ejecutar el complemento en el entorno de depuración. Siempre debe señalar la ruta de acceso de los resultados de la configuración de compilación actual.

Crear un proyecto de Biblioteca de controles de Windows Forms

El complemento Visual Studio creado en el procedimiento anterior hace referencia a un proyecto de Biblioteca de controles de Windows Forms para crear una instancia de una clase UserControl.

Para obtener más información, vea Controles de Windows Forms.

Para crear un control que se va a utilizar en el Visor de resultados de pruebas de rendimiento web

  1. En el Explorador de soluciones, haga clic con el botón secundario en la solución, elija Agregar y, a continuación, seleccione Nuevo proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

  2. En Plantillas instaladas, expanda Visual Basic oVisual C# y seleccione Windows.

    Nota

    En este tema se utiliza Visual C# para el código muestra.

  3. En la lista de plantillas, seleccione Biblioteca de controles de Windows Forms.

  4. En Nombre, escriba el nombre del complemento. Por ejemplo, WebPerfTestResultsViewerControl.

  5. Elija Aceptar.

    Se agrega el proyecto de biblioteca de controles de Windows Forms WebPerfTestResultsViewerControl al Explorador de soluciones y se muestra UserControl1.cs en modo de diseño.

  6. Desde el cuadro de herramientas, arrastre DataGridView a la superficie de diseño de userControl1.

  7. Haga clic en el glifo (Glifo de etiqueta inteligente) situado en la esquina superior derecha de DataGridView y siga estos pasos:

    1. Elija Acoplar en contenedor primario.

    2. Desactive las casillas Habilitar acción de agregar, Habilitar edición, Habilitar eliminación y Habilitar reordenación de columnas.

    3. Elija Agregar columna.

      Se muestra el cuadro de diálogo Agregar columna.

    4. En la lista desplegable Nombre de tipo, seleccione DataGridViewTextBoxColumn.

    5. Borre "Column1" de Texto del encabezado.

    6. Elija Agregar.

    7. Elija Cerrar.

  8. En la ventana Propiedades, cambie la propiedad Nombre de DataGridView por resultControlDataGridView.

  9. En la superficie de diseño, haga clic con el botón secundario y seleccione Ver código.

    El archivo UserControl1.cs se abre en el Editor de código.

  10. Cambie el nombre de clase UserControl con instancias de UserContro1 a resultControl:

    namespace WebPerfTestResultsViewerControl
    {
        public partial class resultControl : UserControl
        {
            public resultControl()
            {
                InitializeComponent();
            }
    

    En el procedimiento siguiente, agregará código al archivo Connect.cs del proyecto WebPerfTestResultsViewerAddin que hará referencia a la clase resultControl.

    Después agregará código adicional al archivo Connect.cs.

Agregar código a WebPerfTestResultsViewerAddin

Para agregar código al complemento de Visual Studio para extender el Visor de resultados de pruebas web

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nodo Referencias en el proyecto WebPerfTestResultsViewerAddin y haga clic en Agregar referencia.

  2. En el cuadro de diálogo Agregar referencia, elija la pestaña .NET.

  3. Desplácese hacia abajo y seleccione Microsoft.VisualStudio.QualityTools.WebTestFramework y System.Windows.Forms.

  4. Elija Aceptar.

  5. Haga clic con el botón secundario en el nodo Referencias y seleccione Agregar referencia.

  6. En el cuadro de diálogo Agregar referencia, elija la pestaña Examinar.

  7. Elija la lista desplegable Buscar en, navegue a %ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies y seleccione el archivo Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll.

  8. Elija Aceptar.

  9. Haga clic con el botón secundario en el nodo del proyecto WebPerfTestResultsViewerAddin y seleccione Agregar referencia.

  10. En el cuadro de diálogo Agregar referencia, elija la pestaña Proyectos.

  11. En Nombre de proyecto, seleccione el proyecto WebPerfTestResultsViewerControl y elija Aceptar.

  12. Si el archivo Connect.cs todavía no está abierto, en el Explorador de soluciones, haga clic con el botón secundario en el archivo Connect.cs del proyecto WebPerfTestResultsViewerAddin y seleccione Ver código.

  13. Agregue las instrucciones siguientes al archivo Connect.cs:

    using System.IO;
    using System.Windows.Forms;
    using System.Collections.Generic;
    using Microsoft.VisualStudio.TestTools.LoadTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting;
    using WebPerfTestResultsViewerControl;
    
  14. Desplácese a la parte inferior del archivo Connect.cs. Necesita agregar una lista de GUID para UserControl en caso de que haya más de una instancia del Visor de resultados de pruebas de rendimiento web abierta. Agregará código que utilizará después esta lista.

    Una segunda lista de cadenas se utiliza en el método OnDiscconection que codificará más adelante.

    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>();
    
  15. El archivo Connect.cs crea instancias de una clase denominada Connect de la clase IDTExtensibility2 y también incluye métodos para implementar el complemento Visual Studio. Uno de los métodos es el método OnConnection, al que se notifica que el complemento se está cargando. En el método OnConnection, utilizará la clase LoadTestPackageExt para crear el paquete de la extensibilidad para el Visor de resultados de pruebas de rendimiento web. Agregue el código siguiente al 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);
            }
    
  16. Agregue el siguiente código a la clase Connect para crear el método WebTestResultViewerExt_WindowCreated para el controlador de eventos loadTestPackageExt.WebTestResultViewerExt.WindowCreated que agregó en el método OnConnection y para el método WindowCreated, al que llama el método WebTestResultViewerExt_WindowCreated.

            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);
            }
    
  17. Agregue el siguiente código a la clase Connect para crear el método WebTestResultViewer_SelectedChanged para el controlador de eventos loadTestPackageExt.WebTestResultViewerExt.SelectionChanged que agregó en el 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);
        }
    }
    
  18. Agregue el siguiente código a la clase Connect para crear el método WebTesResultViewer_WindowClosed para el controlador de eventos loadTestPackageExt.WebTestResultViewerExt.WindowClosed que agregó en el método OnConnection:

    void WebTesResultViewer_WindowClosed(object sender, WebTestResultViewerExt.WindowClosedEventArgs e)
    {
        if (m_controls.ContainsKey(e.WebTestResultViewer.TestResultId))
        {
            m_controls.Remove(e.WebTestResultViewer.TestResultId);
        }
    }
    

    Ahora que el código se ha completado para el complemento de Visual Studio, necesita agregar el método Update a resultControl en el proyecto WebPerfTestResultsViewerControl.

Agregar código a WebPerfTestResultsViewerControl

Para obtener más información, vea Fundamentos de desarrollo de controles de formularios Windows Forms.

Para agregar código al control de usuario

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto WebPerfTestResultsViewerControl y, a continuación, seleccione Propiedades.

  2. Seleccione la pestaña Aplicación, elija Versión de .NET Framework de destino en la lista desplegable, seleccione .NET Framework 4 y cierre las Propiedades.

    Esto es necesario por compatibilidad con las referencias DLL que se necesitan para extender el Visor de resultados de pruebas de rendimiento web.

  3. En el Explorador de soluciones, en el proyecto WebPerfTestResultsViewerControl, haga clic con el botón secundario en el nodo Referencias y seleccione Agregar referencia.

  4. En el cuadro de diálogo Agregar referencia, haga clic en la pestaña .NET.

  5. Desplácese y seleccione Microsoft.VisualStudio.QualityTools.WebTestFramework.

  6. Elija Aceptar.

  7. Agregue las instrucciones siguientes al archivo UserControl1.cs:

    using Microsoft.VisualStudio.TestTools.WebTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
    
  8. Agregue el método Update que se llama y se pasa a WebTestRequestResult del método WebPerfTestResultsViewerAddin WebTestResultViewer_SelectedChanged en el archivo Connect.cs. El método Update rellena DataGridView con varias propiedades que se le pasan en 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 la solución WebPerfTestResultsViewerAddin

Para compilar la solución

  • En el menú Compilar, seleccione Compilar solución.

Registrar el complemento WebPerfTestResultsViewerAddin

Para registrar el complemento mediante el Administrador de complementos

  1. Seleccione Administrador de complementos en el menú Herramientas.

  2. Se muestra el cuadro de diálogo Administrador de complementos.

  3. Active la casilla del complemento WebPerfTestResultsViewerAddin en la columna Complementos disponibles y desactive las casillas bajo las columnas Inicio y Línea de comandos.

  4. Elija Aceptar.

    Para obtener más información, vea How to: Control Add-Ins By Using the Add-In Manager.

Ejecutar la prueba de rendimiento web utilizando el complemento WebPerfTestResultsViewerAddin

Para ejecutar el nuevo complemento para el Visor de resultados de pruebas de rendimiento web

  1. Ejecute la prueba de rendimiento web y verá la nueva pestaña del complemento WebPerfTestResultsViewerAddin en el Visor de resultados de pruebas de rendimiento web.

  2. Elija la pestaña para ver las propiedades de DataGridView.

Seguridad de .NET Framework

Para mejorar la seguridad evitando que complementos malintencionados se activen de forma automática, Visual Studio proporciona configuraciones en una página de Opciones de herramientas denominada Seguridad de macros/complementos.

Además, esta página de opciones permite especificar las carpetas en las que Visual Studio busca los archivos de registro .Addin. Esto mejora la seguridad porque permite limitar las ubicaciones donde se pueden leer los archivos de registro .AddIn. Esto ayuda a evitar que se utilicen involuntariamente los archivos .AddIn malintencionados.

Configuración de seguridad de complementos

La configuración del cuadro de diálogo Seguridad de complementos, entorno, opciones (Cuadro de diálogo) que se relaciona con la seguridad del complemento es la siguiente:

  • Permitir la carga de componentes de complementos.   Esta opción está seleccionada de forma predeterminada. Cuando se activa, es posible cargar complementos en Visual Studio. De lo contrario, no es posible cargar complementos en Visual Studio.

  • Permitir la carga de componentes de complementos desde direcciones URL.   Esta opción está seleccionada de forma predeterminada. Cuando se activa, es posible cargar complementos desde sitios web externos. De lo contrario, no es posible cargar complementos remotos en Visual Studio. Si un complemento no se puede cargar por alguna razón, no es posible cargarlo desde Internet. Esta configuración controla sólo la carga de los archivos DLL del complemento. Los archivos de registro .Addin siempre se deben ubicar en el sistema local.

  • Para obtener más información, vea Add-In Security.

Vea también

UserControl
Microsoft.VisualStudio.TestTools.LoadTesting
Microsoft.VisualStudio.TestTools.WebTesting
Microsoft.VisualStudio.TestTools.WebTesting.Rules
UserControl
DataGrid
Crear código y complementos personalizados para las pruebas 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
Propiedades de los controles de formularios Windows Forms
Eventos de los controles de formularios Windows Forms
Desarrollar controles personalizados de formularios Windows Forms con .NET Framework