0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Тестирование производительности

Тестирование производительности

Комплексная проверка на всех этапах жизненного цикла ПО.

  • Справится ли система с ожидаемой ежедневной нагрузкой?
  • Какую максимальную нагрузку сможет выдержать продукт?
  • Как определить «узкие места» в производительности ПО?
  • Как избежать отказа системы и связанных с этим потерь?

Тестирование производительности (Performance Testing)

Считается, что тестирование производительности [1] — это то тестирование, которое не является функциональным. Существует множество видов тестирования производительности. Классификация видов тестирования производительности строится на основе того, какие цели преследует определенный вид тестирования. Как правило тестирование производительности преследует не одну, а несколько целей в связи с тем, многие типы тестирования в ходе его проведения совмещаются с другими целями или повторяются несколько раз в ходе цикла тестирования. Основное отличие тестирования производительности также заключается в том, что оно происходит только после полного функционального тестирования. Ошибки функциональности не исправляются в ходе тестирования производительности. Для данного вида тестирования чаще всего выделяется отдельный нагрузочный стенд, повторяющий копию промышленного стенда. В связи с массовым распространением Agile методологий тестирование производительности также интегрируется в жизненный цикл разработки программного обеспечения.

На рисунке ниже показана основная классификация видов тестирования производительности.

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

Вид тестированияВид тестирования по английскийВопрос на который отвечает тестирование
1Нагрузочное тестированиеLoad Testing[2]Достаточно ли быстро работает система?
2Тестирование стабильностиStability Testing[3]Достаточно ли надежно работает система на долгом интервале времени?
3Тестирование отказоустойчивостиFailover Testing[4]Сможет ли система переместиться сама на другой сервер в случае сбоя основного сервера?
4Тестирование восстановленияRecovery Testing[5]Как быстро восстановится система?
5Стрессовое тестированиеStress Testing[6]Что произойдет при незапланированной нагрузке?
6Тестирование объемовVolume Testing[7]Как будет работать система, если объем базы данных увечится в 100 раз?
7Тестирование масштабируемостиScalability Testing[8]Как будет увеличиться нагрузка на компоненты системы при увеличении числа пользователей?
8Тестирование потенциальных возможностейCapacity Testing[9]Какое количество пользователей может работать?
9Конфигурационное тестированиеConfiguration Testing[10]Как заставить систему работать быстрее?
10Тестирование сравненияCompare Testing[11]Какое оборудование и ПО выбрать?

Два главных преимущества своевременного проведения нагрузочного тестирования системы

  • Проведение технического анализа
  • Планирование архитектуры ПО
  • Устранение дефектов производительности
  • Оценка вычислительных мощностей
  • Определение уровня отказоустойчивости системы
  • Оценка способности ПО справиться с прогнозируемой нагрузкой
  • Оптимизация инвестиций в аппаратное обеспечение
  • Сокращение расходов на обслуживание и поддержку
  • Уменьшение времени восстановления
  • Эффективный мониторинг

Если вы хотите добавить новую функциональность, скорректировать аппаратную конфигурацию, опасаетесь, что система не сможет обслуживать бизнес в связи с ростом пользовательской базы, то вам необходимо оценить текущие возможности вашей системы. Чтобы понять, выдержит ли система требуемую нагрузку, проводится нагрузочное тестирование. Этот вид тестирования позволяет заранее проанализировать возможные проблемы, связанные с быстродействием приложения, и своевременно их устранить.

Нагрузочное тестирование поэтапно

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

  1. Изучение объекта и контекста тестирования. При нагрузочном тестировании многое зависит от ожидаемой нагрузки на ресурс и функциональности, которая будет находиться под нагрузкой. Всесторонний анализ ограничений и требований позволяет разработать эффективную методику тестирования.
  2. Планирование и подготовка. На этом этапе разрабатывается методика тестирования, профиль нагрузки.
  3. Настройка тестового окружения. Нагрузочное тестирование серверов требует предварительной подготовки данных, настройки параметров работы генераторов нагрузки, системы мониторинга и других элементов.
  4. Разработка скриптов тестирования. Проводится с учетом бизнес-требований к продукту.
  5. Запуск тестов производительности. В ходе тестирования анализируется работа приложения в разных условиях, выявляются дефекты.
  6. Анализ полученных данных, разработка отчетов.
Читать еще:  Apple iPhone 6 или просто новый патент Apple

Результаты проверки

Нагрузочное тестирование позволяет ответить на следующие вопросы:

  • Как продукт справляется с ожидаемой нагрузкой?
  • Хватает ли аппаратных ресурсов для обработки ожидаемого объема трафика? Проводится анализ состояния вычислительных мощностей.
  • Как быстро сервер реагирует на запросы пользователя? Анализируется скорость выполнения операций. Низкая скорость работы и отказы под нагрузкой снижают эффективность приложения, блокирую его работу, повышают риск потери клиентов.
  • Требуется ли применять масштабирование вычислительных мощностей?
  • Есть ли на сайте ресурсоемкие операции, которые нуждаются в оптимизации?

Сбои в производительности продукта могут негативно сказаться на вашем бизнесе. Нагрузочное тестирование программного обеспечения – возможность предотвратить сбои в его работе и обеспечить стабильное функционирование всех компонентов. Мы определим актуальные проблемы и выявим скрытые дефекты, которые могут негативно сказываться на работе ПО.

Показатели производительности

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

Потребление ресурсов центрального процессора — метрика, показывающая сколько времени из заданного определённого интервала было потрачено процессором на вычисления для выбранного процесса. В современных системах важным фактором является способность процесса работать в нескольких потоках, для того, чтобы процессор мог производить вычисления параллельно. Анализ истории потребления ресурсов процессора может объяснять влияние на общую производительность системы потоков обрабатываемых данных, конфигурации приложения и операционной системы, многопоточности вычислений, и других факторов.

Потребление оперативной памяти — метрика, показывающая количество памяти, использованной приложением. Использованная память делится на несколько категорий:

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

При работе приложения память заполняется ссылками на объекты, которые, в случае неиспользования, могут быть очищены специальным автоматическим процессом, называемым сборщиком мусора. Время затрачиваемое процессором на очистку памяти таким способом может быть значительным, в случае, когда процесс занял всю доступную память (в Java — так называемый «постоянный Full GC») или когда процессу выделены большие объёмы памяти, нуждающиеся в очистке. На время, требующееся для очистки памяти, доступ процесса к страницам выделенной памяти может быть заблокирован, что может повлиять на конечное время обработки этим процессом данных.

Потребление сетевых ресурсов — метрика, не связана непосредственно с производительностью приложения, однако её показатели могут указывать на пределы производительности системы в целом.

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

Время выполнения запроса приложением остаётся одним из самых главных показателей производительности системы или приложения. Это время может быть измерено на серверной стороне, как показатель времени, которое требуется серверной части для обработки запроса; так и на клиентской, как показатель полного времени, которое требуется на сериализацию и десериализацию, пересылку и обработку запроса. При этом не каждое приложение для тестирования производительности может измерить оба этих времени.

Читать еще:  Правильный подход к выбору наушников

Тестирование отказоустойчивости (failover testing)

Тестирование отказоустойчивости (failover testing) – данный вид тестирования производительности позволяет проверить поведение системы в случает сбоя серверов или при других неблагоприятных факторах. Такое тестирование особенно важно в системах, работающих в режиме 24/7, т.к. в случае их выхода из строя возможны потери клиентов, репутации, денег и т.п.

Во время тестирования проверяются следующие операции:

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

Два главных преимущества своевременного проведения нагрузочного тестирования системы

  • Проведение технического анализа
  • Планирование архитектуры ПО
  • Устранение дефектов производительности
  • Оценка вычислительных мощностей
  • Определение уровня отказоустойчивости системы
  • Оценка способности ПО справиться с прогнозируемой нагрузкой
  • Оптимизация инвестиций в аппаратное обеспечение
  • Сокращение расходов на обслуживание и поддержку
  • Уменьшение времени восстановления
  • Эффективный мониторинг

Если вы хотите добавить новую функциональность, скорректировать аппаратную конфигурацию, опасаетесь, что система не сможет обслуживать бизнес в связи с ростом пользовательской базы, то вам необходимо оценить текущие возможности вашей системы. Чтобы понять, выдержит ли система требуемую нагрузку, проводится нагрузочное тестирование. Этот вид тестирования позволяет заранее проанализировать возможные проблемы, связанные с быстродействием приложения, и своевременно их устранить.

Нагрузочное тестирование поэтапно

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

  1. Изучение объекта и контекста тестирования. При нагрузочном тестировании многое зависит от ожидаемой нагрузки на ресурс и функциональности, которая будет находиться под нагрузкой. Всесторонний анализ ограничений и требований позволяет разработать эффективную методику тестирования.
  2. Планирование и подготовка. На этом этапе разрабатывается методика тестирования, профиль нагрузки.
  3. Настройка тестового окружения. Нагрузочное тестирование серверов требует предварительной подготовки данных, настройки параметров работы генераторов нагрузки, системы мониторинга и других элементов.
  4. Разработка скриптов тестирования. Проводится с учетом бизнес-требований к продукту.
  5. Запуск тестов производительности. В ходе тестирования анализируется работа приложения в разных условиях, выявляются дефекты.
  6. Анализ полученных данных, разработка отчетов.

Результаты проверки

Нагрузочное тестирование позволяет ответить на следующие вопросы:

  • Как продукт справляется с ожидаемой нагрузкой?
  • Хватает ли аппаратных ресурсов для обработки ожидаемого объема трафика? Проводится анализ состояния вычислительных мощностей.
  • Как быстро сервер реагирует на запросы пользователя? Анализируется скорость выполнения операций. Низкая скорость работы и отказы под нагрузкой снижают эффективность приложения, блокирую его работу, повышают риск потери клиентов.
  • Требуется ли применять масштабирование вычислительных мощностей?
  • Есть ли на сайте ресурсоемкие операции, которые нуждаются в оптимизации?

Сбои в производительности продукта могут негативно сказаться на вашем бизнесе. Нагрузочное тестирование программного обеспечения – возможность предотвратить сбои в его работе и обеспечить стабильное функционирование всех компонентов. Мы определим актуальные проблемы и выявим скрытые дефекты, которые могут негативно сказываться на работе ПО.

Инструментарий

Некоотрые инструменты для нагрузочного тестирования [1] [2] :

ПОНаименование производителяКомментарии
OpenSTA‘Open System Testing Architecture’Свободно распространяемое программное обеспечение для нагрузочного/стресс тестирования, лицензированное GNU GPL. Использует распределённую архитектуру приложений, основанную на CORBA. Доступна версия под Windows, хотя имеются проблемы с совместимостью с Windows Vista. Поддержка прекращена в 2007 году.
IBM Rational Performance TesterIBMОснованное на среде разработки Eclipse ПО, позволяющее создавать нагрузку больших объёмов и измерять время отклика для приложений с клиент-серверной архитектурой. Требует лицензирования.
JMeterОткрытый проект Apache Jakarta ProjectОснованный на Java кроссплатформенный инструментарий, позволяющий производить нагрузочные тесты с использованием JDBC / FTP / LDAP / SOAP / JMS / POP3 / HTTP / TCP соединений. Даёт возможность создавать большое количество запросов с разных компьютеров и контролировать процесс с одного из них.
HP LoadRunnerHPИнструмент для нагрузочного тестирования, изначально разработанный для эмуляции работы большого количества параллельно работающих пользователей. Также может быть использован для unit- или интеграционного тестирования.
LoadCompleteSmartBearПроприетарный продукт, позволяющий проводить нагрузочное тестирование веб-приложений
SilkPerformerMicro Focus (Borland)
SiegeJoe Dog SoftwareSiege — это утилита для нагрузочного тестирования веб-серверов. [3]
Visual Studio Team SystemMicrosoftVisual Studio предоставляет инструмент для тестирования производительности включая load / unit testing
QTestQuotium
HTTPerf
QALoadCompuware Ltd.
(The) Grinder
WebLOADRadView SoftwareНагрузочное тестирование инструмент для веб-и мобильных приложений, включая веб-панели для тестирования производительности анализа. Используется для крупномасштабных нагрузок, которые могут быть сгенерированы также из облака. лицензированный. [4]
Читать еще:  Apple выпустит компьютер с процессором планшета

Тестирование объемов (volume testing)

Объемное тестирование (volume testing) — тестирование позволяет оценить производительность системы при увеличении объёмов данных как самого приложения, так и его базы данных. Основной вопрос, на который отвечает данный вид тестирования производительности: “Что будет завтра с этим приложением или через год при увеличении числа пользователей и/или увеличение хранимых пользовательский и системных данных?”.

Во время тестирования измеряются следующие параметры:

  • зависимость времени выполнения операций на сервере от объема данных;
  • количество пользователей, которые могут одновременно работать с приложением “быстро”;
  • как быстро увеличивается объем данных при работе приложения.

Два главных преимущества своевременного проведения нагрузочного тестирования системы

  • Проведение технического анализа
  • Планирование архитектуры ПО
  • Устранение дефектов производительности
  • Оценка вычислительных мощностей
  • Определение уровня отказоустойчивости системы
  • Оценка способности ПО справиться с прогнозируемой нагрузкой
  • Оптимизация инвестиций в аппаратное обеспечение
  • Сокращение расходов на обслуживание и поддержку
  • Уменьшение времени восстановления
  • Эффективный мониторинг

Если вы хотите добавить новую функциональность, скорректировать аппаратную конфигурацию, опасаетесь, что система не сможет обслуживать бизнес в связи с ростом пользовательской базы, то вам необходимо оценить текущие возможности вашей системы. Чтобы понять, выдержит ли система требуемую нагрузку, проводится нагрузочное тестирование. Этот вид тестирования позволяет заранее проанализировать возможные проблемы, связанные с быстродействием приложения, и своевременно их устранить.

Нагрузочное тестирование поэтапно

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

  1. Изучение объекта и контекста тестирования. При нагрузочном тестировании многое зависит от ожидаемой нагрузки на ресурс и функциональности, которая будет находиться под нагрузкой. Всесторонний анализ ограничений и требований позволяет разработать эффективную методику тестирования.
  2. Планирование и подготовка. На этом этапе разрабатывается методика тестирования, профиль нагрузки.
  3. Настройка тестового окружения. Нагрузочное тестирование серверов требует предварительной подготовки данных, настройки параметров работы генераторов нагрузки, системы мониторинга и других элементов.
  4. Разработка скриптов тестирования. Проводится с учетом бизнес-требований к продукту.
  5. Запуск тестов производительности. В ходе тестирования анализируется работа приложения в разных условиях, выявляются дефекты.
  6. Анализ полученных данных, разработка отчетов.

Результаты проверки

Нагрузочное тестирование позволяет ответить на следующие вопросы:

  • Как продукт справляется с ожидаемой нагрузкой?
  • Хватает ли аппаратных ресурсов для обработки ожидаемого объема трафика? Проводится анализ состояния вычислительных мощностей.
  • Как быстро сервер реагирует на запросы пользователя? Анализируется скорость выполнения операций. Низкая скорость работы и отказы под нагрузкой снижают эффективность приложения, блокирую его работу, повышают риск потери клиентов.
  • Требуется ли применять масштабирование вычислительных мощностей?
  • Есть ли на сайте ресурсоемкие операции, которые нуждаются в оптимизации?

Сбои в производительности продукта могут негативно сказаться на вашем бизнесе. Нагрузочное тестирование программного обеспечения – возможность предотвратить сбои в его работе и обеспечить стабильное функционирование всех компонентов. Мы определим актуальные проблемы и выявим скрытые дефекты, которые могут негативно сказываться на работе ПО.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector