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

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

Файл

Simulink Test на основе 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

Создайте 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);

The 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 функция для сбора покрытия и добавления покрытия и результатов тестирования в Test Manager.

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 ссылка для просмотра отчета.

Откройте Test Manager

sltestmgr

Выберите панель Результаты и программные продукты и разверните строки Результаты и BaselineTestWithCoverage.

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

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

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

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

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

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