В этом примере показано, как собрать тестовую зону покрытия для модели, реализующей требования. Охват относится к определению полноты тестирования путем анализа того, какая часть логики модели выполняется. Для тестирования на основе требований результаты покрытия могут быть привязаны к связанным требованиям. С помощью этого объема можно оценить, охватывается ли каждый элемент модели предполагаемым тестом.
В этом примере показано, как результаты охвата областью охвата для связанных требований могут выявить как недостаточные пробелы в связывании требований, так и пробелы в тестировании. Также показано, как увеличить охват.
Модель в этом примере cruiseControlRBTCovExample, которая представляет собой систему круиз-контроля. Эта модель реализует требования и связана с ними. Для этого примера уже создан тестовый файл.
cruiseControlRBTCovExample

Требования к этой системе круиз-контроля были зафиксированы в редакторе требований Simulink. Для просмотра требований используйте slreq.open('cruiseControlRBTCovReqs.slreqx').
Использовать sltestmgr для открытия диспетчера тестирования.
Щелкните Открыть (Open) и выберите cruiseControlRBTCovTests.mldatx. Тесты были написаны для проверки соответствия поведения модели указанным требованиям. Они также были настроены для записи покрытия «Решение» и «Условие». Разверните раздел Параметры покрытия, чтобы просмотреть выбранные метрики.

Каждый тестовый случай проверяется и связывается с требованием. Например, тест дросселя проверяет требование THROTTLE. Это требование указывает, что дроссель применяется плавно, если скорость отличается от целевой. Тест проверяет это поведение с помощью логической оценки, которая проверяет, что скорость изменения дросселя находится в диапазоне от -1 до 1 радиана в секунду, как определено в описании требования.
Запустите тест.
Щелкните Результаты (Results) на панели Результаты и артефакты (Results and Artifacts), когда тест завершится. Обратите внимание, что тесты проходят успешно и что сообщается о 100% агрегированном покрытии.

На панели Агрегированные результаты покрытия щелкните значок Scope coverage results to linked requirements флажок. Определение объема результатов означает, что каждый тест обеспечивает охват только для соответствующих элементов модели, которые реализуют требование, проверенное этим тестом. Проверка наличия элементов модели в предполагаемых тестовых примерах. Результаты покрытия, которые обновляются автоматически, теперь показывают агрегированное покрытие для решения и выполнения в 92% и 76% соответственно.

Щелкните по имени модели в столбце Анализируемая модель (Analysed Model), чтобы выделить результаты покрытия в модели и отобразить подробные данные отчета о покрытии.
В модели, если таблица Требования (Requirements) не показана под моделью, откройте ее, щелкнув виды Перспективы (Perspectives) в правом нижнем углу холста модели, а затем щелкните Требования (Requirements).
Откройте подсистему контроллера. Блоки, не имеющие 100% покрытия, отображаются красным цветом. Два набора блоков Constant и Sum не связаны с требованиями и никогда не выполнялись.

В этом случае недостающая зона покрытия указывает на недостаточную увязку требований. Эти блоки Constant и Sum необходимы для реализации требований INCREMENT и DECRMENT и должны быть связаны с соответствующими требованиями.
В таблице на панели Требования разверните cruiseControlRbtCovReqs. Щелкните правой кнопкой мыши верхний блок «Константа» и выберите «Требования» > «Связь с выбором» в браузере требований. Затем щелкните по требованию INCREMENT в таблице Requirements. Повторите это для верхнего блока Sum.
Для нижних блоков Константа (Constant) и Сумма (Sum) повторите шаги связывания, но свяжитесь с требованием ДЕКРЕМЕНТ (DECRMENT).
Откройте контроллер PI и щелкните по блоку дискретного интегратора времени. Сведения о покрытии показывают, что true решение для верхнего предела было выполнено с помощью теста приращения (T4), а не теста дросселя (T6). Поскольку блок является частью реализации требования THROTTLE, он должен был быть протестирован тестом Throttle Test, который проверяет требование THROTTLE. Инкрементный тест не проверяет это требование и не обеспечивает покрытие для этого блока, когда Scope model coverage to linked requirements параметр включен.

Чтобы устранить недостающую зону покрытия для этого блока, необходимо обновить тест дроссельной заслонки, чтобы выполнить блок интегратора дискретного времени.
На панели «Test Browser» диспетчера тестов выберите «Throttle Test». В разделе «Inputs» выберите «Throttle Test». td_throttle_updated.mat в качестве файла внешних входов. Этот обновленный файл данных входного дросселя содержит несколько дополнительных секунд тестовых данных, которые увеличивают целевую скорость более агрессивно при сохранении фактической скорости.
Выбрать cruiseControlRBTCovTests в панели «Обозреватель тестов» и повторно запустите тест. Щелкните значок Scope coverage results to linked requirements флажок. Результаты покрытия показывают 100% покрытие, что указывает на то, что тесты адекватно выполняют модель.
Пересмотренный тест дроссельной заслонки теперь не проходит проверку. Сбой происходит потому, что дроссель слишком агрессивно увеличивается и находится за пределами требуемых границ, указанных в тесте. Это указывает на проблему с конструкцией модели. Реализация блока PI Controller должна быть обновлена для применения дросселя в требуемых пределах, в том числе когда целевая и фактическая скорости значительно различаются.
Подводя итог, можно сказать, что анализ результатов охвата в соответствии со связанными требованиями может помочь выявить пробелы в тестировании. Определение объема позволяет выполнить это путем оценки того, что каждый элемент модели выполняется тестом, проверяющим соответствующее требование.