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

advertisement
Лабораторная работа
Тестирование веб-производительности и
нагрузки в Visual Studio Ultimate 2013
Lab version:
12.0.21005.1
Last updated:
12/17/2013
СОДЕРЖАНИЕ
РЕЗЮМЕ ...................................................................................................................................................... 3
УПРАЖНЕНИЕ 1: СОЗДАНИЕ ТЕСТОВ ПРОИЗВОДИТЕЛЬНОСТИ ДЛЯ ВЕБ-ПРОЕКТОВ ............. 3
УПРАЖНЕНИЕ 2: НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ ........................................................................... 18
УПРАЖНЕНИЕ 3: ВЫПОЛНЕНИЕ И АНАЛИЗ НАГРУЗОЧНЫХ ТЕСТОВ.......................................... 32
Резюме
В этой лабораторной работе вы познакомитесь с возможностями по тестированию нагрузки и
производительности веб-проектов в 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. Вы можете ставить на
паузу, останавливать и сбрасывать запись.
Изображение 3
Web 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.
Изображение 30
Load 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/dd504817.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.
Изображение 56
Graphs
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.
Изображение 61
Create 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 © 2016 by Microsoft Corporation. All rights reserved.
Download