Генерация тестов покрытия кода

Этот пример показывает, как использовать 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

Запустите симуляции в режиме SIL

Соберите результаты покрытия кода с помощью команды 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);