Выведите результаты для непрерывных систем интегрирования

Можно создать тесты модели, которые совместимы с системами непрерывного интегрирования (CI), такими как Jenkins™. Чтобы создать совместимые с CI результаты, запустите свои файлы Simulink® Test™ с помощью MATLAB® Unit Test.

Чтобы запустить совместимые с CI тесты, выполните эту общую процедуру:

  1. Создайте тестовый набор из тестового файла MLDATX.

  2. Создайте исполнителя тестов.

  3. Создайте плагины для теста выход или результаты покрытия.

    • Для теста выходные параметры используйте TAPPlugin или XMLPlugin.

    • Для покрытия модели используйте ModelCoveragePlugin и CoberturaFormat. При сборе покрытия модели в формате Cobertura:

      • Только покрытие топ-модели отражается в Cobertura XML.

      • Только Decision Coverage модели отражается, и он сопоставлен с элементами Условия в Cobertura XML.

  4. Создайте плагины для совместимого с CI выхода.

  5. Добавьте плагины в тест выход или результаты покрытия.

  6. Добавьте тест выходные плагины или плагины результата покрытия к исполнителю тестов.

  7. Запустите тест.

Протестируйте модель на непрерывные системы интегрирования

В этом примере показано, как протестировать модель, опубликуйте менеджера по Тесту результаты и выведите результаты в формате TAP с одним выполнением.

Вы используете MATLAB® Unit Test, чтобы создать тестовый набор и исполнителя тестов, и настроить бегуна с этими плагинами:

Тест создает вход прямоугольной волны к подсистеме контроллера и развертывает через 25 итераций параметров a и b. Тест сравнивает alpha выведите к базовой линии с допуском 0.0046. Тест перестал работать на тех итерациях, в которых выход превышает этот допуск.

Прежде, чем запустить этот пример, гарантируйте, что рабочая папка перезаписываема.

1. Откройте тестовый файл Simulink® Test™.

testfile = fullfile('f14ParameterSweepTest.mldatx');
sltest.testmanager.view;
sltest.testmanager.load(testfile);

2. В менеджере по Тесту сконфигурируйте тестовый файл для создания отчетов.

В соответствии с Опциями Тестового файла, выберите отчет Generate после выполнения. Раздел расширяется, отображая несколько опций отчета. Для получения дополнительной информации смотрите, Сохраняют Опции Создания отчетов с Тестовым файлом.

3. Создайте тестовый набор из тестового файла Simulink® Test™.

import matlab.unittest.TestSuite

suite = testsuite('f14ParameterSweepTest.mldatx');

4. Создайте исполнителя тестов.

import matlab.unittest.TestRunner

f14runner = TestRunner.withNoPlugins;

5. Добавьте TestReportPlugin к исполнителю тестов.

Плагин производит Протокол испытаний MATLAB F14Report.pdf.

import matlab.unittest.plugins.TestReportPlugin

pdfFile = 'F14Report.pdf';
trp = TestReportPlugin.producingPDF(pdfFile);
addPlugin(f14runner,trp)

6. Добавьте TestManagerResultsPlugin к исполнителю тестов.

Плагин добавляет менеджера по Тесту результаты в Протокол испытаний MATLAB.

import sltest.plugins.TestManagerResultsPlugin

tmr = TestManagerResultsPlugin; 
addPlugin(f14runner,tmr)

7. Добавьте TAPPlugin к исполнителю тестов.

Сменные выходные параметры к F14Output.tap файл.

import matlab.unittest.plugins.TAPPlugin
import matlab.unittest.plugins.ToFile

tapFile = 'F14Output.tap';
tap = TAPPlugin.producingVersion13(ToFile(tapFile));
addPlugin(f14runner,tap)

8. Запустите тест.

Несколько сбоев итераций, в которых различие сигнала базовое превышает критерии допуска.

result = run(f14runner,suite);
Generating test report. Please wait.
    Preparing content for the test report.
    Adding content to the test report.
    Writing test report to file.
Test report has been saved to:
 /tmp/BR2019bd_1276998_130124/mlx_to_docbook1/tp05ae207e/simulinktest-ex40056435/F14Report.pdf

Одно выполнение исполнителя тестов представляет два отчета:

  • Протокол испытаний MATLAB, который содержит менеджера по Тесту результаты.

  • Файл формата TAP, который можно использовать с системами CI.

sltest.testmanager.clearResults
sltest.testmanager.clear
sltest.testmanager.close

Результаты покрытия модели для непрерывного интегрирования

В этом примере показано, как сгенерировать результаты покрытия модели для использования с непрерывным интегрированием. О покрытии сообщают в формате Cobertura. Вы запускаете тестовый файл Simulink® Test™ с помощью MATLAB® Unit Test.

1. Импортируйте классы и создайте тестовый набор из тестового файла AutopilotTestFile.mldatx.

import matlab.unittest.TestRunner

aptest = sltest.testmanager.TestFile(fullfile(matlabroot,'toolbox','simulinktest',...
    'simulinktestdemos','AutopilotTestFile.mldatx'));
apsuite = testsuite(aptest.FilePath);

2. Создайте исполнителя тестов.

trun = TestRunner.withNoPlugins;

3. Установите метрики покрытия собираться. Этот пример использует Decision Coverage. В Cobertura выход Decision Coverage перечислен как элементы условия.

import sltest.plugins.coverage.CoverageMetrics

cmet = CoverageMetrics('Decision',true);

4. Установите свойства отчета покрытия. Этот пример производит файл R13Coverage.xml в текущей рабочей папке. Гарантируйте, что ваша рабочая папка имеет полномочия записи.

import sltest.plugins.coverage.ModelCoverageReport
import matlab.unittest.plugins.codecoverage.CoberturaFormat

rptfile = 'R13Coverage.xml';
rpt = CoberturaFormat(rptfile)
rpt = 
  CoberturaFormat with no properties.

5. Создайте плагин покрытия модели. Плагин собирает метрики покрытия и представляет отчет формата Cobertura.

import sltest.plugins.ModelCoveragePlugin

mcp = ModelCoveragePlugin('Collecting',cmet,'Producing',rpt)
mcp = 
  ModelCoveragePlugin with properties:

    RecordModelReferenceCoverage: '<default>'
                 MetricsSettings: [1x1 sltest.plugins.coverage.CoverageMetrics]

6. Добавьте плагин покрытия в исполнителя тестов.

addPlugin(trun,mcp)

% Turn off command line warnings:
warning off Stateflow:cdr:VerifyDangerousComparison
warning off Stateflow:Runtime:TestVerificationFailed

7. Запустите тест.

APResult = run(trun,apsuite)
APResult = 
  TestResult with properties:

          Name: 'AutopilotTestFile > Basic Design Test Cases/Requirement 1.3 Test'
        Passed: 0
        Failed: 1
    Incomplete: 1
      Duration: 0.0501
       Details: [1x1 struct]

Totals:
   0 Passed, 1 Failed (rerun), 1 Incomplete.
   0.050056 seconds testing time.

8. Повторно включите предупреждения.

warning on Stateflow:cdr:VerifyDangerousComparison
warning on Stateflow:Runtime:TestVerificationFailed

Смотрите также

| | | | |

Похожие темы