Достижение недостающего покрытия в модели симуляции с обратной связью

Если у вас есть подсистема или Stateflow® диаграмма, которая не достигает 100% покрытия, и вы не хотите преобразовывать подсистему или график в блок Model, следуйте этому примеру, чтобы достичь полного покрытия.

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

The sldvdemo_autotrans модель является моделью симуляции с обратной связью. Диаграмма ShiftLogic Stateflow представляет часть контроллера этой модели. Тесты, разработанные в ManeuversGUI Signal Builder блокируют симуляцию замкнутой системы.

Запись данных о покрытии для модели

Чтобы симулировать модель, условие записи, решение и покрытие MCDC для контроллера ShiftLogic:

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

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

    В разделе Model Verification, Validation, and Test нажмите Coverage Analyzer.

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

  4. На панели Coverage в диалоговом окне Параметры конфигурации. установите следующие опции:

    • Выберите Enable coverage analysis.

    • Выберите Subsystem и нажмите Select Subsystem.

    • В диалоговом окне «Выбор подсистемы» выберите ShiftLogic и нажмите OK.

  5. В группе Coverage metrics выберите Modified Condition Decision Coverage (MCDC).

  6. Очистить Other metrics, если они выбраны.

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

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

    • Выберите Generate report automatically after analysis.

  8. Нажмите OK.

  9. Запустите симуляцию sldvdemo_autotrans модель для записи данных о покрытии.

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

    • Решение: 87% (27/31)

    • Условие: 67% (8/12)

    • MCDC: 33% (2/6) условия изменили результат

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

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

    cvsave('existingcov',covdata_original_controller);

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

Чтобы найти недостающее покрытие для графика ShiftLogic, запустите анализ подсистемы на этом блоке. Используйте этот метод, чтобы сфокусировать анализ на отдельной части модели.

Чтобы достичь 100% покрытия для контроллера ShiftLogic, запустите анализ генерации тестов, который использует существующие данные покрытия.

  1. Щелкните правой кнопкой мыши блок ShiftLogic и выберите Design Verifier > Options.

  2. В диалоговом окне Параметров конфигурации под деревом Select выберите узел Design Verifier. Под Analysis options в поле Mode выберите Test generation.

  3. Под узлом Design Verifier выберите Test Generation. В разделе Existing coverage data выберите Ignore objectives satisfied in existing coverage data.

  4. В поле Coverage data file введите имя файла, содержащего данные о покрытии, которые вы записали во время симуляции:

    existingcov.cvt
  5. Щелкните Apply, чтобы сохранить эти настройки.

  6. В дереве Select нажмите Design Verifier.

  7. На основной панели Design Verifier нажмите Generate Tests.

    Анализ извлекает диаграмму Stateflow в новую модель с именем ShiftLogic0. Анализ анализирует новую модель, игнорируя цели покрытия, ранее удовлетворенные и записанные в existingcov.cvt файл.

  8. Когда анализ генерации тестов будет завершен, в Simulink® Проектируйте Verifier™ логгируйте окно, выберите Simulate tests and produce a model coverage report.

    Отчет указывает, что для графика ShiftLogic достигается следующее покрытие в симуляции с тестами, сгенерированными Simulink Design Verifier:

    • Решение: 84% (26/31)

    • Условие: 83% (10/12)

    • MCDC: 67% (4/6) условия изменили результат

    В отчете Simulink Design Verifier перечислены шесть тесты для извлеченной модели, которые удовлетворяют целям, не охваченным existingcov.cvt файл.

    Отчет Simulink Design Verifier указывает, что две цели покрытия в ShiftLogic диаграммы Stateflow доказаны неудовлетворительными. Неявное tick события никогда не false поскольку график ShiftLogic обновляется в каждый временной шаг. Анализ не может удовлетворить условию или покрытию MCDC для любого образца временного события after(TWAIT, tick).

    after(TWAIT, tick) семантически эквивалентно

    Event == tick && temporalCount(tick) >= TWAIT

    Если вы двигаетесь after(TWAIT, tick) в условие, как в

    [after(TWAIT, tick) && speed < down_th]

    Simulink Design Verifier определяет, что tick всегда trueпоэтому он только тестирует temporalCount(tick) >= TWAIT часть after(TWAIT, tick). Анализ способен найти цели тестирования, которые удовлетворяют условию и покрытию MCDC для after(TWAIT, tick).

Похожие темы