Генерация репрезентативных данных для испытаний производительности рельсов - PullRequest
2 голосов
/ 19 апреля 2011

Отдельная страница для моего сайта ruby ​​на rails медленная.

Чтобы выяснить, что происходит, я попытался следовать этому руководству при настройке этого простого теста на localhost:

class BrowsingTest < ActionDispatch::PerformanceTest
  def test_homepage    
    get '/slow_page'
  end
end

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

1) Каким-то образом скопировать данные с рабочего сервера и вставить их в тест.база данных (есть ли простой способ сделать это?)

ИЛИ

2) Генерация множества пользователей и сообщений с использованием файлов .yml для тестового крепления

ИЛИ

3) Поместите код в seed.rb для генерации пользователей и постов.(Я пытался сделать это, но по какой-то причине материал, который я генерирую в этом файле, исчезает к тому времени, когда запускается мой PerformanceTest

4) Я столкнулся с некоторыми драгоценными камнями, такими как Factory Girl и Faker.Я еще не пробовал это, но из того, что я прочитал, кажется, больше для создания конкретных ситуаций и состояний, чем для генерации тысяч пользователей для тестирования производительности.

Я думал, что это будет распространенный сценарий, и мне очень хотелось бычтобы получить совет от тех, кто сделал это.Спасибо.

1 Ответ

2 голосов
/ 20 апреля 2011

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

На практике то, что вы хотите сделать, это:

  • Скопируйте производственную базу данных и используйте ее для тестов производительности - это гарантирует, что все запросы, которые выполняются медленно в работе, например, из-за больших таблиц, отсутствующих индексов, слишком большого числа индексов, влияющих на скорость обновления и т. Д., Делают то же самое в ваши тесты.
  • Анализируйте журналы вашего веб-сервера, чтобы определить количество одновременных запросов на медленных страницах в пиковые моменты времени и генерировать такую ​​же нагрузку (или более высокую - зависит от ваших ожиданий роста) в ваших тестах.
  • Возможно, вы захотите взглянуть на сервисы, которые предлагают приблизительные оценки нагрузки от распределенной сети серверов. Например, посмотрите на Browser Mob
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...