Соберите покрытие Используя основанные на MATLAB тесты Simulink

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

Основанный на MATLAB файл 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/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, и Artifacts разделяют на области и расширяют строки BaselineTestWithCoverage и Результаты.

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

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

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

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

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

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