exponenta event banner

Получение сведений о покрытии из результатов

Анализ данных покрытия с помощью сценария

В этом примере показано, как загружать, анализировать и запрашивать данные покрытия с помощью сценария.

Данные о покрытии нагрузки

Загрузите модель, а затем восстановите сохраненные данные покрытия из файла covdata.cvt использование cvload. Данные и параметры тестирования извлекаются из массива ячеек. Настройки теста хранятся в cvtest объект, содержащий параметры моделирования, которые создали данные покрытия.

load_system('slvnvdemo_ratelim_harness');
[savedSettings,savedData] = cvload('covdata');
savedData = savedData{1};

Извлечение информации из объектов данных покрытия

Получение информации о покрытии из пути блока или дескриптора блока с помощью decisioninfo. Выходные данные представляют собой вектор с полученными и суммарными результатами для одного объекта модели.

subsysCov = decisioninfo(savedData,...
                   'slvnvdemo_ratelim_harness/Adjustable Rate Limiter')
subsysCov =

     5     6

Определение процентного покрытия, достигаемого с помощью decisioninfo.

percentCov = 100 * (subsysCov(1)/subsysCov(2))
percentCov =

   83.3333

Укажите, что требуется извлечь данные покрытия принятия решения для блока коммутатора с именем Apply Limited Gain с помощью decisioninfo. Это возвращает структуру, которая содержит решения и результаты.

[blockCov,desc] = decisioninfo(savedData, ...
         'slvnvdemo_ratelim_harness/Adjustable Rate Limiter/Apply limited gain');
descDecision = desc.decision;
outcome1 = desc.decision.outcome(1)
outcome2 = desc.decision.outcome(2)
outcome1 = 

  struct with fields:

               text: 'false (out = in3)'
     executionCount: 0
         executedIn: []
         isFiltered: 0
        isJustified: 0
    filterRationale: ''


outcome2 = 

  struct with fields:

               text: 'true (out = in1)'
     executionCount: 101
         executedIn: []
         isFiltered: 0
        isJustified: 0
    filterRationale: ''

От decisioninfo вывод, вы можете видеть, что блок коммутатора под названием Apply Limited Gain никогда не был ложным, потому что ложный случай executionCount поле имеет значение 0. Если такое поведение ожидается, и вы не собирались выполнять это дело с помощью тестов, вы можете добавить правило фильтра, чтобы оправдать это отсутствие покрытия, используя slcoverage.Filter класс.

Во-первых, запрос на фильтрацию экземпляра блока, так как нам нужно фильтровать только тот экземпляр блока, который получил неполное покрытие, но не все экземпляры этого типа блока. Затем используйте slcoverage.BlockSelector класс с BlockInstance тип селектора для обозначения одного экземпляра блока для фильтрации.

id = getSimulinkBlockHandle('slvnvdemo_ratelim_harness/Adjustable Rate Limiter/Apply limited gain');
sel = slcoverage.BlockSelector(slcoverage.BlockSelectorType.BlockInstance,id);

Создание объекта фильтра и правила фильтра с помощью slcoverage.Filter и slcoverage.FilterRule классы.

filt = slcoverage.Filter;
rule = slcoverage.FilterRule(sel,'Edge case',slcoverage.FilterMode.Justify);

Добавьте правило к фильтру с помощью addRule способ. Затем сохраните новый файл фильтра с помощью save способ.

filt.addRule(rule);
filt.save('blfilter');

Создание нового cvdata из исходного объекта и применить к нему файл фильтра. Использовать decisioninfo на отфильтрованных данных покрытия, чтобы увидеть, что теперь 100% покрытия решения, потому что оправданные цели считаются удовлетворенными.

FilteredData = savedData;
FilteredData.filter = 'blfilter';
newCov = decisioninfo(FilteredData,...
                   'slvnvdemo_ratelim_harness/Adjustable Rate Limiter')
percentNewCov = 100 * (newCov(1)/newCov(2))
newCov =

     6     6


percentNewCov =

   100

Функции информации о покрытии

После сбора данных покрытия можно извлечь определенную информацию о покрытии из cvdata с помощью следующих функций. Эти функции используются для извлечения указанной информации о покрытии для блока, подсистемы или диаграммы Stateflow ® в модели или для самой модели.

Можно включить подсветку покрытия в модели Simulink с помощью cvmodelview. Отчет о покрытии также можно просмотреть с помощью cvhtml.

  • complexityinfo - Цикломатическое покрытие сложности

  • executioninfo - Покрытие исполнения

  • conditioninfo - Покрытие состояния

  • decisioninfo - Охват принятием решений

  • mcdcinfo - Покрытие для принятия решений по измененным условиям (MCDC)

  • overflowsaturationinfo - Насыщение при покрытии целочисленного переполнения

  • relationalboundaryinfo - Покрытие реляционных границ

  • sigrangeinfo - Охват диапазонов сигналов

  • sigsizeinfo - Охват по размеру сигнала

  • tableinfo - Охват блоков таблицы подстановки

  • getCoverageinfo - Покрытие для блоков Simulink ® Design Verifier™

Пример использования этих функций см. в разделе Извлечение подробной информации из данных покрытия.

См. также

| | |

Связанные темы