2011-04-19 48 views
2

我的ruby on rails网站的特定页面很慢。为rails性能测试生成代表性数据

为了弄清楚是怎么回事,我想在本地主机上建立这个简单的测试遵循了这一guide

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等一些宝石。我还没有尝试过这些,但是从我读到的内容来看,创建特定情境和状态似乎更多,而不是产生成千上万的用户进行性能测试。

我认为这将是一个常见的情况,并希望从那些做过这些的人那里得到一些建议。谢谢。

回答

2

生成性能测试的最佳方法是使用来自生产服务器的真实用户数据。如果这些对您有用,那么一定要使用它们。原因是您想要针对最常见的真实用户场景优化Web应用程序的性能。无论您基于真实用户行为而制定的任何场景,最多都不那么具有代表性,或者最糟糕时完全没用。

在实践中,你想要做的是:

  • 复制生产数据库,并使用你的性能测试 - 这将确保无论查询运行例如以大表生产缓慢,因,缺少索引,影响更新速度的索引太多等等,在你的测试中做同样的事情。
  • 解析您的网络服务器日志以找出高峰时段缓慢页面上的并发请求数,并在测试中生成相同类型的负载(或更高 - 取决于您的增长预期)。
  • 您可能想要查看从分布式服务器网络提供真实负载近似值的服务。例如,看看Browser Mob
+0

对于复制生产数据库来测试,人们只是使用mysqldump? – tstyle 2011-04-26 06:47:29

+0

是的。这是一个很好的做法。 – Elad 2011-04-26 07:49:59