Если вы моделируете модель, на которую ссылаются, которая не достигает полного охвата, можно использовать Simulink® Design Verifier™, чтобы сгенерировать тесты, которые достигают полного охвата. Существует два подхода:
Программно достигните недостающего покрытия: Сгенерируйте тесты для модели, на которую ссылаются, с API для анализа генерации тестов.
Инкрементно покрытие увеличения: Сгенерируйте тесты для модели тестовой обвязки с аналитическими функциями недостающего покрытия.
Эта модель в качестве примера использует модель, на которую ссылаются, которая не достигает полного охвата. Когда вы запускаете анализ генерации тестов модели, на которую ссылаются, и комбинируете ее с ранее записанными данными о покрытии, можно достигнуть 100%-го покрытия для модели, на которую ссылаются.
Моделируйте модель в качестве примера. Условие записи, решение и покрытие MCDC.
Откройте модель в качестве примера:
sldemo_mdlref_basic
Блоки Model CounterA, CounterB и CounterC ссылаются на модель sldemo_mdlref_counter
.
В Редакторе Simulink выберите Analysis> Coverage> Settings.
На панели Coverage диалогового окна Configuration Parameters, набор следующие опции:
Выберите Enable coverage analysis.
Выберите Referenced Models.
Нажмите Select Models. В диалоговом окне Select Models for Coverage Analysis установите флажок для модели sldemo_mdlref_counter
, на которую ссылаются. Нажмите OK.
Флажок для sldemo_mdlref_counter
становится видимым, соответствуя CounterA и CounterB. Покрытие не включено для CounterC, потому что эталонная модель CounterC находится в режиме симуляции Accelerator
.
Задайте который типы покрытия записать во время симуляции. Под Coverage metrics выберите MCDC.
В Coverage> панель Results Параметров конфигурации. Установите следующие опции:
Выберите Save last run in workspace variable, чтобы сохранить собранные данные о покрытии от новой симуляции, запущенной в переменной в рабочей области MATLAB®.
Выберите Generate report automatically after analysis, чтобы указать, что симуляция создает отчет покрытия.
В поле cvdata object name введите covdata_original
, чтобы задать уникальное имя для переменной рабочей области данных о покрытии.
Нажмите OK.
Чтобы записать данные о покрытии, запустите симуляцию модели sldemo_mdlref_basic
.
После симуляции открывается отчет покрытия. Отчет указывает, что следующее покрытие достигается для модели sldemo_mdlref_counter
, на которую ссылаются:
Решение: 25%
Условие: 50%
MCDC: 0%
Симуляция сохраняет данные о покрытии в переменной covdata_original
рабочего пространства MATLAB, объект cvdata
, который содержит данные о покрытии.
Сохраните данные о покрытии в файле на пути MATLAB:
cvsave('existingcov',covdata_original);
Сохраните модель открытой, в то время как вы продолжаете через этот пример.
Чтобы достигнуть 100%-го покрытия для модели sldemo_mdlref_counter
, запустите анализ генерации тестов, который использует существующие данные о покрытии.
Откройте модель, на которую ссылаются. В командной строке, введите:
open_system('sldemo_mdlref_counter');
Создайте объект sldvoptions
:
opts = sldvoptions;
Когда вы создаете объект sldvoptions
, задаете:
То, что анализ игнорирует удовлетворенные данные о покрытии.
Имя файла, содержащее удовлетворенные данные о покрытии (existingcov.cvt
)
Введите следующие команды, чтобы задать эти опции:
opts.IgnoreCovSatisfied = 'on'; opts.CoverageDataFile = 'existingcov.cvt';
Анализируйте модель, на которую ссылаются, sldemo_mdlref_counter
, при помощи заданных опций:
[status, fileNames] = sldvrun('sldemo_mdlref_counter',opts,true);
Анализ Simulink Design Verifier™ удовлетворяет семь целей и создает один тест для модели, на которую ссылаются.
Следующая процедура моделирует модель, на которую ссылаются, sldemo_mdlref_counter
, с тестом, который создал анализ.
Чтобы достигнуть недостающего покрытия для модели, на которую ссылаются, sldemo_mdlref_counter
, моделируют модель при помощи теста от анализа Simulink Design Verifier.
Откройте модель, на которую ссылаются. В командной строке, введите:
open_system('sldemo_mdlref_counter');
Создайте объект cvtest
для симуляции и задайте решение записи, условие и покрытие MCDC.
cvt = cvtest('sldemo_mdlref_counter'); cvt.settings.decision = 1; cvt.settings.condition = 1; cvt.settings.mcdc = 1;
Задайте покрытие записи и определите имя объекта cvtest
.
runOpts = sldvruntestopts; runOpts.coverageEnabled = true; runOpts.coverageSetting = cvt;
Моделируйте модель с объектом cvtest
, cvt
и тестом, как задано в fileNames.DataFile
. Сохраните записанные данные о покрытии в переменной covdata_missing
рабочей области.
[~, covdata_missing] = sldvruntest('sldemo_mdlref_counter', fileNames.DataFile, runOpts);
Вы сохранили данные о покрытии от симуляции модели верхнего уровня, sldemo_mdlref_basic
, в переменной covdata_original
рабочей области. Чтобы создать отчет, который комбинирует данные о покрытии из модели верхнего уровня с данными о недостающем покрытии из модели, на которую ссылаются, sldemo_mdlref_counter
, вводят следующую команду:
cvhtml('Coverage Summary', covdata_original, covdata_missing);
Отчет показывает, что путем анализа модели, на которую ссылаются, и использования тех результатов записать покрытие, можно достигнуть 100%-го решения, условия и покрытия MCDC.
Сгенерируйте тестовую обвязку образцовые и данные о покрытии записи
Просмотрите активные результаты для анализа недостающего покрытия
Можно инкрементно достигнуть полного охвата для сгенерированной модели тестовой обвязки. Этот пример показывает, как сначала сгенерировать модель тестовой обвязки, которая не достигает полного охвата. Затем, это показывает, как запустить анализ недостающего покрытия модели тестовой обвязки, чтобы сгенерировать тесты для 100%-го покрытия.
Этот подход поддерживает только модели тестовой обвязки, сгенерированные Simulink Design Verifier, которые ссылаются на входную модель. Для получения дополнительной информации смотрите, модель входа Reference в сгенерированной обвязке.
Чтобы достигнуть полного охвата для модели sldemo_mdlref_counter
, запуститесь, анализ недостающего покрытия Simulink Design Verifier сгенерировал модель тестовой обвязки.
Откройте модель в качестве примера:
open_system('sldemo_mdlref_counter');
Создайте модель тестовой обвязки для модели sldemo_mdlref_counter
, на которую ссылаются:
[savedHarnessFilePath] = sldvmakeharness('sldemo_mdlref_counter');
Для получения дополнительной информации о модели тестовой обвязки, смотрите Модели тестовой обвязки Simulink Design Verifier.
В модели тестовой обвязки sldemo_mdlref_counter_harness
параметром Format должен быть Dataset
, чтобы сделать модель sldemo_mdlref_counter
, на которую ссылаются, и обвязка model sldemo_mdlref_counter_harness
имеют те же установки параметров. Для получения дополнительной информации смотрите, Образцовые Параметры конфигурации: Импорт/Экспорт Данных (Simulink).
Моделируйте модель sldemo_mdlref_counter_harness
, чтобы записать покрытие, достигнутое тестами в модели тестовой обвязки. После симуляции появляется отчет покрытия. Отчет указывает, что следующее покрытие достигается для sldemo_mdlref_counter
:
Откройте модель тестовой обвязки:
open_system('sldemo_mdlref_counter_harness');
Чтобы сгенерировать тесты для недостающего покрытия, в Редакторе Simulink, выбирают Analysis> Design Verifier> Generate Tests> Missing Coverage. Уведомление указывает на количество новых тестов, которые добавляются.
Диалоговое окно Signal Builder показывает Missing coverage test case 1, добавленный к предыдущему Test Case 1.
В диалоговом окне Signal Builder нажмите Run all . Программное обеспечение моделирует модель тестовой обвязки при помощи всех тестов, собирает информацию покрытия модели и отображает отчет покрытия. Отчет покрытия указывает, что анализ недостающего покрытия записывает 100%-е покрытие для sldemo_mdlref_counter
.
Откройте модель тестовой обвязки. В командной строке, введите:
open_system('sldemo_mdlref_counter_harness');
В Редакторе Simulink выберите Analysis> Design Verifier> Options (sldemo_mdlref_counter). Диалоговое окно Configuration Parameters для модели sldemo_mdlref_counter
, на которую ссылаются, открывается. Можно установить опции верификатора проекта для анализа недостающего покрытия. Для получения дополнительной информации смотрите, Опции в Диалоговом окне Параметров конфигурации.
Откройте модель, на которую ссылаются. В командной строке, введите:
open_system('sldemo_mdlref_counter');
Чтобы просмотреть активные результаты для тестов недостающего покрытия, в Редакторе Simulink, выбирают Analysis> Design Verifier> Results> Active. Окно Results Summary открывается результатами анализа недостающего покрытия. Для получения дополнительной информации об активных результатах смотрите Результаты анализа Анализа. Данные о тестах недостающего покрытия хранятся в MAT-файле, который содержит структуру под названием sldvData
. Для получения дополнительной информации смотрите, Содержимое sldvData Структуры.
Анализ Недостающего покрытия является основанным на пользовательском интерфейсе рабочим процессом. Функции командной строки не доступны для анализа Недостающего покрытия.
Ограничение значений для параметров не поддержано в аналитическом рабочем процессе Недостающего покрытия. Для получения дополнительной информации смотрите, Задайте Ограничительные Значения для Параметров.