文档

性能测试框架概述

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

确定测量代码的界限

此表指示针对不同类型的测试度量哪些代码。

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

  • 框架开销的测量估计

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

  • 框架开销的测量估计

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

  • 共享夹具的设置和拆卸

  • 框架开销的测量估计

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

  • 框架开销的测量估计

时间实验的类型

你可以创建两种时间实验。

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

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

这个表总结了频率实验和固定时间实验之间的区别。

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

编写带有度量边界的性能测试

如果基于类的测试派生自matlab.perftest.TestCase而不是matlab.unittest.TestCase,然后您可以使用startMeasuringstopMeasuring方法来定义性能测试测量的边界。具有度量边界的测试方法必须调用startMeasuring在调用之前stopMeasuring.如果测试方法有多个调用startMeasuringstopMeasuring,然后性能框架对测量结果进行累加和。性能框架不支持嵌套的度量边界。万博1manbetx如果您错误地使用了这些方法测试方法,并将测试作为TimeExperiment,则框架将该测量标记为无效。此外,您仍然可以将这些性能测试作为单元测试运行。有关更多信息,请参见使用类测试性能

运行性能测试

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

  • 使用runperf函数运行测试。该函数使用可变数量的测量值来达到样本平均值,在0.95置信水平内具有0.05的相对误差边际。它将运行四次测试来预热代码,并运行4到32次测试来收集满足统计目标的度量。

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

    • 使用withFixedSampleSize方法TimeExperiment类来构造具有固定测量次数的时间实验。您可以指定固定数量的热身测量和固定数量的样本。

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

您可以将性能测试作为回归测试运行。有关更多信息,请参见为各种工作流运行测试

理解无效测试结果

在某些情况下,MeasurementResult对于标记为无效的测试结果。属性时,测试结果被标记为无效有效的的属性MeasurementResult为假。如果测试失败或被过滤,就会发生这种无效。此外,如果您的测试错误地使用startMeasuringstopMeasuring的方法matlab.perftest.TestCase,则MeasurementResult因为那个测试被标记为无效。

当性能测试框架遇到无效的测试结果时,它的行为会根据时间实验的类型而有所不同:

  • 如果您创建了一个频率时间实验,那么框架将停止该测试的测量,转而进行下一个测试。

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

另请参阅

|||

相关的话题

这个话题有用吗?