Поделиться через


Практическое руководство. Создание надстройки Visual Studio для средства просмотра результатов веб-тестов производительности

Пользовательский интерфейс средства просмотра результатов веб-тестов производительности можно расширить с помощью следующих пространств имен:

Кроме того, необходимо добавить ссылку на библиотеку DLL LoadTestPackage, находится в папке %ProgramFiles% \ Microsoft Visual Studio 11,0 \ Common7 \ IDE \ PrivateAssemblies среды разработки.

  • Чтобы расширить интерфейс средства просмотра результатов веб-тестов производительности, необходимо создать надстройку Visual Studio и добавить пользовательский элемент управления.Ниже описано, как создать надстройку и пользовательский элемент управления, а также как реализовать классы, необходимые для расширения пользовательского интерфейса средства просмотра результатов веб-тестов производительности.

Требования

  • Visual Studio Ultimate

Создание или открытие решения, содержащего веб-приложение ASP.NET и проект веб-сайта и производительность нагрузочного теста

Подготовка к расширению средства просмотра результатов веб-тестов производительности

Создание надстройки Visual Studio

Надстройка представляет собой скомпилированную библиотеку DLL, запускаемую в интегрированной среде разработки Visual Studio.Компиляция обеспечивает защиту интеллектуальной собственности и повышает производительность.Хотя надстройки можно создавать вручную, удобнее делать это с помощью мастера надстроек.Мастер создает функциональную, но простую надстройку, которая может быть запущена сразу же после создания.После создания базовой пустой программы мастером надстроек ее можно настраивать и добавлять в нее код.

Мастер надстроек позволяет задавать для надстройки отображаемое имя и описание.Они появятся в диалоговом окне Диспетчер надстроек.Кроме того, можно указать, чтобы мастер создавал код, добавляющий в меню Сервис команду для открытия надстройки.Можно также выбрать пользовательское диалоговое окно О программе, которое будет отображаться для надстройки.После завершения работы мастера будет создан новый проект, имеет только один класс, который реализует надстройку.Этот класс имеет имя Connect.

Диспетчер надстроек понадобится в конце раздела.

Дополнительные сведения см. в разделе Создание надстроек и мастеров.

Чтобы создать надстройку с помощью мастера надстроек

  1. В обозревателе решений щелкните решение правой кнопкой мыши, выберите Добавить и затем выберите Создать проект.

    Откроется диалоговое окно Новый проект.

  2. В разделе Установленные шаблоны разверните узел Другие типы проектов и выберите Расширение среды.

  3. В списке шаблонов выберите Надстройка Visual Studio.

  4. В поле "Имя" введите имя надстройки.Например, WebPerfTestResultsViewerAddin.

  5. Нажмите кнопку ОК.

    Будет запущен мастер надстроек Visual Studio.

  6. Выберите Далее.

  7. На странице Выбрать язык программирования выберите язык программирования, который предполагается использовать для написания надстройки.

    ПримечаниеПримечание

    Примеры кода в этом разделе написаны на языке Visual C#.

  8. На странице Выберите ведущее приложение, select Visual Studio и снимите флажок Макросы Visual Studio.

  9. Выберите Далее.

  10. Введите имя и описание надстройки на странице Ввести имя и описание.

    После создания надстройки ее имя и описание выводятся в списке Имеющиеся надстройки диалогового окна Мастер надстроек.Создайте достаточно подробное описание надстройки так, чтобы пользователи могли узнать, что делает надстройка, как она работает и так далее.

  11. Выберите Далее.

  12. На странице Выберите параметры надстроек выберите Загружать надстройку во время запуска ведущего приложения.

  13. Снимите оставшиеся флажки.

  14. На странице Выберите "Справка, О программе" можно указать, должна ли информация о надстройке отображаться в диалоговом окне О программе.Если эта информация должна отображаться, установите флажок Да, пусть надстройка содержит диалоговое окно "О программе".

    В сведениях, отображаемых в диалоговом окне О программе в Visual Studio, можно указать номер версии, сведения о поддержке, данные о лицензии и т. д.

  15. Выберите Далее.

  16. Выбранные параметры будут показаны на странице Сводка для проверки.Если все верно, нажмите кнопку Готово, чтобы создать надстройку.Если необходимо что-либо изменить, нажмите кнопку Back.

    Будут созданы проект и решение, а файл Connect.cs новой надстройки появится в редакторе кода.

    Код в файл Connect.cs будет добавлен после выполнения следующей процедуры, создающей пользовательский элемент управления, ссылка на который будет содержаться в проекте WebPerfTestResultsViewerAddin.

После создания надстройки ее необходимо зарегистрировать в Visual Studio, прежде чем ее можно будет активировать, используя Диспетчер надстроек.Для этого используется XML-файл с расширением имени файла ADDIN.

Этот файл с расширением ADDIN содержит описание сведений, необходимых Visual Studio для отображения надстройки в окне Диспетчер надстроек.При запуске Visual Studio выполняется поиск расположения файлов с расширением ADDIN на предмет доступных файлов с расширением ADDIN.В случае нахождения такого файла XML-файл считывается, и в окно Диспетчер надстроек передаются сведения, необходимые для запуска надстройки по щелчку мыши.

Файл с расширением ADDIN создается автоматически вместе с надстройкой мастером надстроек.

Дополнительные сведения см. в разделе Регистрация надстройки.

Ff458704.collapse_all(ru-ru,VS.110).gifДобавление расположений файлов

Мастер надстроек автоматически создает две копии файла с расширением ADDIN следующим образом.

Расположение файла с расширением ADDIN

Расположение DLL-файла

Описание

Корневая папка проекта

\Documents\Visual Studio 11\Projects\MyAddin1\MyAddin1\

Локальный путь (MyAddin1.dll)

Используется для развертывания проекта надстройки.Включается в проект для простоты редактирования и имеет локальный путь для развертывания в стиле XCopy.

Папка надстройки

\Documents\Visual Studio 11\Addins\

-или-

расположение_общих_документов\Addins\

Папка отладки проекта

(Например, \Documents\Visual Studio 11

Projects\MyAddin1\MyAddin1\bin\)

Используется для запуска надстройки в среде отладки.Должна всегда указывать на выходной путь текущей конфигурации построения.

Создание проекта библиотеки элементов управления Windows Forms

Созданная выше надстройка Visual Studio ссылается на проект библиотеки элементов управления Windows Forms для создания экземпляра класса UserControl.

Дополнительные сведения см. в разделе Элементы управления Windows Forms.

Создание элемента управления, который будет использоваться в средстве просмотра результатов веб-тестов

  1. В обозревателе решений щелкните решение правой кнопкой мыши, выберите Добавить и затем выберите Создать проект.

    Откроется диалоговое окно Новый проект.

  2. В разделе Установленные шаблоны разверните узел Visual Basic или Visual C# и выберите Windows.

    ПримечаниеПримечание

    Примеры кода в этом разделе написаны на языке Visual C#.

  3. В списке шаблонов выберите пункт Библиотека элементов управления Windows Forms.

  4. В поле Имя введите имя надстройки.Например, WebPerfTestResultsViewerControl.

  5. Нажмите кнопку ОК.

    Проект библиотеки элементов управления Windows Forms WebPerfTestResultsViewerControl будет добавлен в обозреватель решений, а файл UserControl1.cs будет открыт в режиме конструктора.

  6. С панели элементов перетащите элемент DataGridView на форму userControl1.

  7. Щелкните глиф тега действий (Глиф смарт-тэга) в правом верхнем углу элемента управления DataGridView и выполните следующие действия.

    1. Выберите Закрепить в родительском контейнере.

    2. Снимите флажки Разрешить добавление, Разрешить изменение, Разрешить удаление и Разрешить изменение порядка столбцов.

    3. Выберите Добавить столбец.

      Откроется диалоговое окно Добавление столбца.

    4. В раскрывающемся списке Тип выберите вариант DataGridViewTextBoxColumn.

    5. Удалите текст "Column1" из поля Текст заголовка.

    6. Выберите Добавить.

    7. Выберите Закрыть.

  8. В окне "Свойства" измените свойство (Name) объекта DataGridView на resultControlDataGridView.

  9. Щелкните правой кнопкой мыши рабочую область конструирования и выберите команду Просмотреть код.

    В редакторе кода будет открыт файл UserControl1.cs.

  10. Измените имя созданного экземпляра класса UserControl с UserContro1 на resultControl:

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

    В следующей процедуре в файл Connect.cs проекта WebPerfTestResultsViewerAddin будет добавлен код, ссылающийся на класс resultControl.

    Позже в файл Connect.cs будет добавлен дополнительный код.

Добавление кода в файл WebPerfTestResultsViewerAddin

Добавление кода в надстройку Visual Studio для расширения средства просмотра результатов веб-тестов

  1. В обозревателе решений щелкните правой кнопкой мыши узел Ссылки в проекте WebPerfTestResultsViewerAddin и выберите команду Добавить ссылку.

  2. В диалоговом окне Добавить ссылку перейдите на вкладку .NET.

  3. Прокрутите список вниз и выберите Microsoft.VisualStudio.QualityTools.WebTestFramework и System.Windows.Forms.

  4. Нажмите кнопку ОК.

  5. Снова щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.

  6. В диалоговом окне Добавить ссылку перейдите на вкладку Обзор.

  7. Выберите раскрывающийся список для Поиск в и перейдите к папке %ProgramFiles% \ Microsoft Visual Studio 11,0 \ Common7 \ IDE \ PrivateAssemblies среда разработки и выделите файл Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll.

  8. Нажмите кнопку ОК.

  9. Щелкните правой кнопкой мыши узел проекта WebPerfTestResultsViewerAddin и выберите команду Добавить ссылку.

  10. В диалоговом окне Добавить ссылку перейдите на вкладку Проекты.

  11. В Имя проекта выберите проект WebPerfTestResultsViewerControl и выберите команду ОК.

  12. Если файл Connect.cs еще не открыт, в обозревателе решений щелкните правой кнопкой мыши файл Connect.cs в проекте WebPerfTestResultsViewerAddin и выберите команду Просмотреть код.

  13. Добавьте в файл 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. Прокрутите в конец файла Connect.cs.Если открыто более одного экземпляра средства просмотра результатов веб-тестов производительности, необходимо добавить список GUID для UserControl.Позже будет добавлен код, использующий этот список.

    Второй список строк используется в методе OnDiscconection, код которого будет написан позже.

            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. Файл Connect.cs создает экземпляр класса Connect из класса IDTExtensibility2, а также содержит некоторые методы, необходимые для реализации надстройки Visual Studio.Один из этих методов — OnConnection, который получает уведомление о том, что надстройка загружена.В методе OnConnection будет использоваться класс LoadTestPackageExt, чтобы создать пакет расширения для средства просмотра результатов веб-тестов производительности.Добавьте в метод 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. Добавьте следующий код в класс Connect, чтобы создать метод WebTestResultViewerExt_WindowCreated для обработчика событий loadTestPackageExt.WebTestResultViewerExt.WindowCreated, добавленного в метод OnConnection, и для метода WindowCreated, вызываемого методом 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. Добавьте следующий код в класс Connect, чтобы создать метод WebTestResultViewer_SelectedChanged для обработчика событий loadTestPackageExt.WebTestResultViewerExt.SelectionChanged, добавленного в метод 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. Добавьте следующий код в класс Connect, чтобы создать метод WebTesResultViewer_WindowClosed для обработчика событий loadTestPackageExt.WebTestResultViewerExt.WindowClosed, добавленного в метод OnConnection:

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

    После завершения создания кода надстройки для Visual Studio необходимо добавить метод Update в класс resultControl в проекте WebPerfTestResultsViewerControl.

Добавление кода в проект WebPerfTestResultsViewerControl

Дополнительные сведения см. в разделе Основы разработки элементов управления форм Windows Forms.

Добавление кода к элементу управления

  1. В обозревателе решений щелкните правой кнопкой мыши узел проекта WebPerfTestResultsViewerControl и выберите пункт Свойства.

  2. Выберите вкладку Приложение и выберите из раскрывающегося списка Целевая рабочая среда и выберите .NET Framework 4 и закройте свойства.

    Это требуется для поддержки ссылки на библиотеки DLL расширения, которые необходимы для просмотра результатов веб-теста производительности.

  3. В обозревателе решений в проекте WebPerfTestResultsViewerControl щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.

  4. В диалоговом окне Добавить ссылку выберите вкладку .NET.

  5. Прокрутите вниз и выберите Microsoft.VisualStudio.QualityTools.WebTestFramework.

  6. Нажмите кнопку ОК.

  7. Добавьте в файл UserControl1.cs следующие инструкции:

    using Microsoft.VisualStudio.TestTools.WebTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
    
  8. Добавьте метод Update, который вызывается методом WebTestResultViewer_SelectedChanged WebPerfTestResultsViewerAddin в файле Connect.cs и принимает объект WebTestRequestResult.Метод Update заполняет DataGridView различными свойствами, переданными в объекте 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());
                }
            }
    

Построение решения WebPerfTestResultsViewerAddin

Построение решения

  • В меню Построение выберите команду Построить решение.

Регистрация надстройки WebPerfTestResultsViewerAddin

Регистрация надстройки с помощью диспетчера надстроек

  1. В меню Сервис, выберите Диспетчер надстроек.

  2. Откроется диалоговое окно Диспетчер надстроек.

  3. В столбце Имеющиеся надстройки установите флажок для надстройки WebPerfTestResultsViewerAddin и снимите флажки в столбцах Запуск и Командная строка.

  4. Нажмите кнопку ОК.

    Дополнительные сведения см. в разделе Практическое руководство. Управление надстройками с помощью диспетчера надстроек.

Запуск веб-теста производительности с использованием построения надстройки WebPerfTestResultsViewerAddin

Запуск новой надстройки Visual Studio для средства просмотра результатов веб-тестов

  1. Запустите веб-тест производительности; при этом в средстве просмотра веб-тестов производительности появится вкладка надстройки WebPerfTestResultsViewerAddin, имеющая название Sample.

  2. Откройте вкладку, чтобы увидеть свойства, отображаемые в DataGridView.

Безопасность

Для повышения безопасности за счет предотвращения автоматической активации вредоносных надстроек в Visual Studio на странице Сервис -> Параметры имеются параметры Безопасность надстроек и макросов.

Кроме того, на странице "Параметры" можно указать, в каких папках Visual Studio осуществляет поиск ADDIN-файлов регистрации.Это повышает безопасность, путем ограничения числа папок, из которых может осуществляться чтение ADDIN-файлов регистрации.Это помогает предотвратить злонамеренные файлы с расширением ADDIN из непреднамеренно использоваться.

Параметры безопасности надстроек

Безопасность надстроек в окне Add-in/Macros Security, Environment, Options Dialog Box определяется следующими параметрами:

  • Компоненты надстройки разрешения на загрузку. По умолчанию выбрано.Если этот параметр выбран, загрузка надстроек в Visual Studio разрешена.Если этот параметр не выбран, загрузка надстроек в Visual Studio запрещена;

  • Компоненты надстройки разрешения, чтобы загрузить из URL-адреса. Не выбран по умолчанию.Если этот параметр выбран, загрузка надстроек с внешних веб-сайтов разрешена.Если этот параметр не выбран, загрузка удаленных надстроек в Visual Studio запрещена.Если по некоторым причинам надстройка не загружается, ее невозможно загрузить из Интернета.Этот параметр влияет только на загрузку DLL надстройки.Файлы регистрации ADDIN всегда должны быть расположены в локальной системе.

  • Дополнительные сведения см. в разделе Безопасность надстроек.

См. также

Задачи

Практическое руководство. Управление надстройками с помощью диспетчера надстроек

Пошаговое руководство. Отладка проекта надстройки

Ссылки

UserControl

Microsoft.VisualStudio.TestTools.LoadTesting

Microsoft.VisualStudio.TestTools.WebTesting

Microsoft.VisualStudio.TestTools.WebTesting.Rules

UserControl

DataGrid

Основные понятия

Регистрация надстройки

Диаграмма модели объектов автоматизации

События элементов управления Windows Forms

Другие ресурсы

Создание и применение пользовательских подключаемых модулей для нагрузочных тестов и веб-тестов производительности

Свойства элементов управления Windows Forms

Разработка пользовательских элементов управления Windows Forms в .NET Framework