1

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

Мои вопросы заключаются в следующем:

  1. Когда вы начинаете планировать предполагаемое время отклика приложения; что вы считаете. Если это первый шаг. Я имею в виду, теперь у меня есть веб-приложение. Я просто вытаскиваю фигуру из воздуха и говорю: «Я ожидаю, что приложение займет 3 секунды, чтобы ответить на каждый запрос». а затем выясните, чего не хватает моему приложению, чтобы получить время отклика?

  2. Или это наоборот, и вы начинаете тест производительности с заданным набором аппаратных средств и говорите, давайте посмотрим, какое время ответа я получаю сейчас, а затем посмотрю на результаты и скажу, ну, это сейчас 8 секунд , Я бы хотел, чтобы он составлял 3 секунды, поэтому давайте посмотрим, как мы можем оптимизировать его до 3 секунд? Но снова 3 секунды из воздуха? Я уверен, что масштабирование машин только не даст времени отклика. Он получит время отклика только тогда, когда одна машина/сервер находится под нагрузкой, и вы начнете кластеризацию?

  3. Теперь для одного пользователя у меня есть время отклика как 3 секунды, но по мере увеличения нагрузки он уменьшается экспоненциально; поэтому, где я рисую линию между «Мне нужно оптимизировать код дальше» (у которого есть верхний предел) и «Мне нужно увеличить мои серверы» (у которого тоже есть предел)

  4. Что является лучшим бесплатным инструменты для тестирования производительности и нагрузки? Я немного использовал Jmeter. Но есть ли что-то еще, что хорошо и с открытым исходным кодом?

  5. Если мне нужно оптимизировать код, я начинаю профилировать конкретные потоки, которые потребовали много времени на запросы?

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

Спасибо.

ответ

2

Performance Testing Council ваш шлюз свободно обмениваться опытом, знаниями и практика тестирование производительности.

Также читайте Microsoft Patterns & Practises для тестирования производительности.В этом руководстве представлен комплексный подход для тестирования производительности.

phoenix упомянул инструменты с открытым исходным кодом.

0

Прежде всего, правильно разработайте свое приложение.

Используйте профайлер, посмотрите, где узкие места в вашем приложении, и заберите их, если это возможно. MEASURE перед его улучшением.

+0

Если я правильно понимаю, профилирование приложения должно быть в последнюю очередь. Я имею в виду, что это непросто сделать, и вы не хотите тратить драгоценное время на это, если, вырвав низко висящие фрукты, я могу заставить мою систему работать достаточно хорошо? Для поддержки моего аргумента здесь есть видео http://video.google.com/videoplay?docid=-6891978643577501895# – Priyank

+0

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

1

This link и this показать пример и способ настройки производительности приложения, когда приложение не имеет очевидных «узких мест». Он работает наиболее интуитивно на отдельных потоках. У меня нет опыта использования его в веб-приложениях, хотя другие люди это делают. Я согласен, что профилирование непросто, но я всегда полагался на эту технику, и я думаю, что это довольно просто/эффективно.

0

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

1 - Перед началом тестирования вы должны знать количество физической памяти и объем памяти, выделенной для JVM, или что-то еще. Размер БД собирает как можно больше показателей для вашей текущей среды. Знайте об окружающей среде

2 - Следующим шагом будет определение общего объема производства БД и ожидаемого ежегодного роста. Вам нужно будет проверить, как ваше приложение будет вести себя год за годом, два, пять и т. Д.,

3 - Автоматизация настройки среды, это поможет вам в будущем для регрессионного тестирования и проверки исправления дефектов. Таким образом, вам нужно иметь базы данных DB для ваших тестов. С текущим (базовым), годовым, пятилетним объемом.

4 - После того, как вы сделали, если собрать основную информацию - Подумайте о мониторинге серверов под нагрузкой, может быть, у вас уже есть некоторый мониторинг решения, как http://newrelic.com/ это поможет вам определить причину ухудшения производительности (CPU/MEM/Количество потоков и т. Д.) Некоторые инструменты тестирования производительности имеют встроенные системы мониторинга.

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

5 - Выберите инструмент Я думаю, что JMeter + http://blazemeter.com/ это то, что вам нужно в данный момент, и есть много хороших статей и учебных материалов, для записи сценария я бы рекомендовал использовать blazemeters Chrom расширение вместо встроенный JMeters. Если вы все еще думаете, что вы не хватает знаний о том, как все делается в JMeter Я рекомендую эту книгу - Тестирование производительности с JMeter 2.9 по Байо Erinle

6 - Анализ результатов, план тестирования обзора и принять соответствующие меры.

Смежные вопросы