slcoverage.MetricSelector class

Пакет: slcoverage

Выберите метрический критерий для фильтра покрытия

Описание

Используйте объект slcoverage.MetricSelector Класс для определения критериев выбора метрики для правила фильтрации покрытия.

The slcoverage.MetricSelector класс является handle класс.

Конструкция

sel = slcoverage.MetricSelector(type,element,objIndex,outIndex) создает метрический объект типа type для заданного элемента модели element по целевому индексу objIndex и индекс результата outIndex.

Правило выравнивания можно создать только для селектора метрики. Дополнительные сведения о различии между обоснованием и исключением см. в разделе Фильтрация покрытия.

Для получения дополнительной информации о состоянии и Decision Coverage таблицах, полученных в отчете, смотрите Отчет о покрытии модели верхнего уровня.

Входные параметры

расширить все

Тип селектора метрики, заданный как:

  • slcoverage.MetricSelectorType.ConditionOutcome объекты выбирают условие метрические целевые результаты.

  • slcoverage.MetricSelectorType.DecisionOutcome объекты выбирают целевые результаты метрики принятия решений.

  • slcoverage.MetricSelectorType.MCDCOutcome объекты выбирают метрические целевые результаты MCDC.

  • slcoverage.MetricSelectorType.RelationalBoundaryOutcome объекты выбирают метрики результата, связанные с результатами реляционных границ.

  • slcoverage.MetricSelectorType.SaturationOverflowOutcome объекты выбирают метрики результата, связанные с насыщением на результатах целочисленного переполнения.

Моделируйте элемент, который нужно выбрать, заданный как указатель или Simulink® идентификатор элемента модели.

Пример: 'sldemo_lct_bus:18'

Индекс цели, которую вы хотите фильтровать, заданный как целое число.

Пример: 1

Индекс результата, который вы хотите фильтровать, заданный как целое число.

Пример: 2

Свойства

расширить все

Код, используемый для создания этого объекта селектора, возвращенный как вектор символов.

Признаки

SetAccess

защищенный

Описание селектора, возвращаемое как вектор символов. Simulink Coverage™ создает описание на основе селектора.

Признаки

SetAccess

защищенный

Это свойство доступно только для чтения.

Идентификатор элемента модели, возвращенный как вектора символов идентификатора Simulink или указателя.

Это свойство доступно только для чтения.

Индекс цели для этого селектора, возвращенный как целое число.

Это свойство доступно только для чтения.

Индекс результата для этого селектора, возвращенный как целое число.

Это свойство доступно только для чтения.

Тип селектора, возвращенный следующим ConditionOutcome, DecisionOutcome, MCDCOutcome, RelationalBoundaryOutcome, или SaturationOverflowOutcome.

Выходы

расширить все

Селектор объекта, возвращенный как slcoverage.MetricSelector объект или массив slcoverage.MetricSelector объекты.

Методы

Общедоступные методы

allSelectorsСелекторы для модели или элемента кода

Примеры

свернуть все

В этом примере показано, как выбрать метрику и добавить правило, которое использует эту метрику. В этом примере вы создаете правило, чтобы обосновать неудовлетворенное решение для блока Насыщения.

Откройте модель и включите анализ покрытия

Загрузите модель в память.

modelName = 'slvnvdemo_covfilt';
load_system(modelName);

Использование Simulink.SimulationInput объект, чтобы сконфигурировать покрытие для модели.

covSet = Simulink.SimulationInput(modelName);
covSet = covSet.setModelParameter('CovEnable','on');
covSet = covSet.setModelParameter('CovMetricStructuralLevel','MCDC');
covSet = covSet.setModelParameter('CovSFcnEnable','on');
covSet = covSet.setModelParameter('StopTime','20');
covSet = covSet.setModelParameter('CovSaveSingleToWorkspaceVar','on');
covSet = covSet.setModelParameter('CovSaveName','covData');

Симулируйте модель с помощью SimulationInput объект как вход.

simOut = sim(covSet);

Просмотрите результаты покрытия перед применением фильтра. Вы можете получить доступ к покрытию с помощью decisioninfoили можно просмотреть HTML с помощью cvhtml.

covInitial = decisioninfo(covData,[modelName,'/Saturation']);
percentInitial = 100 * covInitial(1)/covInitial(2)
percentInitial =

    50

cvhtml('covReportInitial',covData)

Оба decisioninfo и cvhtml показать тот же результат 50% Decision Coverage. Если вы не намерены свои текущие тесты для осуществления этого результата, можно обосновать результат, поэтому он больше не указывается как недостающее покрытие.

В этом примере мы оправдываем false результаты принятия решения по input > lower limit цель принятия решения в блоке Насыщение.

Обоснование отсутствующей цели условия

MetricSelector объекты принимают путь к блоку или указатель на блок как второй вход. Получите указатель на блок Насыщения при помощи getSimulinkBlockHandle.

id = getSimulinkBlockHandle([modelName,'/Saturation']);

Поскольку обоснованная цель является результатом решения, первый вход в конструктор селектора метрики slcoverage.MetricSelectorType.DecisionOutcome. Второй вход является указателем на блок. Последние два являются индексом цели, которая должна быть обоснована, и индексом результатов этой цели, соответственно.

Потому что input > lower limit цель решения является первой целью для блока Насыщения, его целевой индекс 1. Потому что false результатом этой цели является первый результат, его индекс результатов также 1. Поэтому последние два входа 1,1.

metr = slcoverage.MetricSelector(slcoverage.MetricSelectorType.DecisionOutcome,id,1,1);

Создайте фильтр и правило. В этом случае мы используем режим обоснования фильтра по умолчанию. Затем добавьте правило к фильтру с помощью addRule способ.

filt = slcoverage.Filter;
rule = slcoverage.FilterRule(metr,'Expected result');
filt.addRule(rule);

Сохраните фильтр в файл фильтра с помощью save способ. Затем примените файл фильтра к cvdata объект путем назначения filter свойство новому файлу фильтра.

filt.save('metrfilter');
covData.filter = 'metrfilter';

Повторно сгенерируйте результаты покрытия для блока Насыщения, используя новую отфильтрованную cvdata объект.

covFiltered = decisioninfo(covData,[modelName,'/Saturation']);
percentInitial = 100 * covFiltered(1)/covFiltered(2)
percentInitial =

    75

cvhtml('covReportFiltered',covData)

В отчете HTML выделен недостающий результат решения, чтобы указать, что он обоснован. Decision Coverage для блока Насыщения теперь составляет 75%.

Введенный в R2017b