2017-01-06 20 views
0

当我在XCode中运行我的性能测试用例时,我可以设置基线。如果测量结果与基线不同,则会失败。如何在Xcode中为性能测试设置最大值

例如,基线是1秒。测试用例将在以下情况下会失败:

  • 测量是1.5秒

  • 测定为0.5秒

我想看到故障以防万一测量是慢于基线(1.5秒)。如果速度更快(0.5秒),我很高兴,我希望看到绿色测试案例。 有没有办法做到这一点?指定不是基线而是最大值?

回答

1

要回答这个问题,我们必须了解XCodeTest的性能测试。该测试将在本质上,一个完整的测试运行期间记录以下两个属性:

  • 的这些试验的10个测试运行测量
  • 的标准偏差(指示测量的扩散)的平均结果运行

的(自动计算)基线从以前的测试运行指定的,并会导致测试失败如果有两个条件都不满足:

  1. 的AVERA测试运行中的ge不得超过给定基线平均值的10%(基线avarage是可配置并存储在源代码中的)。
  2. 标准偏差不得超过给定的百分比,比如说平均值为max_STDDEV%。值max_STDDEV默认设置为10%,可以在Performance Result GUI弹出窗口中更改。

从上面的规则,我们认识到,你的测试运行“太快”的时候看似失败的原因不是由于传递一个特定下限值(0.5秒),而是说传播的测量值变得过大,失败标准偏差条件2.以上。

试图挽回这将是增加的测量(max_STDDEV)最大允许标准偏差值,但是这是有风险的是仅仅依靠平均状况将允许测试一个不太好办法即使是例如以下情景(平均等于基线(1),但具有40%的大型标准开发)。

​​ (图片来自下面第一参考,WWDC 2014届)

在性能测试方面,要确保测试的实现和算法,有一个有点确定性特点,使得目的的测试可能是发现性能突破的语言/ API更新或新的代码实现。如果您的测试场景确实如上面那样,那么在仔细考虑之后,可能需要仔细查看它,并且可能会提高允许的最大标准偏差。例如。对于随机算法,可以允许大的标准偏差,更多地依赖于平均性能。危险测试例如然而,具有较大允许的stddev的随机算法是,只有10个测试可能不足以捕获性能损失。

参见:

相关问题