性能断言检查系统的设计

时间:2008-10-03 05:43:32

标签: assertions

对“性能断言检查”系统的设计有何意见?

这个想法是开发人员对他/她的代码做出一些断言,并使用这些来测试代码的性能的演变。这种系统有什么经验?

我当前的块是“将这些断言转换为CLR,或者可以执行的汇编或字节码,用指​​定的语言(要根据指定的日志或运行时检测进行检查)转换为更好的方法是什么? “

目前我编写了一个解析器,解析规范并将其保存在数据结构中。

3 个答案:

答案 0 :(得分:3)

我们是否在应用程序中嵌入了性能检查?不可以。原因是性能检查本身需要时间,我们的应用程序对性能非常敏感。

相反,我们会对性能检查进行测试。为此,我们使用NUnit。对于我们的夜间构建,我们运行测试,我们生成一个日志,其中包含详细的时序数据以及满足我们要求的通过/失败指示。由于我们将日志保留了一段时间 - 对于测试版和生产版本而言 - 我们也可以随时跟踪性能。

答案 1 :(得分:1)

与Kevin类似,我将性能日志放入自动回归测试中,这样我就可以有效地回归测试性能和功能。我们使用TestComplete进行自动回归,它会自动执行此操作。手动添加它的主要原因是比较此运行的结果与每个检查点的上次运行结果。这类似于

StartTest
InitialiseCounter
'
'
Do some testing
'
'
CheckPoint
GetElapsedTime
Compare ElapsedTime with stored elapsed time from last run
If difference is outside tolerence log an error

(请原谅我的伪代码上的狡猾的突出显示)

答案 2 :(得分:0)

现在许多语言都有assert个语句。他们可以利用它们来验证您生成的断言吗?它们易于编写且易于查找。问题是断言失败意味着你的程序停止了。

如果要提供断言在运行时失败的警告或日志条目,可以尝试使用if语句。

对于这种代码生成,人们通常使用简单的模板工具来生成可插入应用程序的适当源。您可以查看Java的Velocity或Python的Mako来为您的断言条件生成源代码。