Тестирование модели часто требует оценки условий, которые гарантируют достоверность теста, в дополнение к проверке поведения модели. Модульный тест MATLAB ® обеспечивает основу для таких оценок. В Simulink ® Test™ можно использовать пользовательские критерии тестового случая для создания определенных оценок и включить в сценарий требования к тестированию единиц MATLAB.
Пользовательские критерии применяются в качестве критериев после моделирования для выходных данных моделирования. Если требуется проверка во время выполнения, используйте verify() оператор в блоке «Оценка теста» или «Последовательность теста». См. раздел Оценка моделирования модели с использованием операторов проверки.
Сценарий настраиваемых критериев - это метод test, который является matlab.unittest объект тестового примера. Чтобы включить функцию, в разделе Custom Criteria в диспетчере тестов выберите функцию customCriteria (test). В функции введите сценарий пользовательских критериев во встроенном редакторе MATLAB.
Встроенный редактор MATLAB перечисляет свойства test. Создайте оценки тестирования с использованием квалификаций тестирования единиц MATLAB. Пользовательские критерии поддерживают проверки и определения типов утверждений. См. Таблицу проверок, утверждений и других квалификаций. Проверки и утверждения работают по-разному при оценке пользовательских критериев:
Проверки - другие оценки оцениваются в случае неуспешного завершения проверок. Диагностика отображается в результатах. Использовать проверки для общих оценок, таких как проверка моделирования по ожидаемым результатам.
Пример: test.verifyEqual(lastValue,0)
Утверждения (Assertions) - сценарий настраиваемых критериев прекращает оценку при сбое утверждения. Диагностика отображается в результатах. Используйте утверждения для условий, которые делают критерии недопустимыми.
Пример: test.assertEqual(lastValue,0).
В этом примере показано, как создать сценарий пользовательских критериев для тестового случая автопилота.
Откройте тестовый файл.
sltest.testmanager.load('AutopilotTestFile.mldatx')
sltest.testmanager.viewВ обозревателе тестов выберите AutopilotStartFile > Basic Design Test Cases > Requirement 1.3 Test. В тестовом примере разверните раздел Custom Criteria.
Включить сценарий настраиваемых критериев, выбрав function customCriteria(test).
Во встроенном редакторе 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),'.']);
Запустите тестовый случай.
На панели Результаты и артефакты разверните окно Результат настраиваемых критериев. Оба критерия проходят.

В дополнение к сценариям критериев разработки во встроенном редакторе MATLAB можно создать пользовательские критерии в автономной функции и вызвать функцию из тестового случая. Использование автономной функции позволяет
Повторное использование пользовательских критериев в нескольких тестовых случаях.
Установка точек останова в сценарии критериев отладки.
Анализ выходных данных моделирования с помощью командной строки.
В этом примере точка останова добавляется в сценарий настраиваемых критериев. Вы запускаете тестовый случай, перечисляете свойства тестового объекта в командной строке и вызываете пользовательские критерии из тестового случая.
Перейдите к папке, содержащей функцию критериев.
cd(fullfile(docroot,'toolbox','sltest','examples'))
Открыть сценарий настраиваемых критериев
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),'.']);
Открыть тестовый файл
sltest.testmanager.load('AutopilotTestFile.mldatx')
sltest.testmanager.viewВо встроенном редакторе MATLAB в разделе Пользовательские критерии введите вызов функции для пользовательских критериев:
sltestCheckFinalRollRefValues(test)
test СвойстваНа 8 строке sltestCheckFinalRollRefValues.mустановите точку останова, щелкнув тире справа от номера строки.
В диспетчере тестов запустите тестовый пример.
В окне команд отображается запрос отладки.
Войти 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]В редакторе MATLAB нажмите кнопку «Продолжить», чтобы продолжить выполнение сценария пользовательских критериев.
На панели Результаты и артефакты разверните окно Результат настраиваемых критериев. Оба критерия проходят.
Чтобы повторно использовать сценарий в другом тестовом случае, вызовите функцию из пользовательского критерия тестового случая.
В этом примере показано, как задать и получить пользовательские критерии с помощью программного интерфейса.
Перед выполнением этого примера временно отключите предупреждения, возникающие в результате ошибок проверки.
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