• Test Squence测试过程中如何按照特定条件暂停或者停止仿真


    在Simulink模型做Test Squence测试时,工程师有时候希望测试用例能按照自己期望的条件来停止或暂停仿真,这个期望的特定条件,可以是时间达到,也可以是任何能达到的特定状态。

    具体实现方法如下:

    1、在Test Harness测试用例中使用 Assertion 模块暂停或者停止仿真

    当模块的输入信号为零时,您可以使用 Assertion 模块暂停仿真。在Assertion 模块中使用 set_param 命令暂停仿真。

    设置如下:

    1、在您的模型中添加一个 Assertion 模块。

    2、将 Assertion 模块连接到在所需的暂停时间变成零值的信号。

    3、在 Assertion 模块对话框中,清除 Stop simulation when assertion fails 复选框。输入以下两行命令作为 Simulation callback when assertion fails 的值:

    set_param(bdroot,‘SimulationCommand’,‘pause’),

    disp(sprintf(‘\nSimulation paused.’))

    例子1:当仿真时间到5s时,暂停仿真。本例只是以时间达到为条件,这个条件也可以是从 Test Sequence 块生成零(false)输出,并将其馈送到"Asserion"模块的输入端。

    在这里插入图片描述

    2、在Test Harness测试用例中使用 Stop Simulation模块停止仿真

    当输入为非零值时,Stop Simulation 模块将使仿真停止。

    例子2:当仿真时间到5s时,停止仿真。本例只是以时间达到为条件,这个条件也可以是从 Test Sequence 块生成非零输出(true),并将其馈送到" Stop Simulation"模块的输入端。

    在这里插入图片描述

    3、在Test Squence中使用coder.extrinsic 结合set_param暂停或停止仿真

    在您希望暂停仿真那一行,插入如下代码,就能达到目的。如果想停止仿真,将pause改为stop就行。

    例子3:

    在这里插入图片描述
    此处注意:由于bdroot是char数组,而Simulink Test仅支持数字或逻辑类型,所以必须先用coder.extrinsic将set_param声明为外部函数才行。

    coder.extrinsic说明(来自matlab help):

    coder.extrinsic(function) 将 function 声明为外部函数。代码生成器不为外部函数体生成代码,而是使用 MATLAB® 引擎来执行调用。在执行期间,仅当 MATLAB 引擎可用时,此功能才可用。

    4、在Test Squence中使用error停止仿真

    您可以在所需的步骤中使用错误函数。 这将停止模拟并输出自定义错误消息。

    例子4:

    在这里插入图片描述
    在simulink的Diagnostic Viewer中显示如下:
    在这里插入图片描述
    第4种不推荐使用。

    5、开发"暂停"或"停止"状态功能

    我现在用的matlab版本是2020b,寄希望于mathworks公司早日在Test Squence中实现"暂停"或"停止"状态功能。让我们一起期待!!!


    资源分享

    下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!在这里插入图片描述

  • 相关阅读:
    python基础小知识【基础+进阶】
    软件测试知识储备:关于「登录安全」的基础知识,你了解多少?
    网络原理学习
    12.88万的小魔驼2.0量产交付,末端物流自动配送从概念走向现实
    小红书矩阵源码(多账号发布+批量剪辑视频+一键分发)
    SpringBoot + Redis +RabbitMQ 实现高并发并限时秒杀
    阅读笔记——MetaAge: Meta-Learning Personalized Age Estimators
    条件渲染(vue)
    第一百三十回 Flutter与原生平台通信
    深度学习——python中的广播
  • 原文地址:https://blog.csdn.net/weixin_54696666/article/details/128206871