Расширение тестов для модели с временной логикой

Создайте стартовый тест

Этот пример использует sldvdemo_sbr_extend_design модель. Эта модель включает Stateflow® график SBR который использует временную логику. Переход от KEY_OFF состояние в KEY_ON состояние происходит после моделирования диаграммы Stateflow 500 раз. Для тестирования этого перехода требуется тест с 500 временными шагами.

В этом примере вы создаете тест, которая заставляет переход к KEY_ON путем установки KEY вход в 1 на время теста. Вы симулируете модель, используя этот тест, удовлетворяя целям для KEY_OFF/KEY_ON переход. Затем вы анализируете модель, игнорируя цели, уже удовлетворенные созданной вами тестом.

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

  2. Откройте SBR Диаграмма Stateflow, чтобы увидеть KEY_OFF/ KEY_ON переход.

  3. Создайте модель-ссылку модели тестовой обвязки:

    [~, harnessModelFilePath] = ...
        sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);

    Модель тестовой обвязки, sldvdemo_sbr_extend_design_harness, включает в себя:

    • Блок Model с именем Test Unit, который ссылается на исходную модель, sldvdemo_sbr_extend_design.

    • Блок Signal Builder с именем Входы, который содержит входные параметры теста в модель, на которую ссылаются в блоке Model.

      Первоначально блок Signal Builder содержит только тест по умолчанию, со всеми тремя входами, установленными на 0.

    • Блок DocBlock с именем Тест Explanation, который документирует тест.

      Первоначально блок Test Case Explanation не имеет содержимого для теста по умолчанию.

  4. sldvmakeharness возвращает путь к файлу модели тестовой обвязки в harnessModelFilePath. Извлеките имя файла модели тестовой обвязки в harnessModel, для дальнейшего использования:

    [~, harnessModel] = fileparts(harnessModelFilePath);

Для порядка KEY_OFF на KEY_ON переход состояния, создайте тест, которая выполняет переход к KEY_ON состояние в 500 временных шагах:

  1. Откройте диалоговое окно Signal Builder для модели тестовой обвязки.

  2. Выберите Axes > Change Time Range.

  3. Временная область значений Signal Builder определяет промежуток времени, в течение которого его выход явно задан. В диалоговом окне Set the total time range установите в поле Max time значение 5 секунд, создавая 500 временных шагов по 0,01 секунды длительности каждого.

  4. Установите KEY вход в 1 на время этого стартового теста, форсировав переход к KEY_ON состояние. Выбор Inputs.KEY Для сигнала требуется два нажатий кнопки. Сначала щелкните сигнал, чтобы точки появились на обоих концах сигнала.

  5. Нажмите на Inputs.KEY снова сигнал. Signal Builder утолщает сигнал, чтобы указать, что он выбран.

  6. В нижней части диалогового окна Signal Builder, под Left Point, введите 1 для Y.

  7. Нажмите Enter, чтобы применить изменение.

    The Inputs.KEY сигнал устанавливается на 1 на время теста.

  8. Закройте диалоговое окно Signal Builder.

Журнал начальных Тестов

Следующим шагом является регистрация созданного вами начального теста. Затем можно задать, что Simulink® Проектируйте Verifier™ игнорируйте цели, удовлетворенные этим тестом при выполнении анализа.

sldvlogsignals функция записывает данные теста в MAT-файл, который содержит sldvData структура. Эта структура хранит все данные, которые собирает и производит программное обеспечение во время анализа.

Для регистрации начальных тестов:

  1. Сохраните имя блока Model в модели тестовой обвязки, которая ссылается на sldvdemo_sbr_extend_design модель:

    [~, modelBlock] = find_mdlrefs(harnessModel, false);
  2. Симулируйте модель, на которую ссылается блок Model, используя новый тест и записывайте входные сигналы в переменную рабочей области loggeddata:

    loggeddata = sldvlogsignals(modelBlock{1});
  3. Сохраните записанные данные в MAT-файле с именем existingtestcase.mat:

    save('existingtestcase.mat', 'loggeddata');

    Этот файл будет задан при анализе sldvdemo_sbr_extend_design модель.

Расширение существующих тестовых случаев

Теперь можно анализировать sldvdemo_sbr_extend_design моделировать и указать, что анализ расширяет уже удовлетворенные тесты. Анализ использует данные существующие тесты как начальная точка и не пытается сгенерировать тесты для KEY_OFF на KEY_ON переход на графике SBR Stateflow.

Задайте стартовый тест и проанализируйте модель:

  1. Откройте модель.

    open_system('sldvdemo_sbr_extend_design');

  2. На вкладке Design Verifier нажмите Test Generation Settings.

  3. В диалоговом окне Параметров конфигурации на панели Test Generation под Existing test cases выберите Extend existing test cases.

  4. В поле Data file введите имя MAT-файла, который содержит записанные данные:

    existingtestcase.mat
  5. Очистить Ignore objectives satisfied by existing test cases.

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

  6. Чтобы закрыть диалоговое окно Параметры конфигурации, нажмите OK.

  7. Сохраните sldvdemo_sbr_extend_design модель на MATLAB® путь с именем sldvdemo_sbr_extend_design_test.

  8. Нажмите Generate Tests.

    Сначала в окне журнала перечисляются цели, которые выполнил начальный тест.

    Затем в окне журнала перечисляются цели, сгенерированные после начального теста.

Проверьте результаты анализа

Чтобы убедиться, что этот анализ создает полный тестовый набор, сгенерируйте модель тестовой обвязки, чтобы можно было симулировать модель с сгенерированными тестовыми примерами:

  1. На вкладке Design Verifier, в разделе Review Results, нажмите Create Test Harness Model.

  2. В модели тестовой обвязки sldvdemo_sbr_extend_design_test_harness, откройте блок Signal Builder с именем Inputs.

  3. Чтобы симулировать модель с помощью всех тестов, нажмите кнопку Run all and produce coverage.

    Когда симуляция завершена, отображается отчет о покрытии модели.

  4. Просмотрите информацию о покрытии для sldvdemo_sbr_extend_design_test модель, чтобы увидеть, что полный тестовый набор достигает 100% покрытия.

Похожие темы