我在这个问题中使用Java,但这确实适用于所有现代应用程序开发。我们的 “环境管道”,像许多人,看起来是这样的:跨环境的精确测试性能测试
- 开发沙箱
- 持续集成&测试
- QA /舞台
- 生产
硬件,可用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次,结果大不相同。
那么请问:如何做一个准确/可靠的定义&仪表自动化性能测试,代码从一个环境提升到下一个?
在此先感谢!
优秀的建议 - 谢谢艾克斯,我upvoted你的答案,但不得不给绿色检查rfreak,因为它只是一个* teeny *位更适用于我的情况。不过谢谢你。 – IAmYourFaja 2012-02-02 22:00:54