70.82K
Category: softwaresoftware

Тестирование производительности программного обеспечения

1.

Тестирование
производительности
программного обеспечения
1.
1.
2.
3.
4.
5.
Тестирование производительности
Общие сведения
Нагрузочное тестирование
Стресс-тестирование
Тестирование стабильности
Конфигурационное тестирование

2.

Тестирование производительности
программного обеспечения
1. Общие сведения
Тестирование производительности программного
обеспечения проводится для того, чтобы определить,
насколько быстро работает программная система или
ее часть под определенной нагрузкой. Тестирование
производительности программного обеспечения может
служить также для проверки и подтверждения других
атрибутов качества системы, таких как
масштабируемость, надежность, потребление
ресурсов.
В тестировании производительности различают
следующие направления:
• нагрузочное тестирование;
• стресс-тестирование;
• тестирование стабильности;
• конфигурационное тестирование.

3.

Тестирование производительности
программного обеспечения
2. Нагрузочное тестирование. Нагрузочное
тестирование представляет собой сбор показателей
времени отклика программного обеспечения на
внешний запрос с целью определения
производительности и установления соответствия
требованиям, предъявляемым к данной системе. Для
исследования времени отклика системы при
максимально высоких нагрузках, превышающих
нормальные сценарии ее использования, производится
стресс-тестирование. Не существует четкой границы
между нагрузочным и стресс-тестированием, однако
эти виды тестирования отвечают на разные вопросы и
используют различную методологию.

4.

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

5.

Тестирование производительности
программного обеспечения
Нагрузочное тестирование — это один из видов
тестирования граничных условий. Схема его
проведения абсолютно аналогична. Сначала программу
запускают в условиях, в которых она должна работать, а
затем в условиях, для которых она не предназначена.
Имеет смысл проверить и различные комбинации
условий. Вполне возможно, что, справившись с
различными повышенными нагрузками по отдельности,
программа не выдержит их все вместе.

6.

Тестирование производительности
программного обеспечения
Чаще всего нагрузочное тестирование предполагает
эмуляцию работы нескольких пользователей
одновременно, что необходимо для
многопользовательских систем, как правило,
использующих клиент-серверную архитектуру
(например, веб-серверов). Однако и другие типы
систем программного обеспечения могут быть
протестированы подобным способом. Например, в
текстовый или графический редактор можно загрузить
очень большой документ, в бухгалтерской программной
системе сгенерировать отчет на основе данных за
несколько лет. Наиболее адекватно спроектированный
нагрузочный тест дает более точные результаты.

7.

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

8.

Тестирование производительности
программного обеспечения
Существуют различные инструменты для обнаружения и
исследования проблем в различных узлах системы.
Результатом нагрузочного тестирования являются
показатели производительности приложения, которые
используются в дальнейшем для анализа:
1) потребление ресурсов центрального процессора (%)
— метрика, показывающая, сколько времени из
заданного определенного интервала было потрачено
процессором на вычисления для выбранного процесса.
2) потребление оперативной памяти (Мб) — метрика,
показывающая количество памяти, использованной
приложением. Использованная память делится на
несколько категорий, таких как:

9.

Тестирование производительности
программного обеспечения
• объем виртуального адресного пространства, которое использует
процесс. Этот объем подразумевает использование как
соответствующего дискового пространства, так и оперативной
памяти. Система виртуальной памяти гарантирует, что потоки
одного процесса не получат доступа к памяти, принадлежащей
другому процессу;
• объем адресного пространства, занятого процессом и не
разделяемого с другими процессами;
• набор страниц памяти, недавно использованных процессом. В
случае когда свободной памяти достаточно, страницы остаются в
наборе, даже если они не используются. В случае когда
свободной памяти остается мало, использованные страницы
перемещаются из ОЗУ на жесткий диск, освобождая ОЗУ для
загрузки других активных страниц памяти;
• объем используемой процессом физической памяти, которая
может использоваться совместно с другими процессами;

10.

Тестирование производительности
программного обеспечения
3) потребление сетевых ресурсов — указывает на
пределы производительности системы в целом;
4) работа с дисковой подсистемой (время ожидания
ввода-вывода) — большое количество чтений или записей
может приводить к простаиванию процессора в ожидании
обработки данных с диска и в итоге к увеличению времени
отклика;
5) время выполнения запроса (мс) — один из главных
показателей производительности программного
обеспечения. Это время может быть измерено и на стороне
сервера (как показатель времени, требуемого серверной
части для обработки запроса) и на стороне клиента (как
показатель полного времени, которое требуется на
пересылку и обработку запроса).

11.

Тестирование производительности
программного обеспечения
3. Стресс-тестирование. Стресс-тестирование — вид
тестирования программного обеспечения, которое
оценивает надежность и устойчивость программной
системы в условиях превышения пределов нормального
функционирования. Обычно стресс-тестирование лучше
обнаруживает устойчивость, доступность и обработку
исключений системой под большой нагрузкой. Методология
стресс-тестирования основана на анализе показателей
производительности программного обеспечения при
нагрузках, значительно превышающих ожидаемые на
стадии сопровождения. Стресс-тестирование должно
определить выносливость или устойчивость приложения на
случай резкого скачка активности по его использованию.
Необходимость стресс-тестирования диктуется прежде
всего тем фактором, что цена отказа системы в
экстремальных условиях может быть очень велика.
Особенно стресс-тестирование необходимо для критически
важного программного обеспечения.

12.

Тестирование производительности
программного обеспечения
Основные направления применения стресстестирования:
• общее исследование поведения системы при пиковых
нагрузках;
• исследование обработки ошибок и исключительных
ситуаций системой при пиковых нагрузках;
• исследование узких мест системы или отдельных
компонент при диспропорциональных нагрузках;
• тестирование емкости системы.

13.

Тестирование производительности
программного обеспечения
Стресс-тестирование, как и нагрузочное
тестирование, может быть использовано для анализа
изменений производительности с целью получения
динамики изменения поведения системы за
длительный период. Стресс-тестирование может
применяться как для отдельных программ, так и для
распределенных систем с клиент-серверной
архитектурой. Условия стресс-тестирования
программного обеспечения обычно формируются
исходя из критических процессов его
функциональности, определенных на стадии
разработки требований и анализа рисков.

14.

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

15.

Тестирование производительности
программного обеспечения
4. Тестирование стабильности. Цель тестирования
стабильности — длительная проверка работоспособности
программного обеспечения с ожидаемым уровнем
нагрузки.
Перед тем как подвергать программное обеспечение
экстремальным нагрузкам, стоит провести проверку
стабильности в предполагаемых условиях работы, т. е.
испытать продукт в условиях близких к реальным.
Длительность проведения тестирования — не самое
главное. Основная задача — наблюдая за потреблением
ресурсов, проследить, чтобы скорость обработки данных
и/или время отклика приложения в начале теста и с
течением времени не уменьшались. В противном случае
вероятны сбои в работе продукта и перезагрузки системы.
Часто тестирование стабильности совмещают со стресстестированием, т.е. проверяют не только стабильность, но и
способность программного обеспечения переносить
жесткие условия и сильные нагрузки длительное время.

16.

Тестирование производительности
программного обеспечения
5. Конфигурационное тестирование.
Конфигурационное тестирование — это тестирование
влияния изменений в конфигурации на
производительность системы, представляющее собой
проверку работы программного обеспечения в
различном программном окружении, на разных
платформах, в различных браузерах, с разными
версиями драйверов.

17.

Тестирование производительности
программного обеспечения
В зависимости от типа проекта конфигурационное
тестирование может иметь разные цели:
• определить оптимальную конфигурацию оборудования,
обеспечивающую требуемые характеристики
производительности и времени реакции тестируемой
системы;
• проверить объект тестирования на совместимость с
объявленным в спецификации оборудованием,
операционными системами и программными продуктами
третьих фирм.
Конфигурационное тестирование также может быть
совмещено с нагрузочным, стресс-тестированием или
тестированием стабильности.

18.

Вопросы для самоконтроля
1.
Для чего проводится тестирование производительности программного обеспечения?
2.
Какие направления различают в тестировании производительности ПО?
3.
Что представляет собой нагрузочное тестирование?
4.
В чем отличие нагрузочного тестирования от стресс-тестирования?
5.
К какому виду тестирования относится нагрузочное тестирование?
6.
В чем заключается основная цель нагрузочного тестирования?
7.
Приведите критерии успешности нагрузочного тестирования.
8.
Какие показатели производительности приложения являются результатом нагрузочного
тестирования?
9.
Что представляет собой стресс-тестирование и для чего проводится?
10.
На чем основана методология стресс-тестирования?
11.
Укажите основные направления применения стресс-тестирования.
12.
Для чего может быть использовано стресс-тестирование?
13.
С какой целью осуществляется тестирование емкости?
14.
Что является результатом тестирование емкости?
15.
В чем заключается цель тестирования стабильности?
16.
Когда стоит провести тестирование стабильности?
17.
Опишите основную задачу тестирования стабильности.
18.
Что такое конфигурационное тестирование?
19.
Перечислите цели конфигурационного тестирования в зависимости от типа проекта.
20.
Могут ли быть совмещены разные направления тестирования производительности?
English     Русский Rules