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


Пошаговое руководство. Корреляция динамических параметров

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

Некоторые веб-сайты и приложения используют динамические параметры в одном или нескольких веб-запросах. Динамический параметр — это параметр, значение которого создается при каждом выполнении приложения пользователем. Динамические параметры могут приводить к ошибкам воспроизведения веб-тестов производительности, поскольку динамические значения чаще всего изменяются при каждом запуске теста. Поэтому невозможно воспроизвести записанные значения. Примером динамического параметра является идентификатор сеанса. Его значение изменяется каждые 5–30 минут.

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

  • Значения динамических параметров, установленные в значении Cookie. Модуль веб-тестов производительности автоматически обрабатывает эти параметры при воспроизведении.

  • Значения динамических параметров, установленные в скрытых полях на HTML-страницах, например состояние представления ASP.NET. Эти параметры автоматически обрабатываются средством записи веб-тестов производительности. Средство записи веб-тестов производительности добавляет в тест правила извлечения значений скрытых полей.

  • Значения динамических параметров, установленные в качестве строки запроса или параметров отправки форм. Эти параметры обрабатываются путем обнаружения динамических параметров после завершения теста.

Однако по-прежнему остаются некоторые виды динамических параметров, которые не обрабатываются автоматически. Для правильной обработки этих параметров можно добавить в веб-тесты производительности правила извлечения динамических параметров. Однако прежде чем добавить правило извлечения, необходимо определить место инициализации динамического параметра. В этом пошаговом руководстве показан способ выявления и исправления моделируемой ошибки необнаруживаемого динамического параметра идентификатора сеанса.

В этом пошаговом руководстве выполняются следующие задачи.

  • Создание веб-приложения ASP.NET.

  • Добавление страниц ASP.NET в приложение.

  • Добавление элементов управления в приложение.

  • Изменение кода ASP.NET.

  • Добавление кода программной части C#.

  • Добавление кода Javascript для создания необнаруживаемого динамического параметра.

  • Запись нового веб-теста производительности для приложения и регистрация обнаруженных динамических свойств ASP.NET.

  • Выполнение веб-теста производительности и регистрация наличия необнаруженного динамического параметра.

  • Использование быстрого поиска во время воспроизведения в средстве просмотра результатов веб-тестов производительности для выявления ошибки динамического параметра.

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

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

  • Повторное выполнение веб-теста производительности без ошибок.

Обязательные компоненты

  • Microsoft Visual Studio 2010 Ultimate.

Создание веб-приложения

Создание веб-приложения

  1. В меню Файл Visual Studio 2010 Ultimate выберите команду Создать, а затем — пункт Проект.

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

  2. В группе Установленные шаблоны разверните предпочтительный язык программирования и нажмите кнопку Интернет.

  3. В списке типов веб-проектов выберите Пустое веб-приложение ASP.NET.

  4. В поле "Имя" введите DynamicParameterSample.

  5. В поле Расположение введите имя папки, в которой будет создано веб-приложение.

  6. Установите флажок Создать каталог для решения.

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

  8. В меню Проект выберите пункт Добавить новый элемент.

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

  9. В списке элементов выберите Веб-форма.

  10. В текстовом поле Имя введите Querystring.aspx и нажмите кнопку Добавить.

Добавление элемента управления HiddenField на страницу Querystring.aspx

Добавление элемента управления HiddenField на страницу Querystring.aspx

  1. В обозревателе решений щелкните правой кнопкой мыши файл Querystring.aspx и выберите команду Открыть в конструкторе.

    Откроется пустая страница.

  2. Если панель элементов отсутствует, в меню Вид выберите пункт Панель элементов.

  3. Из группы Стандартные перетащите на страницу элемент управления HiddenField.

    Элемент управления HiddenField добавляется в рабочую область конструирования.

  4. Щелкните элемент управления HiddenField на странице и в категории Прочее окна "Свойства" измените параметр (ID) на значение HiddenFieldSessionID.

  5. В меню Файл выберите команду Сохранить все.

Добавление кода на страницу Querystring.aspx

Добавление кода на страницу Querystring.aspx

  1. Щелкните Исходный код в нижней части страницы Querystring.

    Откроется редактор кода, содержащий код ASP.NET для страницы Querystring.aspx.

  2. Добавьте следующий выделенный код ASP.NET и JavaScript, используемый для моделирования динамических параметров идентификатора сеанса:

    <head runat="server">
    <title>Javascript dynamic property correlation sample</title>
    <script type="text/javascript" language="javascript">
        <!--
            function jScriptQueryString() 
            {
                var Hidden = document.getElementById("HiddenFieldSessionID");
                var sessionId = Hidden.value;
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; 
            }
        //-->
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
             <a name="QuerystringHyperlink" href="ASPQuery.aspx?CustomQueryString=ASPQueryString___<%= Session.SessionID %>">Dynamic querystring generated by ASP.net</a>
             <br/>
             <br/>
             <a href="javascript:jScriptQueryString()">Dynamic querystring generated by javascript </a>
        </div>
        <asp:HiddenField ID="HiddenFieldSessionID" runat="server" />
        </form>
    </body>
    </html>
    
  3. Щелкните страницу Querystring правой кнопкой мыши и выберите команду Перейти к коду.

    Откроется редактор кода, содержащий код программной части Visual C# для страницы Querystring.aspx.

  4. Добавьте следующий выделенный код в метод Page_Load:

        public partial class Querystring : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Session.Add("Key", "Value");
                HiddenFieldSessionID.Value = Session.SessionID;
            }
        }
    
  5. В меню Файл выберите команду Сохранить все.

Добавление страницы ASPQuery.aspx, элементов управления и кода

Добавление страницы ASPQuery.aspx в веб-приложение

  1. В меню Проект выберите команду Добавить новый элемент.

  2. В диалоговом окне Добавление нового элемента щелкните шаблон Веб-форма, присвойте ему имя ASPQuery.aspx и нажмите кнопку Добавить.

  3. В меню Файл выберите команду Сохранить все.

Добавление элементов управления на страницу ASPQuery.aspx

  1. В обозревателе решений щелкните правой кнопкой мыши файл ASPQuery.aspx и выберите команду Открыть в конструкторе.

    Откроется пустая страница.

  2. Из группы Стандартные панели элементов перетащите на страницу элемент управления Label.

    Элемент управления Label добавляется в рабочую область конструирования.

  3. Щелкните элемент управления Label на странице и в категории Прочее окна "Свойства" измените параметр (ID) на значение IndexLabel.

  4. Из группы Стандартные панели элементов перетащите на страницу элемент управления HyperLink.

    Элемент управления HyperLink добавляется в рабочую область конструирования.

  5. Щелкните элемент управления HyperLink на странице и в категории Внешний вид окна "Свойства" измените параметр Text на значение Назад.

  6. В категории "Навигация" нажмите кнопку с многоточием () для свойства NavigationURL.

    Откроется диалоговое окно Выбор адреса URL.

  7. В списке страниц Содержимое папки выберите страницу Querystring.aspx и нажмите кнопку ОК.

  8. В меню Файл выберите команду Сохранить все.

Добавление кода программной части на страницу ASPQuery.aspx

  1. Щелкните страницу ASPQuery правой кнопкой мыши и выберите команду Перейти к коду.

    Откроется редактор кода, содержащий код программной части Visual C# для страницы ASPQuery.aspx.

  2. Добавьте следующий выделенный код в метод Page_Load:

    protected void Page_Load(object sender, EventArgs e)
            {
                int index;
                string qstring;
                string dateportion;
                string sessionidportion;
    
                qstring = Request.QueryString["CustomQueryString"];
                index = qstring.IndexOf("___");
                dateportion = qstring.Substring(0, index);
                index += 3;
                sessionidportion = qstring.Substring(index, qstring.Length - index);
    
                if (sessionidportion != Session.SessionID)
                {
                    Response.StatusCode = 401;
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found.";
                }
                else
                {
                    IndexLabel.Text += "Success.  Dynamic querystring parameter was found.";
                }
                IndexLabel.Text += "<br>\r\n";
            }
    
  3. В меню Файл выберите команду Сохранить все.

Добавление страницы JScriptQuery.aspx, элементов управления и кода

Добавление страницы JScriptQuery.aspx в веб-приложение

  1. В меню Проект выберите команду Добавить новый элемент.

  2. В диалоговом окне Добавление нового элемента щелкните шаблон Веб-форма, присвойте ему имя JScriptQuery.aspx и нажмите кнопку Добавить.

  3. В меню Файл выберите команду Сохранить все.

Добавление элементов управления на страницу JScriptQuery.aspx

  1. В обозревателе решений щелкните правой кнопкой мыши файл JScriptQuery.aspx и выберите команду Открыть в конструкторе.

    Откроется пустая страница.

  2. Из группы Стандартные панели элементов перетащите на страницу элемент управления Label.

    Элемент управления Label добавляется в рабочую область конструирования.

  3. Щелкните элемент управления Label на странице и в категории Прочее окна "Свойства" измените параметр (ID) на значение IndexLabel.

  4. Из группы Стандартные панели элементов перетащите на страницу элемент управления HyperLink.

    Элемент управления HyperLink добавляется в рабочую область конструирования.

  5. Щелкните элемент управления HyperLink на странице и в категории Внешний вид окна "Свойства" измените параметр Text на значение Назад.

  6. В категории "Навигация" нажмите кнопку с многоточием () для свойства NavigationURL.

    Откроется диалоговое окно Выбор адреса URL.

  7. В списке страниц Содержимое папки выберите страницу Querystring.aspx и нажмите кнопку ОК.

  8. В меню Файл выберите команду Сохранить все.

Добавление кода программной части на страницу JScriptQuery.aspx

  1. Щелкните страницу JScriptQuery правой кнопкой мыши и выберите команду Перейти к коду.

    Откроется редактор кода, содержащий код программной части Visual C# для страницы JScriptQuery.aspx.

  2. Добавьте следующий выделенный код в метод Page_Load:

    protected void Page_Load(object sender, EventArgs e)
            {
                int index;
                string qstring;
                string dateportion;
                string sessionidportion;
    
                qstring = Request.QueryString["CustomQueryString"];
                index = qstring.IndexOf("___");
                dateportion = qstring.Substring(0, index);
                index += 3;
                sessionidportion = qstring.Substring(index, qstring.Length - index);
    
                if (sessionidportion != Session.SessionID)
                {
                    Response.StatusCode = 401;
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found.";
                }
                else
                {
                    IndexLabel.Text += "Success.  Dynamic querystring parameter was found.";
                }
                IndexLabel.Text += "<br>\r\n";
            }
    
  3. В меню Файл выберите команду Сохранить все.

Тестирование веб-приложения вручную

Тестирование веб-приложения вручную

  1. В обозревателе решений щелкните правой кнопкой мыши файл Querystring.aspx и выберите команду Задать в качестве начальной страницы.

  2. Нажмите сочетание клавиш CTRL+F5, чтобы запустить веб-приложение в обозревателе. Откроется первая страница.

  3. Щелкните ссылку Dynamic querystring generated by ASP.NET.

  4. Откроется страница ASPQuery.aspx с сообщением: "Success. Dynamic querystring parameter found".

  5. Щелкните ссылку Назад.

  6. Щелкните ссылку Dynamic querystring generated by javascript.

  7. Откроется страница JScriptQuery.aspx с сообщением: "Success. Dynamic querystring parameter found".

  8. Щелкните ссылку Назад.

  9. Скопируйте адрес веб-приложения в буфер обмена или файл "Блокнота". Адрес может выглядеть следующим образом:

    https://localhost:<номер_порта>/Querystring.aspx.

    Этот URL-адрес потребуется позднее при создании веб-теста производительности в этом пошаговом руководстве.

Создание тестового проекта

Чтобы создать тестовый проект, выполните следующие действия

  1. В меню Файл последовательно выберите пункты Добавить и Новый проект.

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

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

  3. В списке шаблонов выберите Тестовый проект.

  4. В поле Имя введите DynamicParameterSampleTest.

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

    Примечание

    По умолчанию среда Visual Studio 2010 Ultimate добавляет файл модульного теста.Файл модульного теста не требуется для данного пошагового руководства,поэтому его можно удалить.Если его не удалить, он никак не повлияет на выполнение руководства.

Запись веб-теста производительности и автоматическое обнаружение динамического параметра для страницы ASPQuery.aspx

Запись веб-теста производительности

  1. В меню Тест выберите команду Новый тест.

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

  2. В диалоговом окне Добавить новый тест выберите Веб-тест производительности, задайте тесту имя DynamicParameterSampleApp.webtest и нажмите кнопку ОК.

    В проект добавляется новый файл веб-теста производительности DynamicParameterSampleApp.webtest, и в новом экземпляре Internet Explorer открывается средство записи веб-тестов производительности.

    Предупреждение

    Для правильной работы следующей процедуры необходимо выполнить эти шаги в приведенном порядке.

  3. В адресной строке браузера введите или вставьте адрес веб-приложения, скопированный на шаге процедуры Тестирование веб-приложения вручную, и нажмите клавишу ВВОД.

    Примечание

    Visual Studio 2010 Ultimate начнет отображать URL-адреса веб-теста производительности в средстве записи веб-тестов производительности по мере его записи.

  4. Щелкните ссылку Dynamic querystring generated by ASP.NET.

    Откроется страница ASPQuery.aspx с сообщением: "Success. Dynamic querystring parameter found".

  5. Щелкните ссылку Назад.

  6. Щелкните ссылку Dynamic querystring generated by javascript.

  7. Откроется страница JScriptQuery.aspx с сообщением: Success. Dynamic querystring parameter found.

  8. Щелкните ссылку Назад.

  9. Чтобы остановить запись, в окне средства записи веб-тестов производительности нажмите кнопку Остановить.

    В диалоговом окне будет выведено сообщение Обнаружение динамических параметров. Кроме того, будет отображен индикатор выполнения, показывающий состояние обнаружения параметров в полученных HTTP-ответах.

    Затем откроется диалоговое окно Преобразование динамических параметров в параметры веб-теста.

    Повышение уровня динамических параметров

    Поскольку пользовательский код, добавленный для динамического параметра в строке CustomQueryString на странице ASPQuery данной процедуры, был автоматически обнаружен, он отображается в списке этого диалогового окна.

    Динамический параметр для CustomQueryString на странице JScriptQuery не обнаружен автоматически, поскольку пользовательский код Javascript был добавлен на страницу Querystring.aspx в процедуре Добавление кода на страницу Querystring.aspx.

  10. Нажмите кнопку ОК, чтобы добавить правило извлечения на страницу Querystring.aspx.

    Открывается редактор веб-тестов производительности, в котором полностью развернут первый запрос для страницы Querystring.aspx. В нем отображается добавленное правило извлечения.

  11. В дереве запросов страницы ASPQuery.aspx полностью разверните второй запрос и обратите внимание, что значение параметра CustomQueryString привязано к правилу извлечения.

    Правило извлечения добавлено для динамического параметра

  12. В меню Файл выберите команду Сохранить DynamicParameterSampleApp.webtest, чтобы сохранить записанный веб-тест производительности.

Воспроизведение веб-теста производительности для создания ошибки необнаруженного динамического параметра

Воспроизведение веб-теста производительности

  1. В редакторе веб-тестов производительности щелкните Выполнить на панели инструментов, чтобы открыть средство просмотра результатов веб-тестов производительности.

  2. Обратите внимание, что четвертый запрос завершился ошибкой. Четвертым выполняется запрос страницы JScriptQuery.aspx.

    Необнаруженная ошибка динамического параметра

Выявление динамического параметра, вызывающего ошибку

Использование быстрого поиска в записи воспроизведения

  1. В средстве просмотра результатов веб-тестов производительности щелкните правой кнопкой мыши четвертый запрос. Четвертый запрос, выполняемый для страницы JScriptQuery.aspx, завершился неудачно из-за проблемы с динамическим параметром. Выберите команду Перейти к веб-тесту.

    Переход к веб-тесту

    Откроется редактор веб-тестов производительности, в котором будет выделен запрос страницы JScriptQuery.aspx.

  2. Полностью разверните узел запроса и обратите внимание, что часть "wy0zaykqadkoscuvoiqemofm" строки CustomQueryString, по всей видимости, является динамической: "CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm".

    Запрос редактора веб-тестов производительности с ошибкой

  3. Вернитесь в средство просмотра результатов веб-тестов производительности и выберите страницу JScriptQuery.aspx, на которой произошла ошибка.

  4. Перейдите на вкладку Запрос.

  5. Убедитесь, что снят флажок Показать необработанные данные.

  6. Прокрутите вниз столбец Имя до ячейки Параметры QueryString.

  7. Щелкните параметр CustomQueryString правой кнопкой мыши и выберите пункт Быстрый поиск.

    Изоляция динамического параметра

  8. В диалоговом окне Поиск значение этих параметров отображается в списке Найти.

    В данном случае из редактора веб-тестов производительности известно, что параметру CustomQueryString запроса страницы JScriptQuery.aspx присвоено значение jScriptQueryString___wy0zaykqadkoscuvoiqemofm и часть этой строки "wy0zaykqadkoscuvoiqemofm", вероятно, формируется динамически.

  9. Удалите из раскрывающегося списка Найти подозрительную часть строки поиска. Строка должна выглядеть следующим образом: "CustomQueryString=jScriptQueryString___".

    Диалоговое окно “Найти”

  10. Значения присваиваются динамическим параметрам в одном из запросов, который предшествует запросу, завершившемуся ошибкой. Поэтому установите флажок Искать назад и нажимайте кнопку Найти далее до тех пор, пока в панели Запрос не будет выделен предыдущий запрос страницы Querystring.aspx. Этот запрос должен появиться после троекратного нажатия кнопки Найти далее.

    Изоляция динамической ошибки с помощью поиска

    Как видно из рисунка и ранее реализованного кода Javascript, параметру строки CustomQueryString присвоено значение " jScriptQueryString___", к которому также добавляется значение, возвращаемое переменной sessionId.

            function jScriptQueryString() 
            {
                var Hidden = document.getElementById("HiddenFieldSessionID");
                var sessionId = Hidden.value;
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; 
            }
    

    Теперь стало известно, где возникает ошибка, и, следовательно, необходимо извлечь значение для sessionId. Однако извлеченное значение является простым текстом, поэтому необходимо продолжить обнаружение ошибки и попытаться найти строку, в которой отображается действительное значение sessionId. Анализируя код, можно увидеть, что значение переменной sessionId равно значению, возвращаемому параметром HiddenFieldSessionID.

  11. Выделите параметр HiddenFieldSessionID, щелкните его правой кнопкой мыши и выберите пункт Быстрый поиск.

  12. В диалоговом окне Поиск снимите флажок Искать назад и установите флажок Текущий запрос.

  13. Нажмите кнопку Найти далее.

    В следующей строке выделяется первое вхождение HiddenFieldSessionID. В ней также можно увидеть присваиваемое ему значение:

    <input type="hidden" name="HiddenFieldSessionID" id="HiddenFieldSessionID" value="0rvcxknlabd30xnbrjtuy11u" />
    

    Поиск HiddenFieldSessionID

    Обратите внимание, что возвращаемое значение не совпадает со строкой из исходной записи веб-теста производительности. В этом воспроизведение значение равно "0rvcxknlabd30xnbrjtuy11u", а в записи присутствовало значение "wy0zaykqadkoscuvoiqemofm". Возвращаемое значение не совпадает с исходной записью, поэтому создается ошибка.

Добавление правила извлечения из записанного воспроизведения

  1. На панели инструментов средства просмотра результатов веб-тестов производительности щелкните Записанный результат.

    Исходные записанные результаты веб-теста производительности отображаются на отдельной вкладке DynamicParameterSampleApp[Записано].

  2. Выберите третий запрос, если он еще не выбран. На предыдущем шаге была выявлена страница Querystringrequest.aspx.

  3. Перейдите на вкладку Ответ. Прокрутите окно вниз и выделите исходное значение динамического параметра "wy0zaykqadkoscuvoiqemofm", которое было обнаружено в предыдущей процедуре. Щелкните его правой кнопкой мыши и выберите команду Добавить правило извлечения.

    Добавление правила извлечения

    Открывается редактор веб-тестов производительности, в котором отображается новое правило извлечение, выбранное в запросе Querystring.aspx. Новому правилу извлечение присвоено значение "Param0".

    Откроется диалоговое окно Microsoft Visual Studio с сообщением о том, что для извлеченного текста, к которому привязывается параметр, найдено совпадение.

    Правило извлечения добавлено как param(0)

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

    Открывается диалоговое окно Поиск и замена в запросе, в котором отображается извлеченный текст wy0zaykqadkoscuvoiqemofm в раскрывающемся списке Найти и параметр {{Param0}} в раскрывающемся списке Заменить на.

    Поиск следующего Param0

  5. Нажмите кнопку Найти далее.

  6. Выделяется параметр QueryString CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm в запросе страницы JScriptQuery.aspx.

  7. Нажмите кнопку Заменить.

    Обновленная строка запроса, использующая Param(0)

  8. Параметр QueryString в запросе JScriptQuery.aspx обновляется новым параметром контекста: CustomQueryString=jScriptQueryString___{{Param0}}.

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

См. также

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

Обзор средства просмотра результатов веб-тестов производительности

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

Устранение проблем воспроизведения в средстве просмотра результатов веб-тестов производительности в веб-тестах производительности

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