Как бы вы подвергли стресс-тестированию динамический сайт, если вы не знаете, какие URL будут раньше? - PullRequest
1 голос
/ 19 ноября 2010

Вопрос не в том, какие инструменты стресс-тестирования существуют.Боюсь, это намного сложнее.(По крайней мере, для меня)

Рассмотрим спокойную архитектуру для форума или блога, которая генерирует случайные идентификаторы для каждого сообщения.

Имитация создания этих тем / статей будет простой, потому что вы просто отправляете данные формы в конечную точку, например: /article или /topic

Но как вы тогда подчеркиваететест комментируя эти статьи / темы?Это отличается, потому что комментарии должны принадлежать статье / теме, что означает, что вам нужны идентификаторы этих элементов.Однако, если все, что вы можете сделать, это выпускать сообщения, и у вас нет возможности извлечь эти идентификаторы, вы не сможете их создать.

Я создаю сайт, похожий в этом отношении, и я не знаю, как провести стресс-тестирование при создании комментариев.

У меня есть две идеи, и обе они довольно ужасны:

  1. Создайте огромную систему заранее с помощью какой-то фабрики, а затем заморозьте ее.Оттуда я думаю, что мне придется использовать некоторую автоматизацию браузера, чтобы создавать свои «комментарии» ко всему этому.Я полагаю, что автоматизация проходит через прокси-сервер записи, как то, что предлагает JMeter.Затем, чтобы запустить тест, я перезагружаю базу данных и воспроизводю массивный файл журнала.
  2. В целом использую автоматизацию браузера, используя преимущества динамических ссылок, представленных на странице HTML.Единственным вариантом здесь был бы Selenium, и на самом деле мы говорим о массивной решетке селена, которая была бы чрезвычайно дорогой.Вероятно, очень трудно поддерживать также.

Вариант 2 совершенно недостижим, насколько я могу судить, но вариант 1 звучит мучительно.Я действительно надеюсь, что кто-то может предложить что-то более умное.

Ответы [ 3 ]

3 голосов
/ 19 ноября 2010

Это распространенная проблема.Мы справляемся с этим путем извлечения динамических частей URL-адресов из ответов сервера.Я предполагаю, что эта система использует клиент веб-браузера - это означает, что эти URL-адреса отправляются в ответах сервера.Если они есть в ответах, то вы МОЖЕТЕ их получить.Однако, поскольку вы сказали: «Если все, что вы можете сделать, это выпускать сообщения, и у вас нет возможности извлечь эти идентификаторы», то, возможно, это не так?В таком случае, не могли бы вы уточнить?

В последнее время мы много тестируем системы Drupal для наших клиентов, что и есть именно та проблема, которую вы описали.Мы либо решаем эту проблему путем динамического извлечения идентификаторов со страницы, когда пользователь переходит на страницу, которую они хотят комментировать, либо мы используем вариант 1 или их комбинацию.Обратите внимание, что если у вас есть удобный инструмент для нагрузочного тестирования, то создание контента не так уж сложно - используйте инструмент для этого.Т.е. запустить нагрузочный тест «генерация контента».Помимо самостоятельного получения полезных данных, это даст вам тестовую базу данных, которую вы затем сможете резервировать / восстанавливать по мере необходимости для поддержки вашей тестовой инфраструктуры.Теперь вы можете запустить тест в более реалистичной среде, в которой уже есть много контента (если, конечно, это реалистично для ваших целей).

Если вызаинтересованы, я был бы рад продемонстрировать, как мы решаем проблему с помощью нашего программного обеспечения (Web Performance Load Tester).

3 голосов
/ 19 ноября 2010

Вариант 1.

Я имею в виду, кроме замечаний по реализации, вы просто запрашиваете среду тестирования. Итак, ответ - сделать один. В любом случае:

  • Сгенерируйте его
  • Сделайте это один раз и перезагрузите его
  • Случайный выбор

Whatever. Это подход, с которым нужно идти.

Как вы считаете, что тестирование является побочной проблемой (юнит-тестирование / браузер / что угодно, до вас).

Но вы достигли точки, когда вам нужно протестировать реальные данные. Так что сделай это.

0 голосов
/ 22 ноября 2010

Я использовал Visual Studio для решения такого рода проблем.Visual Studio позволяет создавать веб-тесты в кодировке C #, которые могут программно анализировать возвращаемый HTML-код и принимать меры на его основе.

Я проводил нагрузочное тестирование веб-сайта SharePoint и требовал своевременного заполнения информации.Я создал нагрузочный тест, предназначенный специально для заблаговременного создания «случайных» страниц контента.Я заблаговременно заполнил базу данных тестового комплекта URL-адресами, что дало некоторый контроль над загруженными страницами.

Имея список «статей» и список потенциальных комментариев, можно кодироватьгенератор псевдослучайных чисел (внутри хранимой процедуры из-за асинхронного характера тестового набора) для получения повторяемого теста нагрузки.Это означало, что сайт будет заполняться одинаково при каждом запуске нагрузочного теста.

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

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