Этот пример показывает, как использовать Simulink® Design Verifier™, чтобы сгенерировать тесты, чтобы получить полное покрытие кода.
Вы сначала собираете покрытие кода для модели в качестве примера, сконфигурированной для программного обеспечения в цикле (SIL) режим симуляции. Затем вы используете Simulink® Design Verifier™, чтобы создать новый тестовый набор, который генерирует тестовые случаи, чтобы достигнуть недостающего покрытия. Наконец, вы выполняете сгенерированные тесты в программном обеспечении In the Loop (SIL) режим симуляции, чтобы проверить полный обзор.
Этот пример требует допустимого Simulink® Coder™ и лицензий Embedded Coder™.
if ~(license('test', 'Real-Time_Workshop') && ... license('test','RTW_Embedded_Coder')) return end
Убедитесь, что неотредактированная версия модели открыта.
model = 'sldvdemo_cruise_control';
close_system(model, 0)
open_system(model)
Прежде, чем запустить симуляцию, установленную параметры модели, чтобы запуститься в режиме SIL и собрать метрики покрытия кода с Simulink® Coverage™.
set_param(model,... 'SimulationMode', 'Software-in-the-Loop (SIL)',... 'SystemTargetFile', 'ert.tlc',... 'LaunchReport', 'off',... 'PortableWordSizes', 'on',... 'CovEnable', 'on'); % Remove any existing build folders. buildFolder = RTW.getBuildDir(model); if exist(buildFolder.BuildDirectory, 'dir') rmdir(buildFolder.BuildDirectory, 's'); end
Соберите результаты покрытия кода с помощью команды cvsim
и представьте отчет покрытия. Функция cvhtml
представляет отчет покрытия, который указывает на начальное покрытие модели sldvdemo_cruise_control
.
initialCov = cvsim(model);
cvhtml('sil_initial_coverage', initialCov);
Анализируйте модель sldvdemo_cruise_control
с Simulink® Design Verifier™, чтобы сгенерировать тестовый набор, который достигает увеличенного покрытия кода. Установите опции Simulink® Design Verifier™ генерировать тесты, чтобы достигнуть покрытия MCDC для топ-модели.
opts = sldvoptions; opts.TestgenTarget = 'GenCodeTopModel'; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'MCDC'; opts.SaveHarnessModel = 'off'; opts.SaveReport = 'off'; [~, files] = sldvrun(model, opts, true, initialCov);
Функция sldvruntest
моделирует модель со сгенерированным тестовым набором. Функция cvhtml
представляет отчет покрытия, который указывает на итоговое покрытие модели sldvdemo_cruise_control
.
[~, finalCov] = sldvruntest(model, files.DataFile, [], true);
cvhtml('sil_final_coverage', finalCov);
close_system(model, 0);