Java中的自动运行时性能回归测试
我正在寻找自动检测代码运行时性能变化的方法。这将以与JUnit类似的方式进行操作,但它不会测试代码的功能,而是测试速度的突然变化。据我所知,目前还没有自动执行此操作的工具 因此,第一个问题是:有什么工具可以实现这一点吗? 第二个问题是:如果没有可用的工具,我需要推出自己的工具,那么需要解决哪些问题? 如果第二个问题是相关的,那么以下是我看到的问题:Java中的自动运行时性能回归测试,java,performance,regression-testing,caliper,Java,Performance,Regression Testing,Caliper,我正在寻找自动检测代码运行时性能变化的方法。这将以与JUnit类似的方式进行操作,但它不会测试代码的功能,而是测试速度的突然变化。据我所知,目前还没有自动执行此操作的工具 因此,第一个问题是:有什么工具可以实现这一点吗? 第二个问题是:如果没有可用的工具,我需要推出自己的工具,那么需要解决哪些问题? 如果第二个问题是相关的,那么以下是我看到的问题: 可变性取决于运行它的环境 既然Java中的微基准有很大的差异,那么如何检测变化呢 如果Caliper收集结果,如何从Caliper中获取结果,以便以
我不知道有什么单独的工具可以处理这个问题,但是JUnit在-annotation中有一个可选参数,名为timeout: 第二个可选参数timeout在以下情况下导致测试失败: 所需时间超过指定的时钟时间(以秒为单位) 毫秒)。以下测试失败: 因此,您可以编写额外的单元测试来检查某些部分是否“足够快”。当然,您需要首先确定特定任务运行的最长时间 - 如果第二个问题是相关的,那么下面是我要讨论的问题 见:
不幸的是,我对卡钳一无所知。看看卡钳CI,我昨天发布了2.0版作为Jenkins插件。我刚刚遇到了一个看起来合适的,在scala和java中工作的版本 我看到一个问题:“有没有一个现有的图书馆已经这样做了?”。这是问题吗?这是一个问题。如果没有,我需要自己滚动,需要解决哪些问题。我将稍微修改一下这个问题。Caliper的所有内容都不足,对此我深表歉意,并承诺在未来(少量)几个月内会发生变化。如果junit从文件中读取预期时间,则junit超时可能会起作用。仍然是创建和维护所有这些测试的问题。倾向于组合基准/回归测试以避免该问题。我可能会被困在一起测试大量代码,就像你建议的那样,以避免过多的误报。这可能接近于我想要的。希望使用几乎没有配置的独立应用程序。我的目标项目不是很大,不需要持续的集成测试。
@Test(timeout=100) public void infinity() {
while(true);
}