4

黄瓜测试的探查器/分析相关问题。

我们的一项黄瓜测试运行相当缓慢。我不想猜测我们的应用程序在哪里花费时间,而是想以编程方式知道。

如何使用探查器触发黄瓜测试???

什么没有奏效:

  $ URL=/projects/by/114951412 #URL to slow rails page
  $ script/performance/profiler 'app.get "$URL"' 50

这不起作用,因为“app.get”仅适用于控制台,不适用于探查器脚本

  $ EXPENSIVE_METHOD="Project.find('6300003243').aggregated_total_amount"
  $ script/performance/profiler "$EXPENSIVE_METHOD" 50

这给出了一个结果,但我不得不猜测这种方法是瓶颈

(我使用的是黄瓜 0.3.94、rails 2.3.2、ruby 1.8.7(2008-08-11 补丁级别 72)[i686-darwin9.6.0])

4

3 回答 3

8

还可以尝试使用 cucumber --format 来获取一些关于最慢步骤的统计信息。

于 2009-08-12T23:11:43.173 回答
3

再做一个实验实际上是对我的问题的回答,但没有给我,但并没有真正给我一个特别有用的结果

$ PROJECT_DIR=`pwd`
$ which cucumber
/usr/local/bin/cucumber
$ ln -s `which cucumber` cukes #required for profiler to have local file in next step
$ ruby-prof cukes -- features/manager_overview.feature:36

这实际上运行了第 36 行的单黄瓜场景,但结果并不是特别有用

于 2009-08-12T12:01:04.060 回答
2

使用 ruby​​-prof,您可以在主题代码之前启动分析器并在之后再次停止它。例如。:

require 'ruby-prof'
RubyProf.start
# code here
result = RubyProf.stop

# You can then output the trace in different ways.
# Simply print a overview to stdout
printer = RubyProf::FlatPrinter.new(result)
printer.print($stdout, :min_percent => 0.1)

# Save a callgrind trace
# You can load this up in kcachegrind or a compatible tool.
printer = RubyProf::CallTreePrinter.new(result)
File.open "callgrind.out.42", 'w' do |file|
  RubyProf::CallTreePrinter.new(result).print(file)
end
于 2009-08-12T11:58:12.727 回答