我目前正在对复杂的多层系统进行性能和负载测试,以调查不同更改的影响,但我在跟踪所有内容时遇到了问题:
- 有许多不同程序集的副本
- 最初发布的组件
- 正式发布的修补程序
- 我构建的包含更多附加修复的程序集
- 我构建的包含附加诊断日志记录或跟踪的程序集
- 有许多数据库补丁,上面的一些程序集依赖于正在应用的某些数据库补丁。
- 存在许多不同的日志记录级别,位于不同的层(应用程序日志记录、应用程序性能统计信息、SQL 服务器分析)
- 有很多不同的场景,有时只测试一种场景很有用,有时我需要测试不同场景的组合。
- 负载可以分布在多台机器上,也可以只分布在一台机器上
- 数据库中存在的数据可能会发生变化,例如,一些测试可能会使用生成的数据进行,然后使用从实时系统中获取的数据。
- 每次测试后都会收集大量潜在的性能数据,例如:
- 许多不同类型的特定于应用程序的日志记录
- SQL 事件探查器跟踪
- 事件日志
- 车管所
- 性能计数器
- 数据库有几个 Gb 大小,所以我会使用备份恢复到以前的状态,我倾向于在上次测试后对任何存在的数据库应用更改,这导致我很快就失去了对事物的跟踪。
我尽可能多地收集关于我所做的每个测试的信息(测试的场景,应用了哪些补丁,数据库中有哪些数据),但由于结果不一致,我仍然发现自己不得不重复测试。例如,我刚刚做了一个测试,我认为它与几个月前运行的测试完全相同,但是数据库中的数据已更新。我知道新数据应该会导致性能下降,但结果却恰恰相反!
与此同时,我发现自己花费了不成比例的时间来记录所有这些细节。
我考虑过的一件事是使用脚本来自动收集性能数据等......,但我不确定这是一个好主意 - 不仅花时间开发脚本而不是测试,而且我的脚本中的错误可能会导致我更快地追踪事物。
我正在寻求一些关于如何更好地管理测试环境的建议/提示,特别是如何在收集所有内容和实际完成一些测试之间取得平衡,以免遗漏一些重要的东西?