Интерфейс тестирования производительности использует интерфейсы тестирования блоков на основе сценариев, функций и классов. Вы можете выполнить квалификацию в рамках тестов производительности, чтобы гарантировать правильное функциональное поведение при измерении производительности кода. Кроме того, можно выполнять тесты производительности как стандартные регрессионные тесты, чтобы изменения кода не нарушали тесты производительности.
В этой таблице указано, какой код измеряется для различных типов тестов.
| Тип испытания | Что измеряется | Что исключается |
|---|---|---|
| Сценарий на основе | Код в каждом разделе сценария |
|
| Функционально-зависимый | Код в каждой тестовой функции |
|
| На основе класса | Код в каждом методе, помеченный Test признак |
|
Деривация на основе класса matlab.perftest.TestCase и использование startMeasuring и stopMeasuring методы | Код между вызовами в startMeasuring и stopMeasuring в каждом методе, помеченном Test признак |
|
Деривация на основе класса matlab.perftest.TestCase и с использованием keepMeasuring метод | Код внутри каждого keepMeasuring-while цикл в каждом методе, помеченном тегом Test признак |
|
Можно создать два типа временных экспериментов.
Частотный временной эксперимент собирает переменное количество измерений для достижения заданного предела погрешности и доверительного уровня. Используйте временной эксперимент для определения статистических целей для образцов измерений. Создать этот эксперимент с помощью 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, то вы можете использовать startMeasuring и stopMeasuring методы или keepMeasuring способ многократно определяет границы для измерений эксплуатационных испытаний. Если метод тестирования имеет несколько вызовов startMeasuring, stopMeasuring и keepMeasuringзатем структура тестирования производительности накапливает и суммирует измерения. Структура тестирования производительности не поддерживает границы вложенных измерений. При неправильном использовании этих методов в Test метод и запуск теста в качестве TimeExperiment, то фреймворк помечает измерение как недопустимое. Кроме того, эти тесты производительности по-прежнему можно выполнять как единичные тесты. Дополнительные сведения см. в разделе Тестирование производительности с использованием классов.
Существует два способа выполнения тестов производительности:
Используйте runperf для выполнения тестов. Эта функция использует переменное количество измерений для достижения среднего значения выборки с относительным пределом погрешности 0,05 в пределах доверительного уровня 0,95. Он проводит тесты четыре раза для разогрева кода и от 4 до 256 раз для сбора измерений, которые соответствуют статистическим целям.
Создание явного набора тестов с помощью testsuite функции или методов в TestSuite класс, а затем создайте и запустите временной эксперимент.
Используйте withFixedSampleSize способ TimeExperiment класс для построения временного эксперимента с фиксированным числом измерений. Можно указать фиксированное количество измерений прогрева и фиксированное количество образцов.
Используйте limitingSamplingError способ TimeExperiment класс для построения временного эксперимента с определенными статистическими целями, такими как предел погрешности и уровень достоверности. Также можно указать количество измерений прогрева и минимальное и максимальное количество образцов.
Можно выполнить тесты производительности как регрессионные тесты. Дополнительные сведения см. в разделе Тестирование производительности с использованием классов.
В некоторых ситуациях MeasurementResult для результата теста помечен как недопустимый. Результат теста помечается как недопустимый, когда платформа тестирования производительности устанавливает Valid имущества MeasurementResult в значение false. Это аннулирование происходит в случае неуспешного завершения теста или фильтрации. Кроме того, если ваш тест неправильно использует startMeasuring и stopMeasuring методы matlab.perftest.TestCase, то MeasurementResult для этого теста помечен как недопустимый.
Когда платформа тестирования производительности обнаруживает недопустимый результат теста, она ведет себя по-разному в зависимости от типа временного эксперимента:
Если вы создаете частотный эксперимент времени, то фреймворк прекращает измерения для этого теста и переходит к следующему тесту.
Если создать эксперимент с фиксированным временем, то фреймворк продолжит сбор указанного количества выборок.
matlab.perftest.TimeExperiment | matlab.unittest.measurement.MeasurementResult | runperf | testsuite