Cómo: Crear un complemento de Visual Studio para el visor de resultados de pruebas de rendimiento web
Este tema se aplica a:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
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 a LoadTestPackage.dll que se encuentra en la carpeta %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies.
- Para extender la interfaz de usuario del Visor de resultados de pruebas de rendimiento web, debe crear un complemento y un control de usuario 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.
Crear o abrir una solución que contiene una aplicación web ASP.NET y un proyecto de prueba
Para preparar la extensión del Visor de resultados de pruebas de rendimiento web
Cree o abra una solución no destinada a producción con la que pueda experimentar, que contenga una aplicación web ASP.NET y un proyecto de prueba con una o más pruebas de rendimiento web para la aplicación.
Nota
Puede crear una aplicación web ASP.NET y un proyecto de prueba que contenga las pruebas de rendimiento web siguiendo los procedimientos de Tutorial: Crear una aplicación Web simple y Tutorial: Registrar y ejecutar una prueba 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 Crear complementos y asistentes.
Para crear un complemento con el Asistente para complementos
En el Explorador de soluciones, haga clic con el botón secundario en la solución, haga clic en Agregar y, a continuación, seleccione Nuevo proyecto.
Aparecerá el cuadro de diálogo Nuevo proyecto.
En Plantillas instaladas, expanda Otros tipos de proyectos y seleccione Extensibilidad.
En la lista de plantillas, seleccione Complemento de Visual Studio.
En Nombre, escriba el nombre del complemento. Por ejemplo, WebPerfTestResultsViewerAddin.
Haga clic en Aceptar.
Se inicia el Asistente para complementos de Visual Studio.
Haga clic en Siguiente.
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.
En la página Seleccione una aplicación host, active Microsoft Visual Studio 2010 y desactive Macros de Microsoft Visual Studio 2010.
Haga clic en Siguiente.
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.
Haga clic en Siguiente.
En la página Elija las opciones del complemento, seleccione Me gustaría que se cargue al iniciar la aplicación host.
Desactive las casillas restantes.
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.
Haga clic en Siguiente.
Utilice la página Resumen para revisar las opciones seleccionadas en el asistente. Si está de acuerdo, haga clic en Finalizar para crear el complemento. Si desea cambiar algo, haga clic en 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 Registro de complementos.
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 2010\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 2010\Addins\ O bien Ubicación de documentos compartida\Addins\ |
Carpeta de depuración del proyecto (Por ejemplo, \ Documentos\Visual Studio 2010 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
En el Explorador de soluciones, haga clic con el botón secundario en la solución, haga clic en Agregar y, a continuación, seleccione Nuevo proyecto.
Aparecerá el cuadro de diálogo Nuevo proyecto.
En Plantillas instaladas, expanda Visual Basic o Visual C# y seleccione Windows.
Nota
En este tema se utiliza Visual C# para el código muestra.
En la lista de plantillas, seleccione Biblioteca de controles de Windows Forms.
En Nombre, escriba el nombre del complemento. Por ejemplo, WebPerfTestResultsViewerControl.
Haga clic en 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.
Desde el cuadro de herramientas, arrastre DataGridView a la superficie de diseño de userControl1.
Haga clic en el glifo () situado en la esquina superior derecha de DataGridView y siga estos pasos:
Haga clic en Acoplar en contenedor principal.
Desactive las casillas Habilitar acción de agregar, Habilitar edición, Habilitar eliminación y Habilitar reordenación de columnas.
Haga clic en Agregar columna.
Se muestra el cuadro de diálogo Agregar columna.
En la lista desplegable Nombre de tipo, seleccione DataGridViewTextBoxColumn.
Borre "Column1" de Texto del encabezado.
Haga clic en Agregar.
Haga clic en Cerrar.
En la ventana Propiedades, cambie la propiedad Nombre de DataGridView por resultControlDataGridView.
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.
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 prueba web
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.
En el cuadro de diálogo Agregar referencia, haga clic en la pestaña .NET.
Desplácese hacia abajo y seleccione Microsoft.VisualStudio.QualityTools.WebTestFramework y System.Windows.Forms.
Haga clic en Aceptar.
Haga clic con el botón secundario en el nodo Referencias y seleccione Agregar referencia.
En el cuadro de diálogo Agregar referencia, seleccione la pestaña Examinar.
Haga clic en la lista desplegable Buscar en y navegue a %ProgramFiles%\MicrosoftVisual Studio 10.0\Common7\IDE\PrivateAssemblies y seleccione el archivo Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll.
Haga clic en Aceptar.
Haga clic con el botón secundario en el nodo del proyecto WebPerfTestResultsViewerAddin y seleccione Agregar referencia.
En el cuadro de diálogo Agregar referencia, seleccione la ficha Proyectos.
En Nombre de proyecto, seleccione el proyecto WebPerfTestResultsViewerControl y haga clic en Aceptar.
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.
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;
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>();
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); }
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); }
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); } }
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
En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto WebPerfTestResultsViewerControl y, a continuación, seleccione Propiedades.
Seleccione la pestaña Aplicación y haga clic en la lista desplegable Versión de .NET Framework de destino y 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.
En el Explorador de soluciones, en el proyecto WebPerfTestResultsViewerControl, haga clic con el botón secundario en el nodo Referencias y seleccione Agregar referencia.
En el cuadro de diálogo Agregar referencia, haga clic en la pestaña .NET.
Desplácese y seleccione Microsoft.VisualStudio.QualityTools.WebTestFramework.
Haga clic en Aceptar.
Agregue las instrucciones siguientes al archivo UserControl1.cs:
using Microsoft.VisualStudio.TestTools.WebTesting; using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
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ú Generar, seleccione Generar solución.
Registrar el complemento WebPerfTestResultsViewerAddin
Para registrar el complemento mediante el Administrador de complementos
Seleccione Administrador de complementos en el menú Herramientas.
Se muestra el cuadro de diálogo Administrador de complementos.
Active la casilla del complemento WebPerfTestResultsViewerAddin en la columna Complementos disponibles y desactive las casillas bajo las columnas Inicio y Línea de comandos.
Haga clic en Aceptar.
Para obtener más información, vea Cómo: Controlar complementos con el Administrador de complementos.
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
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.
Haga clic en la pestaña para ver las propiedades de DataGridView.
Seguridad
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 Add-in/Macros Security, Environment, Options Dialog Box que se relaciona con la seguridad de los complementos es la siguiente:
Permitir la carga de componentes de complemento. 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 una dirección URL. No seleccionado 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 Seguridad de complementos.
Vea también
Tareas
Cómo: Controlar complementos con el Administrador de complementos
Tutorial: Depurar un proyecto de complemento
Referencia
Microsoft.VisualStudio.TestTools.LoadTesting
Microsoft.VisualStudio.TestTools.WebTesting
Microsoft.VisualStudio.TestTools.WebTesting.Rules
Conceptos
Gráfico del modelo de objetos de automatización
Eventos de los controles de formularios Windows Forms
Otros recursos
Crear y usar complementos personalizados para las pruebas de carga y de rendimiento web
Propiedades de los controles de formularios Windows Forms
Desarrollar controles personalizados de formularios Windows Forms con .NET Framework