如何跟踪性能测试

时间:2009-09-09 16:20:12

标签: performance-testing test-environments

我目前正在对一个复杂的多层系统进行性能和负载测试,调查不同变化的影响,但是我在跟踪所有事情时遇到了问题:

  • 有许多不同程序集的副本
    • Orignally发布的程序集
    • 正式发布的修补程序
    • 我构建的程序集包含更多其他修补程序
    • 我构建的包含其他诊断日志记录或跟踪的程序集
  • 有许多数据库补丁,上述某些程序集依赖于正在应用的某些数据库补丁
  • 存在许多不同的日志记录级别,位于不同的层中(应用程序日志记录,应用程序性能统计信息,SQL Server分析)
  • 有许多不同的场景,有时仅测试1个场景非常有用,有时我需要测试不同场景的组合。
  • 可以在多台计算机上分配或仅在一台计算机上
  • 数据库中存在的数据可以更改,例如,某些测试可能是使用生成的数据完成的,然后是从实时系统中获取的数据。
  • 每次测试后都会收集大量潜在的效果数据,例如:
    • 许多不同类型的应用程序特定日志记录
    • SQL事件探查器跟踪
    • 事件日志
    • 的DMV
    • Perfmon专柜
  • 数据库的大小是几个Gb 所以我会使用备份恢复到以前的状态我倾向于对上次测试后出现的数据库应用更改,导致我迅速疏通事物。

我尽可能多地收集有关我所做的每项测试的信息(测试的场景,哪些补丁应用于数据库中的数据),但我仍然发现自己因为结果不一致而不得不重复测试。例如,我刚做了一个测试,我认为这是几个月前运行的测试的完全重复,但数据库中有更新的数据。我知道新数据应该导致性能下降,但结果显示相反!

与此同时,我发现自己要记录这些所有细节的不成比例的时间。

我考虑过的一件事是使用脚本来自动收集性能数据等......但我不确定这是一个好主意 - 不仅是花在开发脚本而不是测试上的时间,而且我的脚本中有错误可能会让我更快地忘记事情。

我正在听取一些关于如何更好地管理测试环境的建议/提示,特别是如何在收集所有内容之间取得平衡,并实际完成一些测试,否则可能会丢失重要信息?

3 个答案:

答案 0 :(得分:0)

编写测试参数+环境的集合是一个非常好的想法。如果您在几天内进行测试,并且脚本编写需要一天时间,则需要花费大量时间。如果在一天后你看到它不会很快完成,重新评估并可能停止追求这个方向。

但你应该自己尝试一下。

答案 1 :(得分:0)

我倾向于同意@orip,脚本编写至少部分工作量可能会节省您的时间。您可以考虑花点时间询问哪些任务在您的人工方面最耗时,以及他们对自动化的合理程度如何?脚本特别擅长收集和汇总数据 - 通常比人们好得多。如果性能数据需要您进行大量解释,则可能会遇到问题。

编写这些任务的脚本的一个优点是,您可以在源/补丁/分支旁边检查它们,您可能会发现您从系统复杂性的组织结构中受益,而不是像现在那样努力追逐它

答案 2 :(得分:0)

如果您只是针对一些可以使管理员保持简单的设置配置而逃脱测试。它还可以更容易地将一个虚拟机放置在可以快速重新部署以提供干净基线的虚拟机上。

如果您真的需要您描述的复杂性,我建议您构建一个简单的数据库,以便查询您拥有的多变量结果。为每个重要因素设置一个列将允许您查询诸如“什么测试配置的延迟差异最小?”之类的问题。和“哪个测试数据库允许引发大多数错误?”。我使用sqlite3(可能通过Python包装器或Firefox插件)来实现这种轻量级集合,因为它可以将维护开销保持在相对较低的水平,并且可以避免让测试中的系统受到太大影响,即使您需要运行同一个盒子。

编写测试脚本会使它们更快地执行并允许以已经订购的方式收集结果,但听起来您的系统可能过于复杂而无法轻松完成。