Протестируйте синтаксис последовательности и оценки

Эта тема описывает синтаксис, используемый в Test Sequence и блоках Test Assessment и графиках Stateflow®. В блоках вы используете этот синтаксис для тестовых ступенчатых действий, переходов и оценок. В графиках вы используете этот синтаксис в состояниях и переходах.

Для получения информации об использовании интерфейса командной строки, чтобы создать и отредактировать тестовые шаги последовательности, переходы и символы данных, видят функции, перечисленные под Test Sequences на странице Test Scripts.

Test Sequence и блоки Test Assessment используют MATLAB® в качестве языка действия. Вы задаете действия, переходы, оценки с операторами оценки, темпоральными операторами, операторами перехода, функциями генерации сигнала, логическими операторами и операторами отношения. За исключением verify, Диаграммы Stateflow могут использовать все операторы в MATLAB или C как язык действия. verify может использоваться только с языком MATLAB. Например:

  • Выводить прямоугольную волну с периодом 10 секунда:

    square(et/10)
  • К переходу, когда h изменения в 0:

    hasChangedTo(h,0)
  • Чтобы проверить, что x больше y:

    verify(x > y)

Операторы оценки

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

Ключевое словоСинтаксис оператораОписаниеПример
verify

verify(expression)

verify(expression, errorMessage)

verify(expression, identifier, errorMessage)

Оценивает логическое выражение. Дополнительные аргументы помечают результаты в менеджере по Тесту и диагностическом средстве просмотра.

verify(x > y,...
'SimulinkTest:'...
'greaterThan',...
'x and y values are '...
'%d, %d',x,y)
assert

assert(expression)

assert(expression, errorMessage)

Выполняет логическое выражение. Отказ останавливает симуляцию и возвращает ошибку. Дополнительные аргументы возвращают сообщение об ошибке.

assert(h==0 && k==0,...
'h and k must '...
'initialize to 0')

Синтаксис в таблице использует эти аргументы:

 expression

 identifier

 errorMessage

Темпоральные операторы

Чтобы создать выражение, которое оценивает время симуляции, используйте темпоральных операторов. Переменные, используемые в условиях сигнала, должны быть входными параметрами, параметрами или константами в блоке Test Sequence.

ОператорСинтаксисОписаниеПример
et

et(TimeUnits)

Прошедшее время теста продвигается в TimeUnits. Исключение TimeUnits возвращает значение в секундах.

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

et(msec)
t

t(TimeUnits)

Прошедшее время симуляции в TimeUnits. Исключение TimeUnits возвращает значение в секундах.

Прошедшее время симуляции в микросекундах:

t(usec)
after

after(n, TimeUnits)

Возвращает true если n заданные модули времени в TimeUnits протеките с начала текущего тестового шага.

После 4 секунд:

after(4,sec)
before

before(n, TimeUnits)

Возвращает true до n заданные модули времени в TimeUnits протеките, начав с текущего тестового шага.

Перед 4 секундами:

before(4,sec)
duration

ElapsedTime = duration (Condition, TimeUnits)

Возвращает ElapsedTime в TimeUnits для которого Condition был true. ElapsedTime сбрасывается, когда тестовый шаг повторно введен или когда Condition больше не true.

Возвратите true если время в миллисекундах начиная с Phi > 1 больше 550:

duration(Phi>1,msec) > 550

Синтаксис в таблице использует эти аргументы:

 TimeUnits

 Condition

Операторы перехода

Чтобы создать выражения, которые оценивают события сигнала, используйте операторы перехода. Общие операторы перехода включают:

ОператорСинтаксисОписаниеПример
hasChanged
hasChanged(u)

Возвращает true если u изменения в значении с начала тестового шага, в противном случае возвращает false.

u должен быть символ входных данных.

Переход, когда h изменения:

hasChanged(h)
hasChangedFrom
hasChangedFrom(u,A)

Возвращает true если u изменения от значения A, в противном случае возвращает false.

u должен быть символ входных данных.

Переход, когда h изменения от 1:

hasChangedFrom(h,1)
hasChangedTo
hasChangedTo(u,B)

Возвращает true если u изменения в значении B, в противном случае возвращает false.

u должен быть символ входных данных.

Переход, когда h изменения в 0:

hasChangedTo(h,0)

Функции генерации сигнала

Некоторые функции генерации сигнала используют темпорального оператора et, который является прошедшим временем тестового шага в секундах. Масштабирование, округляясь, и другие приближения значений аргументов может влиять на функциональные выходные параметры. Общие функции генерации сигнала включают:

ФункцияСинтаксисОписаниеПример
squaresquare(x)

Представляет прямоугольную волну выход периодом 1 и область значений –1 к 1.

В интервале 0 <= x < 1, square(x) возвращает значение 1 для 0 <= x < 0.5и –1 для 0.5 <= x < 1.

square не поддерживается в диаграммах Stateflow.

Выведите прямоугольную волну с периодом 10 секунда:

square(et/10)
sawtoothsawtooth(x)

Представляет пилообразный выход волны периодом 1 и область значений –1 к 1.

В интервале 0 <= x < 1, sawtooth(x) увеличения.

sawtooth не поддерживается в диаграммах Stateflow.

Выведите пилообразную волну с периодом 10 секунда:

sawtooth(et/10)
triangletriangle(x)

Представляет треугольный выход волны периодом 1 и область значений –1 к 1.

В интервале 0 <= x < 0.5, triangle(x) увеличения.

triangle не поддерживается в диаграммах Stateflow.

Выведите треугольную волну с периодом 10 секунда:

triangle(et/10)
rampramp(x)

Представляет сигнал пандуса наклонного 1, возвращение значения пандуса во время x.

ramp(et) эффективно возвращает прошедшее время тестового шага.

ramp не поддерживается в диаграммах Stateflow.

Пандус один модуль в течение каждых 5 секунд теста продвигается прошедшее время:

ramp(et/5)
heavisideheaviside(x)

Представляет сигнал шага heaviside, возвращая 0 для x < 0 и 1 для x >= 0.

heaviside не поддерживается в диаграммах Stateflow.

Выведите сигнал heaviside после 5 секунды:

heaviside(et-5)
latchlatch(x)

Сохраняет значение x в первый раз latch(x) оценивает на тестовом шаге, и впоследствии возвращает сохраненное значение x. Сбрасывает сохраненное значение x когда шаг выходит. Переоценивает latch(x) когда шаг затем активен.

latch не поддерживается в диаграммах Stateflow.

Фиксируйте b к значению torque:

b = latch(torque)
sinsin(x)

Возвращает синус x, где x исчисляется в радианах.

Синусоида с периодом 10 секунд:

sin(et*2*pi/10)
coscos(x)

Возвращает косинус x, где x исчисляется в радианах.

Волна косинуса с периодом 10 секунд:

cos(et*2*pi/10)
randrand

Равномерно распределенные псевдослучайные значения

Сгенерируйте новые случайные значения для каждой симуляции путем объявления rand значение внешних параметров с coder.extrinsic. Присвойте случайное число локальной переменной. Например:

coder.extrinsic('rand')
nr = rand
sg = a + (b-a)*nr
randnrandn

Нормально распределенные псевдослучайные значения

Сгенерируйте новые случайные значения для каждой симуляции путем объявления randn значение внешних параметров с coder.extrinsic. Присвойте случайное число локальной переменной. Например:

coder.extrinsic('randn')
nr = randn
sg = nr*2
expexp(x)

Возвращает натуральную экспоненциальную функцию, ex.

Экспоненциальный сигнал, прогрессирующий в одной десятой теста, продвигается прошедшее время:

exp(et/10)

Логические операторы

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

ОперацияСинтаксисОписаниеПример

Отрицание

~p

не p

verify(~p)

Соединение

p && q

p и q

verify(p && q)

Дизъюнкция

p || q

p или q

verify(p || q)

Значение

~p || q

если pQ. Логически эквивалентный значению pq.

verify(~p || q)

Двусторонняя условная зависимость

(p && q) || (~p && ~q)

p и q, или не p и не q. Логически эквивалентный двусторонней условной зависимости pq.

verify((p && q) || (~p && ~q))

Операторы отношения

Можно использовать операторы отношения в действиях, переходах и оценках. В этих примерах, x и y представляйте числовые переменные типа.

Используя == или ~= операторы в verify оператор возвращает предупреждение при сравнении данных с плавающей точкой. Считайте ограничения точности сопоставленными с числами с плавающей запятой при реализации verify операторы. Смотрите Числа с плавающей запятой. Если вы используете данные с плавающей точкой, рассматриваете определение допуска к оценке. Например, вместо verify(x == 5), проверьте x в допуске 0.001:

verify(abs(x-5) < 0.001)

Оператор и синтаксисОписаниеПример
x > yБольше, чемverify(x > y)
x < yМеньше, чемverify(x < y)
x >= yБольше, чем или равныйverify(x >= y)
x <= yМеньше чем или равныйverify(x <= y)
x == yРавныйverify(x == y)
x ~= yНе равняютсяverify(x ~= y)

Похожие темы