是否有任何隔离测试应用程序的技术?

bon*_*rno 2 .net ruby java testing profiling

我在剖析中是个假人,请告诉我你的人如何分析你的申请.哪一个更好,分析整个应用程序或隔离?如果选择是隔离你如何做到这一点?

Ste*_*n C 5

尽可能分析整个应用程序,运行真实(典型)工作负载.除此之外,您还有可能获得结果,导致您将优化工作集中在错误的位置.

编辑

在分析整个应用程序时,是否难以获得正确的结果?所以测试结果取决于用户交互(按钮点击等)而不是使用自动任务?告诉我,如果我错了.

获得"正确的结果"取决于您如何解释分析数据.例如,如果要分析交互式应用程序,则应该确定配置文件的哪些部分对应于等待用户交互,并忽略它们.

在部分中分析应用程序时存在许多问题.例如:

  • 通过预先确定要分析的应用程序的哪些部分,您无法很好地了解不同部分的相对贡献,并且您可能会在错误的部分上浪费精力.

  • 你几乎必须使用人工工作负载.每当您这样做时,存在工作负载不能代表"正常"工作负载的风险,并且您的分析结果存在偏差.

  • 在许多应用程序中,瓶颈是由于应用程序的各个部分彼此交互,或者与I/O或垃圾收集交互的方式.分别对应用程序的不同部分进行概要分析可能会错过这些交互.

......我正在寻找的是技术

粗略地说,你从配置文件数据中确定的最大的"热点"开始,然后向下钻取,直到你弄清楚为什么在某个区域花了这么多钱.如果您的分析工具可以自上而下和自下而上聚合并呈现数据,那将非常有用.

但是,在一天结束时,从分析证据(热点,堆栈快照等)到根本原因,补救措施往往取决于来自经验的实践知识和直觉.

(是啊......我胡扯了一下.但我的观点是,有没有神奇的公式这样做.最终,你必须使用你的大脑......就像你调试一个复杂的应用程序时.)