Соберите покрытие Используя MATLAB-Based тесты Simulink

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

MATLAB-Based файл Simulink Test

Основанный на MATLAB тестовый файл Simulink, 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

Создайте TestRunner и TestSuite

Создайте 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/BR2021bd_1724986_151598/publish_examples0/tp91628d59_cd18_464b_ae43_81769508ccd6.html
Tearing down ResultSetFixture
Done tearing down ResultSetFixture
__________

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

Откройте менеджера по тесту

sltestmgr

Выберите Results, и Artifacts разделяют на области и расширяют строки BaselineTestWithCoverage и Результаты.

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

Раздел Coverage Results показывает покрытие, собранное для sltest_ratelim от testOne.

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

Раздел Coverage Results показывает покрытие, собранное для sltest_ratelim от testTwo.

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

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