在运行自动化性能测试时,是否最好预加载会延缓测试首次运行的所有DLL?这样可以提高测试结果的一致性,但不会反映最坏的情况。

如何在性能测试中处理此问题?

#1 楼

我对此有两种想法。


不加载它们-Web应用程序发现了很多问题,而DLL和其他此类对象却没有首先加载到内存中。两个“并发用户”同时“敲打”所有文件之前同时点击该应用程序,这造成了一些非常奇怪的并发问题,仅在该实例中才发生。如果测试的目的是在加载时检查这些初始化条件,则请不要首先在DLL中加载它们。
将它们加载-对于许多应用程序,该应用程序已在下次启动并运行了一段时间有人点击了它,因此在预加载DLL时,大多数常规性能测试都是最“现实”的。

本质上,两种不同的测试需要两个不同的答案。

评论


我感兴趣的一种测试是衡量性能。因此,这些测试一次运行一次。因此,我认为您的第二个论点适用于我的情况。

– Alex B
2011年5月19日在12:52

您可能要检查“首次运行”性能。因此,这些都可以是性能测试。我会说,为了保持一致性,大多数性能测试都不要加载;但请注意,您缺少一些关键方案,并确定是否需要进行首次运行性能测试。请记住,首次运行是您最终用户的第一印象。我还发现,性能测试通常是在大型团队中发现最有趣的并发问题的地方。

– Ethel Evans
2011年5月19日17:16

#2 楼

两种方式都进行测试,尤其是在用户可能遇到尚未加载DLL的情况下。

@Tristaan​​的回答充分说明了为什么您真的应该同时进行两种方式。

话虽如此,在大多数性能或负载测试中,我们会逐渐增加负载,因为在现实生活中通常就是这样。因此,在大多数情况下,随着系统负载的增加,所有内容的初始加载的延迟和问题通常都没有机会影响系统的性能。

关于系统只有突然突然从无到有立即变为满负荷,这是在“农场”情况下,该情况正在以高容量运行,并且会启动额外的服务器并将其联机以帮助处理负载(在动态配置的云环境)。如果您的情况有可能发生这种情况,则也将该场景添加到测试中。

#3 楼

如果您查看TPC,SPEC等提供的任何标准基准测试,您会注意到它们全部包括性能测试中的预热期,满负载时间和下降间隔。此加速期的目的是允许在首次执行时编译需要编译的代码,或者在进入满载间隔时间之前加载要加载的库,以测量最佳性能。这个加速/预热期是商业基准测试领域中的最佳实践,市场上有很多性能不佳/未经培训的测试人员,他们只需将负载从0%提高到100%,而只需几个步骤即可任何类型的预热间隔。有一个市场比喻为“茶道”。事情是这样的:“先喝一瓶茶伏特加酒和一瓶伏特加。迅速结合。您会受到整个系统的冲击。另一方面,一次喝一杯茶积木,一瓶伏特加酒和一个装满伏特加酒的顶针,您可能会更平滑地进行测试,并且还可能找到随着负载增加而系统崩溃的确切位置....通常在某个点上大于一次合并所有模型。”