gpt4 book ai didi

java - 准确衡量跨环境的性能测试

转载 作者:行者123 更新时间:2023-11-30 09:41:05 25 4
gpt4 key购买 nike

我在这个问题中使用了 Java,但这确实适用于所有现代应用程序开发。我们的“环境管道”与其中许多管道一样,如下所示:

  • 开发者沙箱
  • 持续集成和测试
  • 质量保证/分期
  • 制作

每种环境中的硬件、可用 RAM 和 CPU 都不同:我的笔记本电脑是 2GB 双核 Windows 机器。测试在 4GB 机器上运行。生产是两台(负载平衡的)8GB 四核服务器。

显然,相同的代码在这些不同的机器(环境)上运行时会表现不同。

我正在考虑为我的一些类编写自动化性能测试,其形式如下:

private static final long MAX_TIME = 8000;

@Test
public final void perfTestSomething() {
long start = System.currentTimeInMillis();

// Run the test

long end = System.currentTimeInMillis();

assertTrue((end - start) < MAX_TIME);
}

因此,如果测试运行时间超过 8 秒,则自动性能测试失败。

但后来我突然意识到:代码在不同的环境中运行会有所不同,并且会根据 JVM 和 GC 的状态运行不同。我可以在自己的机器上运行相同的测试 1000 次,但结果却截然不同。

所以我问:当代码从一个环境提升到另一个环境时,如何准确/可靠地定义和衡量自动化性能测试?

提前致谢!

最佳答案

您可能只想在控制更严格的给定位置运行性能测试。您不一定需要在所有环境中运行它们,这样做没有什么好处。您应该在最接近生产配置的环境中运行它们(这才是您真正关心的,对吧?)。

此外,请确保在性能限制中给自己合理的开销。不要将它们锁定在您的服务器现在所做的之上。选择一些合理的阈值来考虑当前运行中的一些变化。

从长远来看,我发现更有用的是性能数据随时间变化的图表。不是硬性限制。这样我们就可以观察各种功能随时间变化的趋势,并在趋势太高时对其进行攻击。

关于java - 准确衡量跨环境的性能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9116477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com