Prerequisites - Microsoft · Web viewдля просмотра доступных...
Transcript of Prerequisites - Microsoft · Web viewдля просмотра доступных...
Лабораторная работаТестирование веб-производительности и нагрузки в 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 [email protected]
Copyright © 2023 by Microsoft Corporation. All rights reserved.