prerequisites - microsoft · web viewдля просмотра доступных...

Post on 20-Jun-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Лабораторная работаТестирование веб-производительности и нагрузки в Visual Studio Ultimate 2013Lab version: 12.0.21005.1

Last updated: 12/17/2013

СОДЕРЖАНИЕ

РЕЗЮМЕ.................................................................................................................................................... 3

УПРАЖНЕНИЕ 1: СОЗДАНИЕ ТЕСТОВ ПРОИЗВОДИТЕЛЬНОСТИ ДЛЯ ВЕБ-ПРОЕКТОВ.............3

УПРАЖНЕНИЕ 2: НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ..........................................................................18

УПРАЖНЕНИЕ 3: ВЫПОЛНЕНИЕ И АНАЛИЗ НАГРУЗОЧНЫХ ТЕСТОВ.........................................33

РезюмеВ этой лабораторной работе вы познакомитесь с возможностями по тестированию нагрузки и производительности веб-проектов в Visual Studio Ultimate 2013. Вы изучите эту тему на примере компании, чьей целью является моделирование и анализ производительности с некоторым количеством одновременно находящихся в системе пользователей, что включает в себя определение тестов производительности (отображающих пользователей, ходящих по сайту и заказывающих продукты), тестов нагрузки и анализа результатов тестов.

Prerequisites

Для выполнения лабораторной работы вам понадобится виртувальная машина с Visual Studio 2013. Подробнее про то, где загрузить и как ее использовать, здесь . Эта лабораторная работа требовательна к ресурсам, поэтому выделите максимально возможное количество ресурсов RAM & CPU для виртуальной машины.

УпражненияЭта лабораторная работа включает в себя следующие упражнения:

1. Создание тестов производительности для веб-проектов

2. Нагрузочное тестирование

3. Выполнение и анализ нагрузочных тестов

Примерное время выполнения лабораторной работы: 60 минут.

1: Упражнение создание тестов -производительности для веб

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

1. Войдите под аккаунтом Adam (VSALM\Adam). Пароль: P2ssw0rd.

2. Запустите Visual Studio 2013.

3. Нажмите на File | New | Project….

4. Выберите шаблон Web Performance and Load Test Project в Visual C# | Test, отключите опцию «add to source control» и нажмите на OK.

Изображение 1Создание теста нагрузки

5. Будет создан проект со стандартными настройками тестов и единственным файлом с определением одного веб-теста WebTest1.webtest. Нажмите на Add Recording в верхней части Web Performance Test Editor для запуска записи.

Изображение 2Запуск записи

6. В режиме Record откроются Internet Explorer и Web Test Recorder. Вы можете ставить на паузу, останавливать и сбрасывать запись.

Изображение 3Web Test Recorder в Internet Explorer

Примечание: в режиме Record происходит запись с учетом того, что средний пользователь может провести некоторое время в раздумьях прежде чем совершить какое-то действие (think time).

7. Далее мы симулируем деятельность пользователя, нажав на нескольких продуктах и просмотрев информацию о них. Цель этого – создать профиль типичного поведения пользователя.

8. В Internet Explorer нажмите на Tailspin Toys. Обратите внимание – запрос запишется.

Изображение 4Запрос на открытие сайта Tailspin Toys

9. Нажмите на Model Airplanes .

Изображение 5Выбор Model Airplanes

10. Нажмите на Fourth Coffee Flyer.

Изображение 6Выбор Fourth Coffee Flyer

11. Нажмите на Trey Research Rocket в “You Might Also Like”.

Изображение 7Выбор Try Research Rocket

12. Нажмите на Stop в Web Test Recorder.

Изображение 8Остановка Web Test Recorder

13. После окончания записи и возвращения в Visual Studio будут запущены два процесса:

◦ Будут определены динамические параметры, которые не получается идентифицировать или извлечь во время записи. Сюда включаются значения cookies, ASP.NET View State, параметры адресной строки и POST. Извлечение динамических параметров во время первого запуска позволит запускать тесты в любое время как часть теста нагрузки.

◦ Будет запущен записанный тест

◦ Будут показаны результаты теста

14. Изучите запросы – обратите внимание, что данные из адресной строки были автоматически извлечены. Visual Studio 2013 также извлекает скрытые HTML-поля и POST-параметры.

Изображение 9Извлеченные параметры адресной строки

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

15. Будет полезно перечислить несколько функций, используемых для производительности, хоть это и не входит в лабораторную работу.

Функции тестирования веб-производительности

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

Добавление имен для идентификации веб-запросов

Настройка тестов

Настройка приемлимого времени ответа от веб-страницы

Добавление источника данных для связки с HTTP-запросами (БД, XML, CSV)

Настройка выполнения с использованием циклов, ветвления и транзакций

Настройка аккаунта для тестирования (basic или Integrated Windows)

16. В Solution Explorer нажмите правой кнопкой на WebTest1.webtest и выберите Rename. Введите “Browsing.webtest”. Так будет проще отслеживать записанный сценарий.

Изображение 10Новое имя теста

17. Посмотрим на время записи, чтобы убедиться, что оно находится в пределах допустимого. Нажмите на Set Request Details .

Изображение 11Кнопка Set Request Details

18. Окно Request Details показывает таблицу со всеми запросами, именами отчетов, временем в секундах и целевых показателях времени ответа в секундах. Для этой лабораторной работы убедитесь, что сумма всего времени не превышает 15 секунд. Это позволит быть уверенными в том, что мы получим хорошие результаты при тестировании нагрузки. Нажмите на ОК.

Изображение 12Окно Request Details

19. Добавим еще один тест для сценария покупки клиентом продукта на сайте. Нажмите на Project | Add Web Performance Test. Мы могли бы объединить все в один тест, но разделение тестов в таком виде поможет сделать более реалистичное тестирование нагрузки.

20. На Tailspin Toys нажмите на Paper Airplanes .

Изображение 13Выбор Paper Airplanes

21. Нажмите на Wingtip Toys Stunt Plane.

Изображение 14Выбор Wingtip Toys Stunt Plane

22. Нажмите на Add To Cart .

Изображение 15Добавление продукта в корзину

23. Нажмите на Checkout .

Изображение 16Покупка

24. Заполните форму тестовыми данными и нажмите на Review Order.

Изображение 17Покупка

25. Нажмите на Place Order .

Изображение 18Покупка

26. После покупки нажмите на Stop.

27. В Solution Explorer нажмите правой кнопкой на WebTest1.webtest и выберите Rename. Переименуйте тест в “Buying.webtest”.

Изображение 19Имя теста

28. Откройте окно Test Results и обратите внимание, что тест не был пройден. Нажмите два раза на нем для просмотра информации.

Изображение 20Просмотр информации о тесте

29. Окно Test Result Details содержит список HTTP-запросов, ответов, данные о контексте теста и другие сведения.

Изображение 21Окно Test Result Details

30. Выберите запрос, показывающий тест, который не был пройден. Обратите внимание, что код возврата – 200, и Request и Response выглядят нормальными.

Изображение 22Ответ на размещение заказа показывает ошибку

31. На вкладке Details можно увидеть, что тест не прошел, так как, согласно правилу Response URL Validation, ожидалось увидеть аналогичный записанному URL ответ (который включал уникальный номер заказа).

Изображение 23Вкладка Details

32. Закройте окно результатов.

33. Исправим тест, который не был пройден. Найдите в Validation Rules правило Response URL.

Изображение 24Правило валидации Response URL

34. Нажмите правой кнопкой на Response URL. Нажмите на Delete.

Изображение 25Удаление правила валидаици Response URL

35. Посмотрим на то, удовлетворяют ли лимитам показатели времени. Нажмите на Set Request Details.

Изображение 26Кнопка Set Request Details

36. Убедитесь, что общее время не превышает 30 секунд. Нажмите на OK.

Изображение 27Окно Request Details

37. Запустите тест Buying, чтобы проверить, проходит ли он.

Изображение 28Кнопка Run Test

Примечание: по умолчанию тесты выполняются без учета времени, хотя это может быть указано в настройках.

38. Результаты должны иметь зеленый цвет.

Изображение 29Все запросы пройдены

39. Закройте окно результатов.

2: Упражнение нагрузочноетестированиеВ этом упражнении вы научитесь использовать тесты веб-производительности, созданные ранее, в качестве базы для теста нагрузки. Для создания теста нагрузки, который определит нагрузку от пользователя, надо указать, какие тесты веб-производительности надо использовать, тип сети, браузер, счетчики производительности и метрики, которые мы хотим собрать во время теста.

1. Нажмите Project | Add Load Test.

2. В New Load Test Wizard нажмите на Next.

Изображение 30Load Test Wizard

3. Введите название сценария “BrowseAndOrderProduct”. Остальные настройки стандартны и используют время выполнения тестов веб-производительности как медианное значение с нормальным распределением и вариациями. Цель же – более реалистичная нагрузка на веб-сайт.

4. Нажмите на Next.

Изображение 31Определение сценария для теста нагрузки

5. Измените значение User Count на 5 пользователей, так как мы работаем внутри виртуальной машины и важно удерживать одновременное количество пользователей на таком уровне, чтобы ресурсов машины хватало.

Примечание: ограничение на количество виртуальных пользователей для теста нагрузки было убрано в Visual Studio Ultimate 2012 (и выше). Вам больше нет необходимости покупать лицензии на виртуальных пользователей для увеличения их количества. Однако лицензия Visual Studio Ultimate Trial ограничивает вас 25 виртуальными пользователями и позволяет выполнять только локальные тесты.

6. Нажмите на Next.

Изображение 32Настройка режима нагрузки

7. Изучите описания каждой из моделей тестирования.

Изображение 33Определения моделей

8. Предположим, что у нас есть данные о том, какой процент приходящих пользователей совершает покупки. Нажмите на based on the total number of tests и нажмите на Next.

Изображение 34Определение модели

9. Нажмите на Add.

Изображение 35Добавление тестов

10. Выберите оба имеющихся теста и добавьте их в микс, после чего нажмите OK.

Изображение 36Добавление тестов в микс

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

11. Предположим, что 25% пользователей покупают продукты на сайте. Внесите это значение в Distribution и нажмите на Next.

Изображение 37Определение микса

12. Окно Network Mix дает возможность выбора между типами сетей и распределения этих типов между виртуальными пользователями. Нажмите на выпадающем меню Network Type.

Изображение 38Типы сетей

13. Выберите LAN и нажмите на Next.

Изображение 39Определение микса сетей для теста

Примечание: сетевая эмуляция не будет работать, так как внутри виртуальной машины URL будет определяться как localhost.

14. Окно Browser Mix дает возможность выбрать один и более типов браузеров и указать их распределение между пользователями, что позволяет смоделировать более реалистическую картину взаимодействия пользователей с веб-сайтом. Выберите 100% Internet Explorer 9.0 и нажмите на Next.

Изображение 40Определение микса браузеров для теста

15. Окно Counter Sets дает возможность настроить компьютеры и наборы счетчиков, с которых будут считываться данные во время теста нагрузки. Нажмите на Add Computer и введите ‘VSALM’.

16. Выберите счетчики ASP.NET и SQL, так как мы тестируем веб-сайт. Controller Computer и Agent Computers уже собирают некоторые данные по умолчанию, и обе отображают одну машину. Нажмите на Next.

Изображение 41Определение счетчиков производительности

Примечание: во время тестов можно добавлять или изменять наборы счетчиков, редактируя файлы .CounterSet XML в папке \Common7\IDE\Templates\LoadTest\CounterSets. В папке LoadTest также есть определения сетей и браузеров.

17. Окно Run Settings дает возможность настроить длительность выполнения теста по времени либо количеству итераций. Измените время с 10 минут на 1. Стандартный sampling rate в 5 секунд хорошо подходит для нашей ситуации и вообще – для быстро-выполняющихся тестов. Если вы хотите более длительные тесты, поставьте sampling rate более редким – во время тестов будет генерироваться меньшее количество данных.

18. Нажмите на Finish.

Изображение 42Тест нагрузки

19. В Solution Explorer нажмите два раза на файле Local.testsettings.

Изображение 43Пользовательские настройки

20. Настройки сейчас говорят о том, что запуск будет происходить локально, но начиная с Visual Studio 2013 Ultimate тесты можно производить с помощью Visual Studio Online.

Изображение 44Нагрузочное тестирование с помощью Visual Studio Online

21. Мы будем проводить тесты локально.

Изображение 45Локальное нагрузочное тестирование

22. В окне Test Settings нажмите на Data and Diagnostics для просмотра доступных адаптеров: ASP.NET Profiler, Event Log, IntelliTrace, Network Emulation и т.д. По умолчанию ничего из них не выбрано, так как каждый из них привнесет во время тестирования серьезную долю нагрузки на машины и приведет к созданию большого количества данных.

Изображение 46Адаптеры данных

23. Нажмите на Enabled для адаптера ASP.NET Profiler и нажмите на Configure.

Изображение 47Настройка адаптера ASP.NET Profiler

24. Профайлер ASP.NET собирает статистику по производительности, выделение памяти .NET и другие данные, которые показывают производительность синхронных вызовов ADO.NET к Microsoft SQL Server. Учтите наличие этой мощной функции, и нажмите на Cancel .

Изображение 48Профайлер ASP.NET

Примечание: подробнее про профайлер ASP.NET:

http :// msdn . microsoft . com / en - us / library / dd 504817. aspx

25. Закройте окно Test Settings без сохранений.

3: Упражнение выполнение и анализ нагрузочных тестов

В этом упражнении вы выполните тесты нагрузки, созданные ранее, и проанализируете результаты.

1. Откройте созданный ранее тест в Solution Explorer.

Изображение 49Определение нагрузочного теста

2. Нажмите на Mange Test Controllers в Load Test Editor.

Изображение 50Управление контроллерами тестов

3. Выбранный Controller указан в <Local – No controller>. Нажмите на (…) для настройки строки подключения к хранилищу с результатами тестов нагрузки.

Изображение 51Окно Test Controller

4. В Connection Properties введите в Server Name значение VSALM, выберите Windows Authentication, и оставьте стандартное название базы. Нажмите на OK.

Изображение 52Настройки подключения к базе данных

5. Нажмите на Close.

6. Запустите нагрузочный тест, нажав Run Test.

Изображение 53

Кнопка Run Test

7. Результаты начнут показываться в окне Graphs сразу после инициализации. По умолчанию у вас будет четыре панели с важной статистикой, и счетчики производительности под ними. Данные снимаются по умолчанию каждые 5 секунд, что может быть при желании изменено.

Изображение 54Результаты нагрузочного теста

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

8. После окончания теста вы будете переключены на окно Summary, показывающее общую статистику и ключевую информацию о тесте. Обратите внимание на ссылки, которые ведут на детализированную информацию в окне Tables.

Изображение 55Окно Summary результатов нагрузочного теста

9. Нажмите на Graphs.

Изображение 56Graphs

10. Вы можете управлять показываемыми графиками. Нажмите на panels - Two Horizontal Panels.

Изображение 57Настройка графика

11. По умолчанию верхний график показывает ключевые индикаторы, нижний – время ответа страницы.

Изображение 58Графики Key Indicators и Page Response Time

12. Нажмите на одной из линий на графике Key Indicator, что приведет к подсветке счетчика, связанного с графиком. Красная линия показывается пользовательскую нагрузку в разных частях теста, она всегда равна 5, как мы и настроили.

Изображение 59Индикатор User Load

13. Нажмите на Pages/Sec в Key Indicators. На скриншоте мы видим, что среднее количество просматриваемых страниц в секунду во время теста было равно 1.38.

Изображение 60Просмотр счетчиков

14. Эти цифры – информация полезная, но не богатая. Тем не менее, она вляется хорошей отправной точкой для того, чтобы предпринять что-то между запусками теста, что поможет измерить влияние на производительность. Например, если мы видим большое количество пакетов запросов в секунду во время первого теста, возможно, это можно исправить добавлением дополнительного кэширования и перезапуском тестирования для того, чтобы убедиться, что количество запросов в секунду понизилось.

15. Перезапустите тест. Теперь у нас есть несколько результатов тестирования и мы можем сделать анализ трендов.

16. Нажмите на Create Excel Report.

Изображение 61Create Excel Report

17. В Generate a Load Test Report в Excel убедитесь, что выбрана опция Create a report и нажмите на Next.

Изображение 62Создание отчета о нагрузочном тестировании

18. Выберите Trend. Нажмите Next .

Изображение 63Выбор типа отчета

19. В Report Name введите значение “LoadTestTrend” и нажмите на Next.

Изображение 64Имя отчета

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

Изображение 65Выбор тестов для генерации отчета

21. Нажмите на Finish.

Изображение 66Выбор счетчиков производительности

22. После генерации отчета вам будет показана таблица с содержимым и ссылками на страницы отчета. Нажмите на Avg. Page Time.

Изображение 67Отчет по трендам

23. График Avg. Page Time показывает среднее время страницы для каждого из запусков тестов, выбранных для анализа по трендам. Время страницы это метрика, включающая в себя все запросы, сделанные к веб-странице. Эта метрика является полезным индикатором производительности. Так как мы не вносили никаких изменений в приложение во время тестирования, мы не увидим больших различий между тестами.

Изображение 68График Avg. Page Time

To give feedback please write to VSKitFdbk@Microsoft.com

Copyright © 2023 by Microsoft Corporation. All rights reserved.

top related