0

大多数关于 Rails 分析的帖子都推荐Ruby-Prof。要使用它Ruby-Prof,我需要为每个控制器操作编写至少一个新测试,然后手动比较结果以查看耗时最长且可能是优化的候选对象。

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

  1. 运行整个测试套件并捕获每个控制器操作所花费的时间。(或模型方法,或我想要的任何粒度级别。)
  2. 打印两个列表,每个控制器操作中的最坏情况和平均情况时间。
  3. 对每个列表进行排序并开始调查运行时间最长的控制器操作,现在使用Ruby-prof或其他分析工具深入了解调用堆栈。最坏情况的时间将识别可能有问题的请求参数(即,在后端触发慢代码),而我在编写性能测试时不必考虑它们。

人们是否有某种原因不以这种方式使用集成测试套件,而不是基本上用第二个性能测试套件来复制它?我没有看到它建议。在我编写代码来做这样的事情之前(大概有一个before_actionin ApplicationController,是否已经有一个工具呢?

4

1 回答 1

0

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

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

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

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

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

于 2016-07-18T23:53:07.110 回答