Similar presentations:
Поддержка и тестирование программных модулей
1. Тестирование производительности Лекция по дисциплине «Поддержка и тестирование программных модулей»
КИТиСКолледж Информационных Технологий и
Строительства.
Тестирование
производительности
Лекция по дисциплине «Поддержка и тестирование программных
модулей»
Подготовила Большакова А.В.
2. Содержание лекции
Зачем нужно тестироватьпроизводительность?
Виды тестирования
производительности
Нагрузочное тестирование
Тест на выносливость
Стресс-тест
Тест на работу при нехватке ресурсов
Тест на масштабируемость
3. Зачем нужно тестировать производительность?
Как правило, при разработке ПО указываетсянеобходимая производительность при
определённых конфигурациях сервера/ПО
Тестирование производительности позволяет
выявить несоответствие между ожидаемой и
реальной производительностью системы, а
также слабые места и возможные проблемы.
Тестирование производительности затрагивает
не только ПО как таковое, но и особенности
конфигурации ПО и аппаратные средства.
4. Виды тестирования производительности
Нагрузочное тестирование (load testing)Тест на выносливость (endurance
testing)
Стресс-тест (stress-test)
Тест на работу при нехватке ресурсов
(exhaust test)
Тест на масштабируемость (scalability
test)
5. Нагрузочное тестирование
Основной вид тестированияпроизводительности
Используется для определения
времени отклика при фиксированной
нагрузке
» либо
Используется для определения
нагрузки, не превышающей
фиксированное время отклика
6. Термины
Время отклика – время, в течениекоторого система обрабатывает время
действия пользователя и возвращает
результат.
Нагрузка (в данном контексте) –
количество запросов, посылаемых на
сервер за единицу времени.
Производительность системы –
способность выдерживать
определённую нагрузку
7. Нагрузочное тестирование
Тестирование производительностизаключается в эмуляции различных
действий большого количества
пользователей.
Последовательность действий
пользователя называется сценарием.
Качество тестировании
производительности во многом зависит
от проработки сценариев.
8. Сценарии
Сценарии должны быть максимальноприближены к реальности
Сценарии могут быть сколь угодно
сложными
При разработке сценариев важно понимать
структуру тестируемого ПО и особенности
аппаратного и программного обеспечения
В большинстве ПО для нагрузочного
тестирования существует возможность
параметризации сценариев
9. Нагрузочное тестирование
Результатом нагрузочного тестирования обычно являетсяграфик зависимости времени отклика от нагрузки (или
наоборот)
Выглядит он примерно так:
Average response time for user profiles
14,00
12,00
10,00
response time, sec
8,00
Active reader average
Passive reader average
Forum user average
6,00
4,00
2,00
,00
1230
1360
1490
1620
1750
Users online
1880
2010
2140
2270
10. Время отклика (Response time)
Согласно исследованиям, впечатленияпользователей от зугрузки страницы
вылядят так:
<1c – отлично
1с-3с – хорошо
3с-6с – приемлимо
6с-12с – неприемлимо, очень плохо
>12c – убейте меня
11. Тест на выносливость
Проводится для того, чтобы убедиться внеизменности производительности с
течением времени
Тестирование осуществляется при
рассчётной нагрузке в течение
продолжительного (сутки, или даже
больше) времени
Если система стабильно, время отклика не
должно изменяться. Также не должны
изменяться значения счётчиков
производительности на сервере.
12. Счётчики производительности на сервере
Загрузка процессоров (CPU load)Выделение памяти (RAM usage)
Очередь обращения к HDD
13. Стресс-тест
Проводится для того, чтобы узнать прикакой нагрузке упадёт система, и главное –
сможет ли она сама оправиться от падения.
Также очень важно выяснить, не
произойдёт ли непоправимых сбоев при
падении системы.
Стресс-тест проводится при 300% - 1000%
рассчётной загрузке в течении
непродолжительного времени (15-30 мин)
14. Тест на работу при нехватке ресурсов
Проводится для того, чтобы узнать сможетли система работать при нехватке
системных ресурсов
Если система сможет так работать, нужно
определить какой параметр больше всего
влияет на производительность, и как
сильно
Проводится при 100% рассчётной нагрузке
в течение длительного времени, при этом,
после «прогревочного» периода на сервере
урезают один из ресурсов (CPU, RAM, HDD)
15. Тест на масштабируемость
Проводится для того, чтобы определитькак изменится производительность
системы при изменении характеристик
сервера
Проводится при 100% рассчётной
нагрузке в течение длительного
времени, при этом через определённый
интервал времени на сервере
изменяется один из параметров (CPU,
RAM, HDD) с небольшим шагом.
16. ТП: Что тестируем?
17. ГОСТ Р ИСО/МЭК 9126-93
Эффективность — Набор атрибутов,относящихся к соотношению между уровнем
качества функционирования ПО и объемом
используемых ресурсов при установленных
условиях.
18. ГОСТ Р ИСО/МЭК 9126-93
А.2.4 Эффективность (Efficiency)А.2.4.1 Характер изменения во времени (Time
behavior)
Атрибуты программного обеспечения, относящиеся к
временам отклика и обработки и к скоростям
выполнения его функций.
А.2.4.2 Характер изменения ресурсов (Resource
behavior)
Атрибуты программного обеспечения, относящиеся к
объему используемых ресурсов и продолжительности
такого использования при выполнении функции.
19. Так «эффективность» или «производительность»?
20. Эффективность +
• При большой нагрузке не хватаетресурсов
=>
• Нехватка ресурсов может приводить к
проявлению функциональных дефектов
21. ГОСТ Р ИСО/МЭК 9126-93
Надежность – Набор атрибутов, относящихся кспособности программного обеспечения
сохранять свой уровень качества
функционирования при установленных
условиях за установленный период времени.
22. ГОСТ Р ИСО/МЭК 9126-93
А.2.2 Надежность (Reliability)А.2.2.1 Стабильность (Maturity)
Атрибуты программного обеспечения, относящиеся к частоте отказов при
ошибках в программном обеспечении.
А.2.2.2 Устойчивость к ошибке (Fault tolerance)
Атрибуты программного обеспечения, относящиеся к его способности
поддерживать определенный уровень качества функционирования в случаях
программных ошибок или нарушения определенного интерфейса.
А.2.2.3 Восстанавливаемость (Recoverability)
Атрибуты программного обеспечения, относящиеся к его возможности
восстанавливать уровень качества функционирования и восстанавливать
данные, непосредственно поврежденные в случае отказа, а также к времени и
усилиям, необходимым для этого.
23. Пример требований
24. Пример требований
При нагрузке до 100 одновременноработающих с системой клиентов:
• среднее время отклика должно
составлять не более 2,5 секунд.
25. Пример требований
При нагрузке до 100 одновременноработающих с системой клиентов:
• среднее время отклика должно
составлять не более 2,5 секунд,
• количество отказов не должно
превышать 1%
26. Пример требований
При нагрузке до 100 одновременноработающих с системой клиентов:
• среднее время отклика должно
составлять не более 2,5 секунд,
• количество отказов не должно
превышать 1%
• дисперсия не должна превышать 5%
27. Пример требований
При нагрузке до 100 транзакций в секундутипа «ping» и 10 транзакций в секунду
типа «action»:
• среднее время отклика должно
составлять не более 2,5 секунд,
• количество отказов не должно
превышать 1%
• дисперсия не должна превышать 5%
28. Пример требований
При нагрузке до 100 транзакций в секунду типа«ping» и 10 транзакций в секунду типа «action»:
• среднее время отклика должно составлять не
более 2,5 секунд,
• количество отказов не должно превышать 1%
• дисперсия не должна превышать 5%
• сервер приложений должен потреблять не
более 50% CPU и не более 1,2 гигабайта ОЗУ
29. Пример требований
При нагрузке до 100 транзакций в секунду типа«ping» и 10 транзакций в секунду типа «action»:
• среднее время отклика для транзакций типа
«action» должно составлять не более 2,5 секунд,
• количество отказов не должно превышать 1%,
• дисперсия не должна превышать 5%,
• сервер приложений должен потреблять не более
50% CPU и не более 1,2 гигабайта ОЗУ,
• система должна расходовать не более трёх
соединений с СУБД
30. Подробность требований
Какие требования лучше:подробные
или
неформальные и нечёткие?
31. Три базовые составляющие ТП
32. Три базовые составляющие
• Генерация нагрузки• Мониторинг характеристик
производительности
• Анализ результатов
33. Три базовые составляющие
• Ресурсов не хватает при большойнагрузке
• Нужно много наблюдений
• «В зачет» идут как средние значения,
так и отклонения от средних
34. Краткий обзор инструментов
35. Генерация нагрузки
• JMeter – http://jmeter.apache.org/• grinder – http://grinder.sourceforge.net/
• multi-mechanize – http://testutils.org/multimechanize/
• Gatling – http://gatling-tool.org/
• Tsung – http://tsung.erlang-projects.org/
• loadUI – http://www.loadui.org/
• curl-loader – http://curl-loader.sourceforge.net/
36. Генерация нагрузки
BlazeMeter – http://blazemeter.com/
Blitz – https://www.blitz.io/
Load Impact – http://loadimpact.com/
LoadStorm – http://loadstorm.com/
SOASTA – http://www.soasta.com/
37. Мониторинг
Встроенные в инструменты средства
Средства операционной системы
Средства серверов, СУБД, …
Специализированные средства
– Zabbix, Nagios, Hyperic
38. Анализ результатов
• Встроенные в инструменты средства• Электронные таблицы
• Пакеты для статистической обработки
данных
39.
Нагрузочное тестированиеНагрузочное тестирование (Load
Testing) или тестирование
производительности (Performance
Testing) - это автоматизированное
тестирование, имитирующее работу
определенного количества
пользователей на каком-либо
общем для них ресурсе.
Решаем истинные задачи
40.
Терминология• Виртуальный пользователь (Virtual User) программный процесс, циклически выполняющий
моделируемые операции.
• Итерация (Iteration) – это один повтор выполняемой в
цикле операции.
• Интенсивность выполнения операции (Operation
Intensity) - частота выполнения операции в единицу
времени, в тестовом скрипте задается интервалом
времени между итерациями.
• Нагрузка (Loading) - совокупное выполнение операций
на общем ресурсе.
• Производительность (Performance) - количество
выполняемых операций за период времени (N операций
за M часов)
Решаем истинные задачи
41.
Терминология• Масштабируемость приложения (Application
Scalability) - пропорциональный рост
производительности при увеличении нагрузки.
• Профиль нагрузки (Performance Profile) - это набор
операций с заданными интенсивностями, полученный на
основе сбора статистических данных либо
определенный путем анализа требований к тестируемой
системе.
• Нагрузочной точкой называется рассчитанное (либо
заданное Заказчиком) количество виртуальных
пользователей в группах, выполняющих операции с
определенными интенсивностями.
Решаем истинные задачи
42.
Виды нагрузочного тестирования• Тестирование производительности (Performance
testing)- определение масштабируемости приложения
под нагрузкой.
• Стрессовое тестирование (Stress Testing) позволяет
проверить насколько приложение и система в целом
работоспособны в условиях стресса и также оценить
способность системы к регенерации.
• Объемное тестирование (Volume Testing) - получение
оценки производительности при увеличении объемов
данных в базе данных приложения.
Решаем истинные задачи
43.
Виды нагрузочного тестирования• Тестирование стабильности или надежности (Stability
/ Reliability Testing) - проверка работоспособности
приложения при длительном тестировании со средним
уровнем нагрузки.
• Тест на масштабируемость (Scalability Test) оценивает
способность системы увеличивать производительность
пропорционально увеличению масштаба
нефункциональных возможностей.
Решаем истинные задачи
44.
Принципы нагрузочного тестирования1. Уникальность запросов
2. Время отклика системы
3. Зависимость времени отклика системы от степени
распределённости этой системы
4. Разброс времени отклика системы
5. Точность воспроизведения профилей нагрузки
Решаем истинные задачи
45.
Цели нагрузочного тестирования1. Оценка производительности и работоспособности
приложения на этапе разработки и передачи в
эксплуатацию.
2. Оценка производительности и работоспособности
приложения на этапе выпуска новых релизов.
3. Оптимизация производительности приложения, включая
настройки серверов и оптимизацию кода.
4. Подбор соответствующей для данного приложения
аппаратной (программной платформы) и конфигурации
сервера.
Решаем истинные задачи
46.
Этапы проведения нагрузочноготестирования
1. Анализ требований и сбор информации о тестируемой
системе
2. Конфигурация тестового стенда для нагрузочного
тестирования
3. Разработка модели нагрузки
4. Выбор инструмента для нагрузочного тестирования
5. Создание и отладка тестовых скриптов
6. Проведение тестирования
7. Анализ результатов
8. Подготовка, отправка и публикация отчета по
проведенному нагрузочному тестированию
Решаем истинные задачи
47.
Анализ требований• Время отклика (время необходимое для открытия
страницы или получения ожидаемого результата)
• Интенсивность (число запросов в секунду)
• Используемые ресурсы (загрузка процессора,
количество используемой памяти и т.д.)
• Максимальное количество пользователей (определяет
число пользователей, способных работать с системой в
условиях заданной конфигурации)
Решаем истинные задачи
48.
Конфигурация стендаОсновные причины, по которым не всегда получается
продублировать конфигурацию системы на тестовом
стенде:
• Сложность дублирования дорогого серверного железа
для тестовых нужд
• Ограничения на использование лицензий требуемого
программного обеспечения
• Закрытость архитектуры приложения со стороны
заказчика по соображениям безопасности
• Трудность воссоздания или транспортировки базы
данных приложения
• Сложность воссоздания требуемой архитектуры сети
• и многое другое
Решаем истинные задачи
49.
Разработка модели нагрузки• список тестируемых операций
• интенсивность выполнения операций
• зависимость изменения интенсивности выполнения
операций от времени
Решаем истинные задачи
50.
Инструменты нагрузочного тестированияКоммерческие инструменты: Hewlett-Packard (Mercury
Interactive), IBM Rational, Borland (Segue), SmartBear,
Neotys, HP Performance Center (включает HP LoadRunner),
Rational Performance Tester, Silk Performer, LoadComplete
Web Load Testing, NeoLoad
Бесплатные инструменты: Jmeter, Grinder
Решаем истинные задачи
51.
Создание и отладка тестов• внедрить приемы обеспечения качества: использование
стандартов, шаблонов и инструкций
• договориться об общем использовании одинаковой
структуры каталогов, архитектуры скриптов, именовании
функций, переменных и транзакций
Решаем истинные задачи
52.
Проведение тестированияРешаем истинные задачи
53.
Анализ результатов1. Время выполнения запроса(минимальное,
максимальное, среднее)
2. Количество выполненных запросов и процент ошибок
3. Пропускная способность
4. Потребление ресурсов центрального процессора
5. Потребление оперативной памяти
6. Потребление сетевых ресурсов
7. Работа с дисковой подсистемой
Решаем истинные задачи
54.
Подготовка, отправка и публикация отчетапо проведенному нагрузочному тестированию
Наиболее частые и популярные ошибки при тестировании и
интерпретации результатов теста:
• Нет четкой цели, для чего нужно тестирование данного
проекта.
• Нередко проводят неправильное нагрузочное
тестирование и получают ошибочный вердикт по
результатам тестирования.
• Получают большое количество результатов и не могут их
растолковать, не знают, что с ними делать.
• Неправильное представление результатов нагрузочного
тестирования клиенту.
• DDOS тестируемой системы.
Решаем истинные задачи
55. Спасибо за внимание
КИТиСКолледж Информационных
Технологий и
Строительства.
Спасибо за внимание