Генерация репрезентативных данных для тестов производительности рельсов

Конкретная страница моего сайта ruby ​​on rails работает медленно.

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

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

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

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

OR

2) Создайте много пользователей и сообщений, используя файлы тестовых приспособлений .yml.

OR

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

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

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


person tstyle    schedule 19.04.2011    source источник


Ответы (1)


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

На практике вы хотите сделать следующее:

  • Скопируйте свою производственную базу данных и используйте ее для тестов производительности — это гарантирует, что любые запросы, которые выполняются медленно в производстве, например, из-за больших таблиц, отсутствующих индексов, слишком большого количества индексов, влияющих на скорость обновления и т. д., сделают то же самое в ваших тестах.
  • Проанализируйте журналы вашего веб-сервера, чтобы определить количество одновременных запросов на медленных страницах в часы пик, и создайте такую ​​же нагрузку (или выше — в зависимости от ваших ожиданий роста) в ваших тестах.
  • Возможно, вы захотите взглянуть на сервисы, которые предлагают приближенные значения реальной нагрузки от распределенной сети серверов. Например, взгляните на Mob браузера.
person Elad    schedule 20.04.2011
comment
Для копирования производственной базы данных для тестирования люди просто используют mysqldump? - person tstyle; 26.04.2011