Блок тестовой последовательности использует MATLAB ® в качестве языка действий. Можно переходить между шагами тестирования путем анализа тестируемого компонента. Можно использовать условную логику, временные операторы и операторы событий.
Рассмотрим простую тестовую последовательность, которая выводит синусоидальную волну на трех частотах. Блок тестовой последовательности выполняет несколько действий на основе изменений в переключателе сигналов. См. раздел hasChanged.

Чтобы создать выражение, оценивающее время моделирования, используйте временные операторы. Переменные, используемые в условиях сигнала, должны быть входами, параметрами или константами в блоке тестовой последовательности.
| Оператор | Синтаксис | Описание | Пример |
|---|---|---|---|
| и |
| Прошедшее время этапа тестирования в | Истекшее время шага тестовой последовательности в миллисекундах: et(msec) |
| t |
| Прошедшее время моделирования в | Истекшее время моделирования в микросекундах: t(usec) |
| после |
| Прибыль | Через 4 секунды: after(4,sec) |
| прежде |
| Прибыль | До 4 секунд: before(4,sec) |
| продолжительность |
| Прибыль | Вернуть duration(Phi>1,msec) > 550 |
Синтаксис в таблице использует следующие аргументы:
Чтобы создать выражения, оценивающие сигнальные события, используйте операторы перехода. К общим операторам перехода относятся:
| Оператор | Синтаксис | Описание | Пример |
|---|---|---|---|
| hasChanged | hasChanged(u) | Прибыль
| Переход, когда hasChanged(h) |
| hasChangedFrom | hasChangedFrom(u,A) | Возвращает значение true, если
| Переход, когда hasChangedFrom(h,1) |
| hasChangedTo | hasChangedTo(u,B) | Возвращает значение true, если
| Переход, когда hasChangedTo(h,0) |
Сообщения содержат данные между блоками тестовой последовательности и другими блоками, такими как диаграммы Stateflow ®. Сообщения могут использоваться для моделирования асинхронных событий. Сообщение помещается в очередь до тех пор, пока не будет вычислено, что приведет к его удалению из очереди. В тестовой последовательности можно использовать сообщения и данные сообщения. Сообщение остается действительным до тех пор, пока вы не перешлете его или пока не закончится шаг времени. Дополнительные сведения см. в разделе Сообщения (Stateflow) в документации Stateflow ®.
Получение сообщений и доступ к данным сообщений
Если блок тестовой последовательности имеет ввод сообщений, можно использовать сообщения из очереди в действиях или переходах тестовой последовательности. Используйте receive перед доступом к данным сообщения или пересылкой сообщения.
Чтобы создать ввод сообщения, наведите курсор на элемент «Ввод» на боковой панели «Символы», щелкните значок добавления сообщения и введите имя сообщения.

receive(M) определяет, присутствует ли сообщение в очереди ввода Mи удаляет сообщение из очереди. receive(M) прибыль true если сообщение находится в очереди, и false если нет. После получения сообщения можно получить доступ к данным сообщения с помощью точечной нотации, M.dataили переслать сообщение. Сообщение является действительным до тех пор, пока оно не будет переадресовано или не закончится текущий шаг времени.
Порядок удаления сообщений зависит от типа очереди. Задайте тип очереди с помощью диалогового окна свойств сообщения. В боковой панели «Символы» щелкните значок редактирования рядом с вводом сообщения и выберите тип очереди.
Отправить сообщения
Чтобы отправить сообщение, создайте вывод сообщения и используйте send команда. Чтобы создать вывод сообщения, наведите указатель мыши на поле Вывод (Output) на боковой панели Символы (Symbols), щелкните значок добавления сообщения и введите имя сообщения.

Можно назначить данные сообщению с помощью точечной нотации M.data, где M - выходной сигнал блока тестовой последовательности. send(M) отправляет сообщение.
Пересылка сообщений
Можно переадресовать сообщение из очереди входных сообщений в выходной порт. Чтобы переслать сообщение:
Получение сообщения из очереди ввода с помощью receive.
Пересылка сообщения с помощью команды forward(M,M_out) где M - очередь ввода сообщения и M_out является выводом сообщения.
Сравнение тестовых последовательностей с использованием данных и сообщений
В этом примере показаны входы и выходы сообщений, их отправка и получение. Модель сравнивает две пары тестовых последовательностей. Каждая пара состоит из блока посылки и приема тестовой последовательности. Первая пара посылает и принимает данные, а вторая передает и принимает сообщение.
Задайте переменную имени модели.
model = 'sltest_testsequence_data_vs_message';
Откройте модель.
open_system(model)

Тестовые последовательности с использованием данных
Блок DataSender присваивает значение выводу данных M.

Блок DataReceiver ожидает 3 секунды, затем переходит к шагу S2. Шаг S2 переходит к шагу S3 с помощью сравнения условий M до ожидаемого значения и делает то же самое для S3 до S4.

Тестовые последовательности с использованием сообщений
Блок StartSender присваивает значение данным сообщения при выводе сообщения M_out, затем отправляет сообщение в блок, содержащий (передающий) StartReceiver.

Блок StartReceiver ожидает 3 секунды, затем переходит к шагу S2. Переход этапа S2 оценивает очередь M с receive(M), удаление сообщения из очереди. receive(M) прибыль true поскольку сообщение присутствует. M.data == 3.5 сравнивает данные сообщения с ожидаемым значением. Оператор имеет значение true, и последовательность переходит к шагу S3.

Когда состояние перехода этапа S3 оценивается, в очереди нет сообщений. Поэтому S3 не переходит на S4.
Запустите тест и просмотрите результаты сравнения различных вариантов поведения пар тестовых последовательностей.
open_system([model '/Scope'])
sim(model)

close_system(model,0) clear(model)
Последовательность испытаний | Последовательность тестирования и синтаксис оценки