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

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

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

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

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

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

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

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

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

    • Блок Model под названием Тестовый Модуль, который ссылается на исходную модель, sldvdemo_sbr_extend_design.

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

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

    • Блок DocBlock под названием Объяснение Теста это документирует тест.

      Первоначально, блок 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 определяет промежуток времени, за которое явным образом задан его вывод. В Наборе общее диалоговое окно области значений времени, набор поле 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, чтобы применить изменение.

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

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

Регистрируйте стартовый тест

Следующий шаг должен регистрировать стартовый тест, который вы создали. Можно затем указать, что Simulink® Design 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 в диаграмме Stateflow SBR.

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

  1. В окне модели для sldvdemo_sbr_extend_design выберите Analysis> Design Verifier> Options.

  2. В диалоговом окне Configuration Parameters, в дереве Select, под Design Verifier, выбирают Test Generation.

  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. Чтобы закрыть диалоговое окно Configuration Parameters, нажмите OK.

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

  8. В Редакторе моделей выберите Analysis> Design Verifier> Generate Tests> Model.

    Логарифмическое окно сначала перечисляет цели что стартовый удовлетворенный тест.

    Логарифмическое окно затем перечисляет цели, сгенерированные вне стартового теста.

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

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

  1. В логарифмическом окне нажмите Create harness model.

  2. В модели тестовой обвязки sldvdemo_sbr_extend_design_test_harness откройте блок Signal Builder под названием Входные параметры.

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

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

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

Похожие темы