3

单元测试是衡量应用程序功能的好方法,但我想知道是否有人将它们用于一些初步的性能分析?

我所说的是运行一些分析工具作为自动化测试运行的一部分,保存性能结果,然后将它们与一些任意值进行比较,这样任何瓶颈都会跳出来。例如,我最近有一个案例,一个 Django 标记库实际上将模板解析时间增加了十倍——如果模板解析是在单元测试中构建的,它会更快地可见。

是否有任何模块可以在标准 Django 和/或 Python 设置中包含这种测量?如果没有,你对我自己的写作有什么特别的建议或提醒吗?谢谢!

4

1 回答 1

2

我将描述我们正在尝试做些什么来估计版本之间的初步性能影响。不确定这是否是最好的方法,但它对我们有用。

我们的 Python/Django 项目中有很多测试。我们使用鼻子作为测试运行器。你可能知道,它有一个内置的命令行选项--with-xunit,可以将测试结果转储到 xUnit 格式的 xml 文件中(顺便说一下,jenkins CI 支持)。

每次发布时,我们都会执行一次测试运行,nose 会为我们生成一个 xml 文件(我们将其存储在代码存储库中)。这是其中的一部分:

...
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" name="test_full_access_ok"
          time="1.775"/>
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases"
          name="test_illegal_assigned_flag" time="0.008"/>
<testcase classname="prj.tests.functional.services.workflow.test_getCases.GetCases" name="test_illegal_comments"
          time="0.049"/>
...

正如您可能注意到的,time所有测试用例都有一个属性。因此,我们所做的只是将测试用例的执行时间按名称与以前和当前版本进行比较(基本上,比较两个 xml 文件)。

希望有帮助。

于 2013-05-29T12:04:32.260 回答