exponenta event banner

Сбор покрытия с помощью тестов Simulink на основе MATLAB

В этом примере показано, как использовать тест Simulink на основе MATLAB для сбора покрытия в модели с тестовым жгутом, а также использовать тестовую структуру MATLAB для заполнения результатов в диспетчере тестов. Тесты Simulink на базе MATLAB .m файл тест определения класса примеров, которые наследуют от sltest.TestCase.

Тестовый файл Simulink на основе MATLAB

тестовый файл Simulink на основе MATLAB, TestHarnessWithModelCoverage.m, был создан и приводится в этом примере. Тестовый файл содержит две тестовые функции. Каждый из них имеет модель кабельных трасс для управления входными данными для тестирования подсистемы TestHarnessWithModelCoverage/Subsystem1 и сравнить с соответствующей базовой линией. В этом тесте используется Simulink.SimulationOutput объект при моделировании модели.

classdef TestHarnessWithModelCoverage < sltest.TestCase
   methods (Test)
      function testOne(testCase)
          in = testCase.createSimulationInput('simpleSwitchWithSubsystemIn',...
             'WithHarness','simpleSwitchWithSubsystemIn_Harness1');
          simOut = testCase.simulate(in);
          testCase.verifySignalsMatch(simOut,'baselineOne.mat');
      end
      function testTwo(testCase)
          in = testCase.createSimulationInput('simpleSwitchWithSubsystemIn',...
             'WithHarness','simpleSwitchWithSubsystemIn_Harness2');
          simOut = testCase.simulate(in);
          testCase.verifySignalsMatch(simOut,'baselineTwo.mat');
      end
   end
end

Создание SunRunner и SunSuite

Создать TestRunner для запуска sltest_ratelim модель.

import matlab.unittest.TestRunner;
runner = TestRunner.withTextOutput;

Создать TestSuite для использования с TestRunner.

suite = testsuite('TestHarnessWithModelCoverage');

Настройка тестового питателя

Используйте методы подключаемого модуля для настройки TestRunner для добавления результатов теста из sltest.TestCase менеджеру тестирования. Добавить TestRunnerPlugin в TestRunner.

import sltest.plugins.MATLABTestCaseIntegrationPlugin;
runner.addPlugin(MATLABTestCaseIntegrationPlugin);

DiagnosticsOutputPlugin и ToTestManagerLog потоковая диагностика из sltest.TestCase выполнить в журналы TestCaseResults в Test Manager. Диагностика включает в себя прохождение диагностики для тестов, которые прошли. Добавьте DiagnosticsOutputPlugin и ToTestManagerLog в TestRunner.

import sltest.plugins.ToTestManagerLog;
import matlab.unittest.plugins.DiagnosticsOutputPlugin;
streamOutput = ToTestManagerLog();
diagnosticsOutputPlugin = DiagnosticsOutputPlugin...
    (streamOutput,'IncludingPassingDiagnostics',true);
runner.addPlugin(diagnosticsOutputPlugin);

Настройка коллекции покрытия для модели Simulink

Модели в sltest.TestCase , которые моделируются с использованием simulate способ может собирать покрытие. Используйте ModelCoveragePlugin для конфигурирования коллекции метрик покрытия. В этом примере выполняется сбор данных о покрытии MCDC. Добавить ModelCoveragePlugin в TestRunner.

import sltest.plugins.coverage.CoverageMetrics;
import sltest.plugins.ModelCoveragePlugin;
mcdcMetrics = CoverageMetrics('MCDC',true);
runner.addPlugin(ModelCoveragePlugin('Collecting',mcdcMetrics));

Сбор и добавление результатов покрытия и тестирования в диспетчер тестирования

Теперь, когда TestRunner полностью сконфигурирован, используйте run функция сбора данных о покрытии и добавления результатов покрытия и тестирования к диспетчеру тестирования.

run(runner,suite);
Setting up ResultSetFixture
Done setting up ResultSetFixture
__________

Running TestHarnessWithModelCoverage
..
Done TestHarnessWithModelCoverage
__________

Coverage Report for simpleSwitchWithSubsystemIn/Subsystem1
    /tmp/BR2021ad_1640230_185635/publish_examples0/tp6044bd52_d022_4fb7_b212_6e607e4a3c18.html
Tearing down ResultSetFixture
Done tearing down ResultSetFixture
__________

run также создает отчет, включающий совокупное покрытие для запущенного набора тестов. Используйте Coverage Report for sltest_ratelim ссылка для просмотра отчета.

Откройте диспетчер тестов

sltestmgr

Выберите панель Результаты и артефакты (Results and Artifacts) и разверните строки Результаты (Results) и Базовая структура (Baseline)

Выберите testOne строка.

В разделе «Результаты покрытия» показано покрытие, собранное для sltest_ratelim от testOne.

Выберите testTwo строка.

В разделе «Результаты покрытия» показано покрытие, собранное для sltest_ratelim от testTwo.

Выберите BaselineTestWithCoverage строка.

В разделе Агрегированные результаты покрытия показано агрегирование покрытия, собранного для sltest_ratelim от testOne и testTwo. Агрегированные результаты показывают полное покрытие для указанных метрик покрытия.