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

Эта тема описывает синтаксис, используемый в Тестовых блоках Оценки Последовательности и Теста. Вы используете этот синтаксис для тестовых ступенчатых действий, переходов и оценок.

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

Протестируйте использование блоков Оценки Последовательности и Теста 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.

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

square(et/10)
sawtoothsawtooth(x)

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

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

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

sawtooth(et/10)
triangletriangle(x)

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

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

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

triangle(et/10)
rampramp(x)

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

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

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

ramp(et/5)
heavisideheaviside(x)

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

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

heaviside(et-5)
latchlatch(x)

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

Фиксируйте 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

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

verify(~p || q)

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

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

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

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

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

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

Используя == или операторы ~= в verify оператор возвращает предупреждение при сравнении данных с плавающей точкой. Считайте ограничения точности сопоставленными с числами с плавающей запятой при реализации операторов verify. Смотрите Числа с плавающей запятой (MATLAB). Если вы используете данные с плавающей точкой, рассматриваете определение допуска к оценке. Например, вместо 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)

Похожие темы