Нагрузочное тестирование интерфейса - PullRequest
5 голосов
/ 19 февраля 2009

Я работаю над сайтом, который довольно активно использует AJAX и динамический JavaScript во внешнем интерфейсе, и пришло время начать стресс-тестирование. Но как правильно протестировать то, что требует нажатия нескольких ссылок на интерфейсе? Один из способов, с помощью которого я мог легко и быстро переходить на каждую страницу сайта, - указывать на него Google Mini. Но это не будет щелкать ссылки, а затем перемещаться по модальным окнам и тому подобное.

Редактировать - я должен отметить, что сайт выполнен на PHP5 и используется библиотека JavaScript - jQuery. Не уверен, что это будет иметь какое-либо значение, но чувствовал, что это может быть полезно знать.

Ответы [ 5 ]

2 голосов
/ 20 февраля 2009

JMeter хорош в этом. Вы можете записывать свои сессии и настраивать их по своему вкусу.

Так называемое «нагрузочное тестирование AJAX» является постоянной темой на этом сайте, и его часто путают. Итак, давайте прямо: нет разницы между нагрузочным тестированием обычной веб-страницы и нагрузочным тестированием с помощью ajax. Все сводится к дискретным запросам; они просто не обновляются до полной страницы.

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

Пример простого нагрузочного теста:

  1. начальная загрузка страницы
  2. логин
  3. навигация
  4. 5-10 запросов 'ajax' (или что-то еще, что может соответствовать шаблону использования вашего приложения)
  5. 1020 * выход из системы *
1 голос
/ 20 февраля 2009

Я в какой-то степени не согласен с Натаном и Фредди. Они правы в том, что «тестирование AJAX» на самом деле ничем не отличается в том, что выполняются HTTP-запросы. Но это не так просто. Смотрите мою статью на Ajaxian.com на Почему нагрузочное тестирование Ajax жесткое .

JMeter, Pylot и The Grinder - отличные инструменты для генерации HTTP-запросов (я лично рекомендую Pylot). Но по своей сути они не действуют как браузер и не обрабатывают JavaScript, то есть все, что они делают, это воспроизводят трафик, который они видели в рекордно короткие сроки. Если эти AJAX-запросы были уникальными для этого сеанса, они могут быть неподходящими / правильными для воспроизведения на больших томах.

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

В моей статье я привожу простой пример того, как трудно тестировать что-то вроде домашней страницы Google, когда вы хотите запросить тысячи различных поисковых терминов (важная цель во время нагрузочного тестирования). Чтобы сделать это с помощью JMeter / Pylot / Grinder, вы фактически переписываете части кода AJAX (в вашем случае w / jQuery) снова на родном языке инструмента.

Это становится еще сложнее, если ваша цель состоит в том, чтобы измерить время отклика, воспринимаемое пользователем (что, возможно, является наиболее важной вещью в конце дня). Для действительно сложных приложений, использующих Comet / «Reverse Ajax» (метод, который сохраняет открытые сокеты в течение длительных периодов времени), традиционные инструменты загрузки вообще не работают.

Моя компания, BrowserMob, предоставляет сервис нагрузочного тестирования , который использует браузеры Firefox на базе Selenium для управления сотнями или тысячами реальных браузеров, что позволяет вам измерять и измерять время производительность визуальных элементов, как видно в браузере. Мы также поддерживаем традиционных виртуальных пользователей (скрытый HTTP-трафик) и имитируемый браузер (через HtmlUnit ).

Все это говорит о том, что обычно сочетание услуг, таких как BrowserMob и традиционное нагрузочное тестирование, является правильным подходом. То есть настоящие браузеры отлично подходят для полнофункционального нагрузочного теста, но они никогда не будут такими же экономичными, как «виртуальные пользователи», поскольку им требуется в 10-100 раз больше оперативной памяти и процессора. См. Мой недавний пост в блоге о том, * симулировать ли или нет виртуальных пользователей .

Надеюсь, это поможет!

1 голос
/ 20 февраля 2009

Что вам действительно нужно, так это стресс-тестирование - это способность сервера обрабатывать запросы ajax. Используйте инструмент загрузки, который просматривает запросы во время «записи» теста, а затем настраивается соответствующим образом. Я использовал только тестовую версию 1, поэтому я не могу указать вам на дешевую.

1 голос
/ 19 февраля 2009

Существуют инструменты нагрузочного тестирования, которые могут поддерживать AJAX. Например, WebLoad

http://www.radview.com/solutions/ajax-load-testing.aspx

0 голосов
/ 27 февраля 2009

Вы можете использовать что-то вроде openSTA .

Это позволяет записывать сеанс с веб-сайтом, а затем воспроизводить его на относительно простом языке сценариев.

Вы также можете легко тестировать веб-сервисы и писать собственные сценарии.

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

Это с открытым исходным кодом и бесплатно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...