Достигните недостающего покрытия в модели, на которую ссылаются,

Если вы симулируете модель, на которую ссылаются, которая не достигает полного охвата, можно использовать Simulink® Design Verifier™, чтобы сгенерировать тесты, которые достигают полного охвата. Существует два подхода:

  • Программно достигните недостающего покрытия: Сгенерируйте тесты для модели, на которую ссылаются, с API для анализа генерации тестов.

  • Инкрементно покрытие увеличения: Сгенерируйте тесты для модели тестовой обвязки с аналитическими функциями недостающего покрытия.

Программно достигните недостающего покрытия в модели, на которую ссылаются,

Эта модель в качестве примера использует модель, на которую ссылаются, которая не достигает полного охвата. Когда вы запускаете анализ генерации тестов модели, на которую ссылаются, и комбинируете ее с ранее записанными данными о покрытии, можно достигнуть 100%-го покрытия для модели, на которую ссылаются.

Данные о покрытии записи, например, модель

Симулируйте модель в качестве примера. Условие записи, решение и покрытие MCDC.

  1. Откройте модель в качестве примера:

    sldemo_mdlref_basic

    Model блокирует CounterA, CounterB, и CounterC ссылаются на модель sldemo_mdlref_counter.

  2. На вкладке Apps кликните по стреле справа от раздела Apps.

    Под Model Verification, Validation, and Test нажмите Coverage Analyzer.

  3. На вкладке Coverage нажмите Settings.

  4. На панели 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.

  5. В Coverage> панель Results Параметров конфигурации. Установите следующие опции:

    • Выберите Save last run in workspace variable, чтобы сохранить собранные данные о покрытии от новой симуляции, запущенной в переменной в рабочей области MATLAB®.

    • Выберите Generate report automatically after analysis, чтобы указать, что симуляция создает отчет покрытия.

    • В поле cvdata object name введите covdata_original задавать уникальное имя для переменной рабочей области данных о покрытии.

  6. Нажмите OK.

  7. Чтобы записать данные о покрытии, запустите симуляцию sldemo_mdlref_basic модель.

    После симуляции открывается отчет покрытия. Отчет указывает, что следующее покрытие достигается для модели sldemo_mdlref_counter, на которую ссылаются,:

    • Решение: 25%

    • Условие: 50%

    • MCDC: 0%

    Симуляция сохраняет данные о покрытии в переменной covdata_original рабочего пространства MATLAB, cvdata объект, который содержит данные о покрытии.

  8. Сохраните данные о покрытии в файле на пути MATLAB:

    cvsave('existingcov',covdata_original);

    Сохраните модель открытой, в то время как вы продолжаете через этот пример.

Найдите тесты для недостающего покрытия

Достигнуть 100%-го покрытия для sldemo_mdlref_counter модель, запустите анализ генерации тестов, который использует существующие данные о покрытии.

  1. Откройте модель, на которую ссылаются. В командной строке, введите:

    open_system('sldemo_mdlref_counter');
  2. Создайте sldvoptions объект:

    opts = sldvoptions;

    Когда вы создаете sldvoptions возразите, задайте:

    • То, что анализ игнорирует данные о покрытии, которым удовлетворяют.

    • Имя файла, содержащее данные о покрытии, которым удовлетворяют (existingcov.cvt)

    Введите следующие команды, чтобы задать эти опции:

    opts.IgnoreCovSatisfied = 'on';
    opts.CoverageDataFile = 'existingcov.cvt';
  3. Анализируйте модель, на которую ссылаются, sldemo_mdlref_counter, при помощи заданных опций:

    [status, fileNames] = sldvrun('sldemo_mdlref_counter',opts,true);

    Анализ Simulink Design Verifier™ удовлетворяет семи целям и создает один тест для модели, на которую ссылаются.

Следующая процедура симулирует модель, на которую ссылаются, sldemo_mdlref_counter, с тестом, что анализ создается.

Достигните недостающего покрытия

Достигнуть недостающего покрытия для модели, на которую ссылаются, sldemo_mdlref_counter, симулируйте модель при помощи теста от анализа Simulink Design Verifier.

  1. Откройте модель, на которую ссылаются. В командной строке, введите:

    open_system('sldemo_mdlref_counter');
  2. Создайте cvtest объект для симуляции и задает решение записи, условие и покрытие MCDC.

    cvt = cvtest('sldemo_mdlref_counter');
    cvt.settings.decision = 1;
    cvt.settings.condition = 1;
    cvt.settings.mcdc = 1;
  3. Задайте покрытие записи и определите имя cvtest объект.

    runOpts = sldvruntestopts;
    runOpts.coverageEnabled = true;
    runOpts.coverageSetting = cvt;
  4. Симулируйте модель с 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, которые ссылаются на входную модель. Приложение Design Verifier не доступно для моделей тестовой обвязки, когда тестовый модуль копируется от топ-модели. Для получения дополнительной информации смотрите, модель входа Reference в сгенерированной обвязке.

Сгенерируйте тестовую обвязку данные о покрытии записи и модели

Достигнуть полного охвата для sldemo_mdlref_counter модель, запуститесь, анализ недостающего покрытия Simulink Design Verifier сгенерировал модель тестовой обвязки.

  1. Откройте модель в качестве примера:

    open_system('sldemo_mdlref_counter');
  2. Создайте модель тестовой обвязки для модели sldemo_mdlref_counter, на которую ссылаются,:

    [savedHarnessFilePath] = sldvmakeharness('sldemo_mdlref_counter');

    Для получения дополнительной информации о модели тестовой обвязки, смотрите Модели тестовой обвязки Simulink Design Verifier.

  3. В модели тестовой обвязки sldemo_mdlref_counter_harness, параметром Format должен быть Dataset сделать модель sldemo_mdlref_counter, на которую ссылаются, и обвязка model sldemo_mdlref_counter_harness имейте те же установки параметров. Для получения дополнительной информации смотрите, Параметры конфигурации Модели: Импорт/Экспорт Данных.

  4. Симулируйте sldemo_mdlref_counter_harness модель, чтобы записать покрытие, достигнутое тестами в модели тестовой обвязки. После симуляции появляется отчет покрытия. Отчет указывает, что следующее покрытие достигается для sldemo_mdlref_counter:

Сгенерируйте тесты для недостающего покрытия

  1. Откройте модель тестовой обвязки:

    open_system('sldemo_mdlref_counter_harness');

    Чтобы сгенерировать тесты для недостающего покрытия, на вкладке Design Verifier, нажимают Add Missing Coverage. Уведомление указывает на количество новых тестов, которые добавляются.

  2. Диалоговое окно Signal Builder показывает Missing coverage test case 1, добавленный к предыдущему Test Case 1.

  3. В диалоговом окне Signal Builder нажмите Run all . Программное обеспечение симулирует модель тестовой обвязки при помощи всех тестов, собирает информацию покрытия модели и отображает отчет покрытия. Отчет покрытия указывает, что анализ недостающего покрытия записывает 100%-е покрытие для sldemo_mdlref_counter.

Обновите опции анализа Simulink Design Verifier

  1. Откройте модель тестовой обвязки.

    open_system('sldemo_mdlref_counter_harness');

    На вкладке Design Verifier нажмите Test Generation Settings. Диалоговое окно Configuration Parameters для модели sldemo_mdlref_counter, на которую ссылаются, открывается. Можно установить опции верификатора проекта для анализа недостающего покрытия. Для получения дополнительной информации смотрите, Опции в Диалоговом окне Параметров конфигурации.

Просмотрите активные результаты для анализа недостающего покрытия

  1. Откройте модель, на которую ссылаются.

    open_system('sldemo_mdlref_counter');

    На вкладке Design Verifier, в разделе Review Results, нажимают Load Earlier Results. Просмотрите к ранее сгенерированному файлу данных и нажмите Open.

    Чтобы просмотреть активные результаты для тестов недостающего покрытия, нажмите Results Summary. Окно Results Summary открывается результатами анализа недостающего покрытия. Для получения дополнительной информации об активных результатах смотрите Результаты анализа Анализа. Данные о тестах недостающего покрытия хранятся в MAT-файле, который содержит структуру под названием sldvData. Для получения дополнительной информации смотрите, Содержимое sldvData Структуры.

Ограничения

  1. Анализ Недостающего покрытия является основанным на пользовательском интерфейсе рабочим процессом. Функции командной строки не доступны для анализа Недостающего покрытия.

  2. Ограничение значений для параметров не поддерживается в аналитическом рабочем процессе Недостающего покрытия. Для получения дополнительной информации смотрите, Задайте Ограничительные Значения для Параметров.

Похожие темы