2013-09-12 3 views
1

ПРОБЛЕМА

У меня есть довольно большая модель системы гидропневматической, состоящая примерно из 20-25 различных подсистем. Каждая из подсистем затем состоит из цифровой логики, блоков задержки по фронту и шлюза к внешним выходным портам (выходы реального мира). Кроме того, некоторые из небольших строительных блоков являются старым кодом C, импортированным как S-функции, чтобы максимизировать соотношение затрат и выгод. Каждая из моделей подтипов была разработана в SIMULINK с использованием базового блока, т. Е. Не использовались дополнительные коммерческие блоки (например, аэрокосмическая, simscape, simMechanics и т. Д.).Unit-тестирование и тестирование интеграции для большой или средней Сложности системы Модели в SIMULINK

Основная проблема заключается в том, что у меня недостаточно знаний о тестировании моделей в SIMULINK. Я знаю, что существует индивидуальная модульная система тестирования, которую Mathworks предоставляет для тестирования и проверки. Беда в том, что я не совсем уверен, как это будет иметь отношение к моему домену. Кроме того, мои подсистемы довольно сложны сами, и модульное тестирование каждого из них - кошмар. НО, если тестирование черного ящика с входами и выходами является единственным способом, так и быть, и я с удовольствием согласен с этим.

Хотя мой вопрос заключается в тестировании крупномасштабных и сложных систем в SIMULINK, моя цель - получить предложения от опытных пользователей SIMULINK, которые сделали это в прошлом, и будут делать это много в будущем. Раньше я тестировал модульные тесты на SIMULINK, но все те тесты, которые не были даже вблизи моего правильного дизайна.

Любая помощь будет оценена!

UPDATE SINCE @ PHILGODDARD'S КОММЕНТАРИИ

Я забыл упомянуть выше, что я знаком с ЛВЖ и PIL. Тем не менее, они действительны только тогда, когда у вас есть целевая платформа реального времени, доступная для тестирования циклов. Что делать, если кто-то хочет проводить мягкое тестирование в режиме реального времени?

Я жду, чтобы пройти через широкомасштабный веб-семинар по тестированию системы Mathworks через день или два. С надеждой, я могу получить несколько лучших ответов/предложений через это?

UPDATE SINCE @ КОММЕНТАРИИ AM304 в

Для уточнения контекста немного дальше, мы моделируем все взаимодействующие системы в программном обеспечении, без привлечения каких-либо физических устройств, то есть моделирование и моделирование всех систем в программном обеспечении, с выходами быть отображаются на терминалах оператора/инструктора ..... например у нас есть электрические, кондиционеры и гидропневматические системы, работающие вместе, но мы смоделировали их в программном обеспечении. поэтому, когда мы имитируем его, все необходимые сигналы генерируются из поведения моделей программного обеспечения, никакое фактическое аппаратное/физическое устройство не участвует в доставке этих поведенческих выходов.

+0

Первое, что я хотел бы сделать, это разбить модель (если возможно) на отдельные модели; объединяя их на самом высоком уровне с использованием блоков модели. Это облегчит запись тестовых примеров (т. Е. Разработку отдельных тестовых моделей) для каждого из отдельных компонентов. К сожалению, нет волшебной пули для создания тестовых моделей (но тон вашего сообщения, похоже, указывает на то, что вы знаете об этом). –

+0

@PhilGoddard Как вы думаете, HIL или PIL является приемлемым, но довольно дорогостоящим ответом на тестирование крупномасштабной системы? – ha9u63ar

+0

@PhilGoddard А также, если вы посмотрите на мое описание проблемы, вся система разбита на подсистемные модели. Те требуют тестирования. Разве это не то, что вы предлагаете? Или я пропущу вашу мысль? – ha9u63ar

ответ

2

Я бы посмотрел Simulink Design Verifier и Simulink Verification&Validation. В частности, они предлагают такие функции, как автоматическое создание тестов и анализ покрытия, которые, как я думаю, применимы к вашей проблеме.

В качестве примечания ...

касаемо unit-testing framework которого MATLAB вы упомянули в своем сообщении, это в основном реализация MATLAB из xUnit рамок. Таким образом, это, безусловно, пригодится, если вы хотите использовать шаблоны xUnit для тестирования кода MATLAB.

Рамку можно использовать для написания тестов для модели Simulink, но имейте в виду, что вы должны иметь возможность писать тесты в коде MATLAB. Таким образом, это просто означает использование интерфейса командной строки Simulink (например,команды, такие как set_param и sim), чтобы настроить и использовать вашу модель, а затем использовать методы проверки структуры (например, verifyEqual) для сравнения фактических и ожидаемых результатов.

+0

Спасибо за ваш ответ , Могу ли я использовать платформу тестирования модулей MATLAB для тестирования модели SIMULINK. Я знаю, что в вашем ответе может показаться очевидным, что он проверяет «Код», а не «Модель» ... но стоит того, правильно? Кроме того, SIMULINK Design Verifier и SIMUINK Verification & Validation скорее напоминают платные блоки (например, надстройки), а не что-то, что вы получите встроенным ... Я пытался избежать этого, но если нет других Кстати, тогда, я думаю, мне нужно сделать шаг вперед. – ha9u63ar

+0

+1 за предложение Simulink V & V и Simulink Design Verifier. Simulink V & V относительно дешев и предоставляет много функциональности для тестирования модели (анализ покрытия, привязка требований и т. Д.). Simulink Design Verifier - справедливая сделка, более дорогая, но позволяет создавать тестовые векторы, доказывать свойства в вашей модели, ... – am304

+0

Да, эти два продукта определенно дополняют панели инструментов. Как я уже сказал, что-то стоит изучить, но в конечном итоге вам придется решить, действительно ли они имеют смысл для вас на основе ваших конкретных потребностей и масштабов ваших проектов. – grungetta

0

C-code, а также модели Simulink могут быть протестированы с использованием TPT. Нет никакой разницы в разработке тестов, а также в тестовой оценке, но в среде тестирования. Для тестирования C-кода можно решить, должен ли C-код тестироваться в так называемом SiL-режиме в Simulink, где C-код встроен в Simulink в качестве так называемой S-функции. Генерация S-функции может выполняться автоматически с помощью m-скриптов, зависящих от генератора кода.

Для Simulink Coder может использовать следующие MATLAB команды, чтобы заставить Sil:

set_param(<testFrameName>,'RTWSystemTargetFile','rtwsfcn.tlc'); 
set_param(<testFrameName>,'RTWTemplateMakefile','rtwsfcn_default_tmf'); 
rtwbuild(<subsystem to be tested>); 

Для TargetLink скрипт использует TargetLink команды «tl_built_host» и «tl_set_sim_mode»:

tl_build_host('Model', <testFrameName>, 'TlSubsystems', <subsystem to be tested>); 
tl_set_sim_mode('Model', <testFrameName>, 'TlSubsystems', <subsystem to be tested>, 'SimMode', 'TL_CODE_HOST'); 

В качестве альтернативы в TP-C-код может быть протестирован двумя другими способами, которые не требуют Simulink, но некоторые ручное программирование и компиляция.

Первый вариант - использование так называемой EXE-платформы, в которой тестовый жгут построен в C-коде и компилируется пользователем его собственным компилятором. Генерация тестового жгута поддерживается в диалоговом окне конфигурации EXE-платформы в TPT.

Второй вариант - это так называемая платформа FUSION, которая является совместной имитационной средой. FUSION - это открытая архитектура, в которой пользователь может адаптировать свою собственную систему под тестовым C-кодом, используя хорошо определенный и документированный API. С-код вместе с API образует так называемый узел, который может быть смоделирован на платформе FUISON как единый узел или вместе с другими узлами. В случае автоматической генерации кода, тем не менее, большинство пользователей используют MiL и SiL-тестирование в Simulink, поскольку это можно сделать полностью автоматическим, включая тестирование спины назад между спицами между MiL и SiL.

Зачем нужно тестировать C-код вместо моделей? Причина в том, что в основном функциональная разработка выполняется в нотации с плавающей точкой, а реализация в целевом ECU должна выполняться в фиксированной точке. Процесс масштабирования и вычисления фиксированной точки, по крайней мере, для TargetLink, выполняемых во время генерации кода. Таким образом, результаты с плавающей запятой (MiL) должны сравниваться с реализацией фиксированной точки (SiL), поскольку из-за опыта масштабирование вводит множество ошибок.

Если 100% -ый заявка или покрытие условий есть функция TASMO в TPT. TASMO пытается автоматически генерировать тестовые сценарии для максимального охвата модели Simulink или TargetLink. Алгоритм основан на оптимизации и основан на поиске. Обратите внимание, что автоматическая генерация тестового теста не должна заменять функциональные тестовые примеры. Цели охвата можно проверить, используя инструменты покрытия кода, такие как CTC++, V & V toolbox или TargetLink, который приносит свое собственное измерение покрытия. Рассматривая результаты покрытия, пользователь может самостоятельно решить, как стимулировать слепые пятна и может идентифицировать мертвый код.

Я один из разработчиков TPT. Для получения дополнительной информации о TPT вы можете посетить наш веб-сайт.

+0

Это нормально @jens Я больше не попадаю в эту главу. Проблема, с которой я столкнулась, - это преобразование системы симулятора реального времени на основе C в эквивалентную систему MATLAB/SIMULINK. Тестирование было частью расследования, которое я неудачно потерпел. Даже если это удалось, я не думаю, что можно было решить тот факт, что несколько модулей работают с разной скоростью (например, 25 Гц, 60 Гц и т. Д.). SIMULINK не был подходящим инструментом. – ha9u63ar

0

MathWorks изменил это V & Предложение V-продукта в R2017b (сентябрь 2017 г.). Я рекомендую взглянуть на следующие ссылки, чтобы узнать, как они могут помочь в тестировании уровней устройств и интеграции в Simulink/Stateflow.

  1. Simulink Test - предоставляет среду для тестирования вашего дизайна Simulink/STATEFLOW
  2. Simulink Coverage - формирует показатели охвата, чтобы определить, насколько ваш дизайн был протестирован
  3. Simulink Design Verifier - автоматически генерирует тесты для удовлетворения функциональных или покрытия критериям

На веб-сайте MathWorks есть обзорная страница, которая содержит дополнительную информацию об общем размещении для verification, validation, and test.

 Смежные вопросы

  • Нет связанных вопросов^_^