Тестирование производительности Лекция по дисциплине «Поддержка и тестирование программных модулей»
Содержание лекции
Зачем нужно тестировать производительность?
Виды тестирования производительности
Нагрузочное тестирование
Термины
Нагрузочное тестирование
Сценарии
Нагрузочное тестирование
Время отклика (Response time)
Тест на выносливость
Счётчики производительности на сервере
Стресс-тест
Тест на работу при нехватке ресурсов
Тест на масштабируемость
ТП: Что тестируем?
ГОСТ Р ИСО/МЭК 9126-93
ГОСТ Р ИСО/МЭК 9126-93
Так «эффективность» или «производительность»?
Эффективность +
ГОСТ Р ИСО/МЭК 9126-93
ГОСТ Р ИСО/МЭК 9126-93
Пример требований
Пример требований
Пример требований
Пример требований
Пример требований
Пример требований
Пример требований
Подробность требований
Три базовые составляющие ТП
Три базовые составляющие
Три базовые составляющие
Краткий обзор инструментов
Генерация нагрузки
Генерация нагрузки
Мониторинг
Анализ результатов
Спасибо за внимание
1.45M
Category: programmingprogramming

Поддержка и тестирование программных модулей

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. Спасибо за внимание

КИТиС
Колледж Информационных
Технологий и
Строительства.
Спасибо за внимание
English     Русский Rules