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

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

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

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

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

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

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

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

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

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

  4. На Coverage разделяют на области в диалоговом окне Configuration Parameters. установите следующие опции:

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

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

    • В диалоговом окне Subsystem Selection выберите ShiftLogic и нажмите OK.

  5. Под Coverage metrics выберите Modified Condition Decision Coverage (MCDC).

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

  7. В Coverage> панель Results диалогового окна Configuration Parameters, набор следующие опции:

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

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

  8. Нажмите OK.

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

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

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

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

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

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

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

    cvsave('existingcov',covdata_original_controller);

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

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

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

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

  2. В диалоговом окне Configuration Parameters, под деревом 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® Design 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 указывает, что две цели покрытия в диаграмме Stateflow ShiftLogic доказаны невыполнимыми. Неявное событие 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).

Похожие темы