Обработка результатов тестирования пользовательскими скриптами

Тестирование вашей модели часто требует оценки условий, которые гарантируют действительность теста, в дополнение к проверке поведения модели. MATLAB® Модульный тест обеспечивает среду для таких оценок. В Simulink® Test™ можно использовать пользовательские критерии тестового примера для составления конкретных оценок и включить в скрипт проверку типа «MATLAB Unit Test».

Пользовательские критерии применяются в качестве критериев после постсимуляции к выходным данным симуляции. Если вам требуются верификации во время выполнения, используйте verify() оператор в Test Assessment или Test Sequence блоке. Смотрите Оценку Симуляции Модели Используя Операторы Проверки.

MATLAB- Среды тестирования

Скрипт пользовательских критериев является методом test, который является matlab.unittest объект теста. Чтобы включить функцию, в разделе теста Custom Criteria Test Manager выберите function customCriteria(test). Внутри функции введите пользовательский скрипт критериев во встроенный редактор MATLAB.

Встроенный редактор MATLAB перечисляет свойства test. Создайте оценки тестов с помощью проверки MATLAB Unit Test. Пользовательские критерии поддерживают верификацию и типы проверок. См. Таблицу верификаций, утверждений и других квалификаций. Верификации и утверждения работают по-разному при оценке пользовательских критериев:

  • Верификации - другие оценки оцениваются в случае непрохождения верификаций. Диагностика появляется в результатах. Используйте верификации для общих оценок, таких как проверка симуляции с ожидаемыми выходами.

    Пример: test.verifyEqual(lastValue,0)

  • Утверждения - скрипт пользовательских критериев останавливает оценку, когда утверждение прекращает работать. Диагностика появляется в результатах. Используйте утверждения для условий, которые делают критерий недействительным.

    Пример: test.assertEqual(lastValue,0).

Задайте пользовательские критерии Скрипта

В этом примере показано, как создать пользовательский скрипт критерия для теста автопилота.

  1. Откройте тестовый файл.

    sltest.testmanager.load('AutopilotTestFile.mldatx')
    sltest.testmanager.view
  2. В Test Browser выберите AutopilotTestFile > Basic Design Test Cases > Requirement 1.3 Test. В тест разверните раздел Custom Criteria.

  3. Включите скрипт пользовательских критериев, выбрав function customCriteria(test).

  4. Во встроенном редакторе MATLAB введите следующий скрипт. Скрипт получает окончательное значение сигналов Phi и APEng, и проверяет, что окончательные значения равны 0.

    % Get the last values
    lastPhi = test.sltest_simout.get...
       ('Signals_Req1_3').get('Phi').Values.Data(end);
    lastAPEng = test.sltest_simout.get...
       ('Signals_Req1_3').get('APEng').Values.Data(end);
    
    % Verify the last values equal 0
    test.verifyEqual(lastPhi,0,...
       ['Final Phi value: ',num2str(lastPhi),'.']);
    test.verifyEqual(lastAPEng,false,...
       ['Final APEng value: ',num2str(lastAPEng),'.']);
  5. Запустите тест.

  6. На панели Results and Artifacts разверните раздел Custom Criteria Result. Оба критерия проходят.

Повторное использование пользовательских критериев и отладка с использованием точек по оси Х

В сложение к авторским критериям, скриптам во встроенном редакторе MATLAB, можно создать пользовательские критерии в автономной функции и вызвать функцию из теста. Использование автономной функции позволяет вам

  • Чтобы повторно использовать пользовательские критерии в нескольких тестах.

  • Установка точек останова в скрипте критериев для отладки.

  • Чтобы исследовать выходы симуляции с помощью командной строки.

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

Вызов скрипта пользовательских критериев из теста

  1. Перейдите к папке, содержащей функцию критериев.

    cd(fullfile(docroot,'toolbox','sltest','examples'))
  2. Откройте скрипт пользовательских критериев

    open('sltestCheckFinalRollRefValues.m')

    % This is a custom criteria function for a Simulink Test test case.
    % The function gets the last values of Phi and APEng from the 
    % Requirements 1.3 test case in the test file AutopilotTestFile.
    
    function sltestCheckFinalRollRefValues(test)
    
    % Get the last values
    lastPhi = test.sltest_simout.get...
       ('Signals_Req1_3').get('Phi').Values.Data(end)
    lastAPEng = test.sltest_simout.get...
       ('Signals_Req1_3').get('APEng').Values.Data(end)
    
    % Verify the last values equal 0
    test.verifyEqual(lastPhi,0,...
       ['Final Phi value: ',num2str(lastPhi),'.']);
    test.verifyEqual(lastAPEng,false,...
       ['Final APEng value: ',num2str(lastAPEng),'.']);
    
  3. Откройте тестовый файл

    sltest.testmanager.load('AutopilotTestFile.mldatx')
    sltest.testmanager.view

  4. Во встроенном редакторе MATLAB в разделе Custom Criteria введите вызов функции для пользовательских критериев:

    sltestCheckFinalRollRefValues(test)

Установите точки по оси Х и перечислите test Свойства

  1. На линии sltestCheckFinalRollRefValues.mустановите точку останова, щелкнув штрих справа от номера линии.

  2. В Диспетчере тестов запустите контрольный пример.

    В командном окне отображается приглашение отладки.

  3. Введите test в командной строке для отображения свойств STMCustomCriteria объект. Свойства содержат характеристики и данные моделирования выхода теста.

    test = 
    
      STMCustomCriteria with properties:
    
                  TestResult: [1×1 sltest.testmanager.TestCaseResult]
                      sltest_simout: [1×1 Simulink.SimulationOutput]
             sltest_testCase: [1×1 sltest.testmanager.TestCase]
               sltest_bdroot: {'RollReference_Requirement1_3'}
                  sltest_sut: {'RollAutopilotMdlRef/Roll Reference'}
            sltest_isharness: 1
        sltest_iterationName: ''

    Свойство sltest_simout содержит данные моделирования. Чтобы просмотреть данные PhiRef, введите

    test.sltest_simout.get('Signals_Req1_3').get('PhiRef')
    ans = 
    
      Simulink.SimulationData.Signal
      Package: Simulink.SimulationData
    
      Properties:
      struct with fields:
    
                  Name: 'PhiRef'
        PropagatedName: ''
             BlockPath: [1×1 Simulink.SimulationData.BlockPath]
              PortType: 'outport'
             PortIndex: 1
                Values: [1×1 timeseries]
  4. В редакторе MATLAB щелкните Continue, чтобы продолжить выполнение скрипта пользовательских критериев.

  5. На панели Results and Artifacts разверните раздел Custom Criteria Result. Оба критерия проходят.

  6. Чтобы повторно использовать скрипт в другом тесте, вызовите функцию из пользовательских критериев теста.

Пример программного интерфейса пользовательских критериев

В этом примере показано, как задать и получить пользовательские критерии с помощью программного интерфейса.

Перед запуском этого примера временно отключите предупреждения, возникшие в результате отказов в верификации.

warning off Stateflow:Runtime:TestVerificationFailed;
warning off Stateflow:cdr:VerifyDangerousComparison;

Загрузите тестовый файл и получите объект теста

tf = sltest.testmanager.load('AutopilotTestFile.mldatx');

ts = getTestSuiteByName(tf,'Basic Design Test Cases');

tc = getTestCaseByName(ts,'Requirement 1.3 Test');

Создайте объект пользовательских критериев и установите критерии

Создайте объект пользовательских критериев.

tcCriteria = getCustomCriteria(tc)
tcCriteria = 
  CustomCriteria with properties:

     Enabled: 0
    Callback: '% Return value: customCriteria...'

Создайте выражение пользовательских критериев. Этот скрипт получает последнее значение сигнала Phi и проверяет, что он равен 0.

criteria = ...
    sprintf(['lastPhi = test.SimOut.get(''Signals_Req1_3'')',...
	'.get(''Phi'').Values.Data(end);\n',...
	'test.verifyEqual(lastPhi,0,[''Final: '',num2str(lastPhi),''.'']);'])
criteria = 
    'lastPhi = test.SimOut.get('Signals_Req1_3').get('Phi').Values.Data(end);
     test.verifyEqual(lastPhi,0,['Final: ',num2str(lastPhi),'.']);'

Установите и включите критерии.

tcCriteria.Callback = criteria;
tcCriteria.Enabled = true;

Запустите тест и получите результаты

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

tcResultSet = run(tc);

Получите результаты теста.

tcResult = getTestCaseResults(tcResultSet);

Получите результат пользовательских критериев.

ccResult = getCustomCriteriaResult(tcResult)
ccResult = 
  CustomCriteriaResult with properties:

             Outcome: Failed
    DiagnosticRecord: [1x1 sltest.testmanager.DiagnosticRecord]

Восстановление предупреждений от отказов в верификации.

warning on Stateflow:Runtime:TestVerificationFailed;
warning on Stateflow:cdr:VerifyDangerousComparison;
sltest.testmanager.clearResults
sltest.testmanager.clear
sltest.testmanager.close

Похожие темы