主要内容

性能测试框架概述

性能测试接口利用脚本、函数和基于类的单元测试接口。您可以在性能测试中执行限定,以在度量代码性能时确保正确的功能行为。此外,您可以将性能测试作为标准回归测试运行,以确保代码更改不会破坏性能测试。

确定测量代码的边界

该表指出不同类型的测试所度量的代码。

类型的测试 什么是测量 什么是排除
基于脚本的 代码在脚本的每个部分
  • 共享变量部分中的代码

  • 框架开销的测量估计

基于函数的 每个测试函数中的代码
  • 代码中有以下功能:设置setupOnce拆卸,teardownOnce

  • 框架开销的测量估计

基于类的 标记为的每个方法中的代码测试属性
  • 使用以下属性在方法中编写代码:TestMethodSetupTestMethodTeardownTestClassSetup,TestClassTeardown

  • 共享fixture设置和拆卸

  • 框架开销的测量估计

基于类的派生的matlab.perftest.TestCase和使用startMeasuringstopMeasuring方法 调用之间的代码startMeasuringstopMeasuring标记的每个方法中测试属性
  • 外部代码startMeasuring/stopMeasuring边界

  • 框架开销的测量估计

基于类的派生的matlab.perftest.TestCase和使用keepMeasuring方法 代码在每个keepMeasuring-while的标记的每个方法中的循环测试属性
  • 外部代码keepMeasuring-while边界

  • 框架开销的测量估计

时间实验类型

您可以创建两种类型的时间实验。

  • 一个频率论的时间实验收集可变数量的测量,以达到指定的误差幅度和置信水平。使用频率时间实验来定义测量样本的统计目标。生成这个实验使用runperf函数或limitingSamplingError静态法TimeExperiment类。

  • 一个固定的时间实验收集固定数量的度量值。使用固定时间实验来衡量代码的首次成本,或者明确控制样本大小。生成这个实验使用withFixedSampleSize静态法TimeExperiment类。

该表总结了频率实验与固定时间实验的区别。

频率论的时间实验 固定的时间实验
热身的测量 4默认,但可配置通过TimeExperiment.limitingSamplingError 默认为0,但可通过配置TimeExperiment.withFixedSampleSize
数量的样品 默认值在4到256之间,但可通过配置TimeExperiment.limitingSamplingError 实验构建时定义
相对误差幅度 默认为5%,但可通过配置TimeExperiment.limitingSamplingError 不适用
置信水平 默认为95%,但可通过配置TimeExperiment.limitingSamplingError 不适用
无效测试结果的框架行为 停止测量一个测试,进入下一个测试 收集指定数量的样本

使用度量边界编写性能测试

如果基于类的测试派生于matlab.perftest.TestCase而不是matlab.unittest.TestCase,然后你可以使用startMeasuringstopMeasuring方法或keepMeasuring方法来定义性能测试度量的边界。如果一个测试方法有多个调用startMeasuringstopMeasuringkeepMeasuring,然后性能测试框架积累并汇总度量值。性能测试框架不支持嵌套的度量边界。万博1manbetx如果你在一个测试方法并将测试作为TimeExperiment,则该框架将该度量标记为无效。此外,您仍然可以将这些性能测试作为单元测试运行。有关更多信息,请参见使用类测试性能

运行性能测试

运行性能测试有两种方法:

  • 使用runperf函数运行测试。该函数使用可变数量的测量来达到样本均值,相对误差范围为0.05,置信度为0.95。它运行测试4次以预热代码,并运行4至256次以收集满足统计目标的度量值。

  • 生成一个显式测试套件使用testsuite函数中的方法TestSuite类,然后创建并运行一个时间实验。

    • 使用withFixedSampleSize的方法TimeExperiment类构造一个带有固定数量测量值的时间实验。您可以指定固定数量的热身测量和固定数量的样品。

    • 使用limitingSamplingError的方法TimeExperiment类以指定的统计目标(如误差幅度和置信水平)构造一个时间实验。此外,您还可以指定热身测量的数量和样品的最小和最大数量。

您可以将性能测试作为回归测试运行。有关更多信息,请参见使用类测试性能

理解无效的测试结果

在某些情况下MeasurementResult对于被标记为无效的测试结果。属性设置时,测试结果被标记为无效有效的财产的MeasurementResult为假。如果测试失败或被过滤,则会发生此无效。同样,如果您的测试不正确地使用startMeasuringstopMeasuring的方法matlab.perftest.TestCase,那么MeasurementResult因为那个测试被标记为无效。

当性能测试框架遇到无效的测试结果时,它的行为取决于时间实验的类型:

  • 如果您创建了一个频繁时间实验,那么框架将停止对该测试的测量,并转向下一个测试。

  • 如果您创建一个固定时间的实验,那么框架将继续收集指定数量的样本。

另请参阅

|||

相关的话题