exponenta event banner

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

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

Для запуска CI-совместимых тестов выполните следующую общую процедуру:

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

  2. Создайте тестовый питатель.

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

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

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

      • В XML Cobertura отражен только охват топ-модели.

      • Отражается только покрытие решения модели, и оно сопоставляется с элементами условия в 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. В диспетчере тестирования настройте тестовый файл для создания отчетов.

В разделе Опции тестового файла (Test File Options) выберите Создать отчет после выполнения (Generate report after execution). Раздел расширяется, отображая несколько параметров отчета. Дополнительные сведения см. в разделе Сохранение параметров отчетов с тестовым файлом.

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/BR2021ad_1657350_5204/mlx_to_docbook1/tp6ee49f37/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('AutopilotTestFile.mldatx');
apsuite = testsuite(aptest.FilePath);

2. Создайте тестовый питатель.

trun = TestRunner.withNoPlugins;

3. Установите метрики покрытия в значение collect. в этом примере используется покрытие принятия решений. В выходных данных Cobertura покрытие принятия решений указывается как элементы условия.

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: 0
      Duration: 4.5620
       Details: [1x1 struct]

Totals:
   0 Passed, 1 Failed, 0 Incomplete.
   4.562 seconds testing time.

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

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

См. также

| | | | |

Связанные темы