Блок Test Sequence использует MATLAB® как язык действий. Можно переходить между этапами тестирования путем оценки тестируемого компонента. Можно использовать условную логику, темпоральные операторы и операторы событий.
Рассмотрим простую тестовую последовательность, которая выводит синусоиду на трех частотах. Test Sequence блокирует шаги через несколько действий на основе изменений в переключателе сигнала. См. hasChanged.
Чтобы создать выражение, которое оценивает время симуляции, используйте темпоральные операторы. Переменные, используемые в условиях сигнала, должны быть входами, параметрами или константами в блоке Test Sequence.
Оператор | Синтаксис | Описание | Пример |
---|---|---|---|
et |
| Истекшее время тестового шага в | Истекшее время шага тестовой последовательности в миллисекундах: et(msec) |
t |
| Истекшее время симуляции в | Истекшее время симуляции в микросекундах: t(usec) |
after |
| Возвращает | Через 4 секунды: after(4,sec) |
before |
| Возвращает | До 4 секунд: before(4,sec) |
duration |
| Возвращает | Возврат 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) |
Сообщения несут данные между блоками Test Sequence и другими блоками, такие как графики Stateflow ®. Сообщения могут использоваться для моделирования асинхронных событий. Сообщение ставится в очередь до тех пор, пока вы не вычислите его, что удаляет его из очереди. Можно использовать сообщения и данные сообщений в тестовой последовательности. Сообщение остается в силе до тех пор, пока вы не переадресовываете его, или пока не закончится временной шаг. Для получения дополнительной информации см. Messages (Stateflow) в документации Stateflow ®.
Прием сообщений и доступ к данным сообщений
Если ваш блок Test Sequence имеет вход сообщения, можно использовать сообщения в очереди в действиях или переходах тестовой последовательности. Используйте receive
команда перед доступом к данным сообщения или пересылкой сообщения.
Чтобы создать вход сообщения, наведите указатель мыши на Вход на боковой панели Символы, щелкните значок добавления сообщения и введите имя сообщения.
receive(M)
определяет, присутствует ли сообщение в очереди входа M
, и удаляет сообщение из очереди. receive(M)
возвращает true
если сообщение находится в очереди, и false
если нет. После получения сообщения вы можете получить доступ к данным сообщения с помощью записи через точку, M.data
, или переслать сообщение. Сообщение действительно до тех пор, пока оно не будет переадресовано или не закончится текущий временной шаг.
Порядок удаления сообщений зависит от типа очереди. Установите тип очереди в диалоговом окне свойств сообщения. В боковой панели «Символы» щелкните значок редактирования рядом с входом сообщения и выберите тип очереди.
Отправка сообщений
Чтобы отправить сообщение, создайте выход сообщения и используйте send
команда. Чтобы создать выход сообщения, наведите указатель мыши на Выход на боковой панели Символы, щелкните значок добавления сообщения и введите имя сообщения.
Вы можете назначить данные сообщению с помощью записи через точку M.data
, где M - выход блоком Test Sequence. 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.
Тестируйте последовательности с использованием сообщений
Блок MessageSender присваивает значение данным сообщения вывода сообщения M_out
, затем отправляет сообщение в блок MessageReceiver.
Блок MessageReceiver ждет 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)
Test Sequence | Синтаксис тестовой последовательности и оценки