我可以重用我的集成测试套件来分析Rails应用程序吗?

时间:2016-07-18 22:28:32

标签: ruby-on-rails ruby ruby-on-rails-3 profiling ruby-prof

Most posts on Rails profiling推荐Ruby-Prof。要使用Ruby-Prof,我需要为每个控制器操作编写至少一个新测试,然后手动比较结果,看看花费的时间最长,可能是优化的候选者。

如果我已经确切地知道我关注的是什么请求,这很好。如果我试图首先确定热点,似乎不太好。鉴于我已经有一个庞大的集成测试套件,涵盖了我关心的所有应用程序的功能,看起来我真正想做的是:

  1. 运行整个测试套件并捕获每个控制器操作所花费的时间。 (或模型方法,或我想要的任何粒度级别。)
  2. 打印两个列表,包括每个控制器操作中的最坏情况和平均情况时间。
  3. 对每个列表进行排序并开始调查运行时间最长的控制器操作,现在使用Ruby-prof或其他分析工具深入查看调用堆栈。最坏情况时间将识别可能存在问题的请求参数(即,在后端触发慢速代码),而不必在编写性能测试时将其全部考虑在内。
  4. 有没有理由让人们不以这种方式使用集成测试套件,而不是基本上用第二个性能测试套件复制它?我没有看到它的建议。在我编写代码以执行此类操作之前(可能在before_action中使用ApplicationController,是否已经有了这个工具?

1 个答案:

答案 0 :(得分:0)

我认为自动化测试不会告诉你有关性能的任何信息。你需要真实的数据。例如,您的测试可能不会使用索引,但如果您创建没有索引的10,000条记录,则可能会发现性能问题。

  

我需要为每个控制器操作编写至少一个新测试

为什么要对每个控制器操作进行性能测试?

在我有限的经验中,性能测试是在部署应用程序并测试非常具体的东西之后完成的。我测试了一段很慢的代码或者我认为可能很慢的代码。

此外,如果您使用在线性能工具,则无需更改代码。该在线工具针对已部署的应用程序实例运行。