如何复制Sidekiq负载测试的生产环境

时间:2015-05-21 17:33:48

标签: ruby-on-rails rspec factory-bot sidekiq

在我的公司,我们使用Rails + Sidekiq登上我们的用户。当他们第一次登录时,我们通过解析/聚合数据的数据管道提供它们,并调用外部API。当一个工作完成时,它会为该用户排队管道中的下一个阶段。

我想对我们的管道进行改进(因为在某些情况下它很容易阻塞/挨饿)。但我想创建一个本地环境,而不是推广到生产环境,我可以测试任意修改和用例 - 这就是这个问题的全部内容。具体来说,我想:

  • 根据Sidekiq行为创建一个近似生产的开发环境
  • 了解工人入队的顺序与生产相似(如果不匹配)
  • 虚假/模拟外部服务调用
  • 测试任意情况,例如
    • 1,10,1000同时注册等
    • 外部服务的响应时间和可靠性从低到高的差异
  • 量化工人绩效以比较结果 - 开始时间,花费的时间,闲置/阻止时间

根据我的搜索,现在我正在考虑使用rspec来运行我的任意测试用例,使用FactoryGirl来模拟外部请求(伪造响应数据和改变响应时间)。我不知道这是不是一个好方法。感谢

1 个答案:

答案 0 :(得分:0)

我不认为rspec和factory_girl适合进行负载测试。 他们的主要目的是单元测试。

如果我是你,我会运行另一套服务器,与生产完全相同。 然后你可以编写一些水豚场景,用系统模拟真实的用户迭代。

只有这样的方法可以保证您负载测试的宝贵结果。

如果您模拟所有外部API请求,它会使您的应用程序更快,因此您将无法了解它将采用实际生产模式的时间。