主要内容

测试计划和策略

您可以使用动态仿真模块®测试™对模型和代码进行功能测试。在创建测试之前,请考虑:

确定测试目标

在您编写测试之前,了解您的目标。你可能有以下一个或多个目标:

模拟测试

如果您的测试只需要一个模型进行无错误模拟或执行回归测试,那么您可以运行一个模拟测试。如果您的模型仍在开发中,或者您有一个包含输入和评估并记录相关数据的现有测试模型,那么模拟测试是有用的。示例请参见测试运行时错误的模拟

需求验证

如果您安装了Requirements Toolbox™,您可以通过将一个或多个测试用例链接到Requirements Toolbox中编写的需求,来评估模型是否根据需求行为。您可以通过以下方法验证模型是否满足要求:

  • 创作验证模型或测试工具中的语句或自定义标准脚本。

  • 包括模型验证模块在模型或测试束带中。

  • 在测试用例中捕获模拟输出,并将模拟输出与基线数据进行比较。

例如,使用验证语句,看到测试变速器控制器的下档点

数据比较

您可以将模拟结果与基线数据或另一个模拟进行比较。您还可以比较不同MATLAB之间的结果®版本。

在基线测试中,您首先建立基线数据,这是预期的输出。您可以手动定义基线数据,从Excel导入基线数据®或MAT文件,或从模拟中捕获基线数据。有关更多信息,请参见比较模型输出和基线数据

在等价测试中,要比较两个模拟,以确定它们是否等价。例如,您可以比较来自两个求解器的结果,或者比较来自正常模式模拟的结果与在软件在环(SIL)、处理器在环(PIL)或实时硬件在环(HIL)模式下生成的代码。通过运行等效性测试,您可以探索不同参数值或校准数据集的影响。有关等价测试示例,请参见测试两个模拟是否等价

在多版本测试中,您可以在多个安装的MATLAB版本中运行测试。使用多版本测试来验证测试是否通过,并在不同版本中产生相同的结果。

SIL和PIL测试

您可以通过在正常和SIL或PIL模式下背靠背地运行模拟来验证所生成代码的输出。以正常和SIL或PIL模式运行背靠背测试是等价测试的一种形式。相同的背靠背测试可以通过迭代MAT或Excel文件中定义的不同测试向量来运行多个测试场景。您可以将公差应用到结果中,以允许模型和生成的代码之间在技术上可接受的值和时间差异。公差也可以应用于在硬件上实时运行的代码。您不能在子系统模型中使用SIL或PIL模式。

实时测试

仿真软件实时™,您可以在实时目标计算机上以HIL(硬件在环)模式执行测试,从而包括物理设备、信号和嵌入式硬件的影响。通过实时运行基线测试,您可以将结果与已知的良好数据进行比较。您还可以在模型、SIL或PIL和实时模拟之间运行一个背靠背的测试。

报道

仿真软件覆盖™,您可以收集覆盖率数据来帮助量化您的模型或代码被测试的程度。当您为您的测试文件设置覆盖率集合时,测试结果包括被测试系统的覆盖率,以及可选的引用模型。您可以指定要返回的覆盖率指标。如果为软件在循环(SIL)或处理器在循环(PIL)配置了模型参考块、原子子系统块和顶级模型,则支持覆盖它们。覆盖范围不支持SIL或PIL功能块。

如果你的结果显示不完整的覆盖率,你可以通过以下方法增加覆盖率:

  • 手动向测试文件添加测试用例。

  • 生成测试用例以增加覆盖率,使用仿真软件设计校验™

在任何一种情况下,您都可以将新的测试用例链接到需求,这对于某些认证是必需的。

测试整个模型或特定组件

您可以测试整个模型或模型组件。执行测试的一种方法是首先对一个组件进行单元测试,然后增加被测试组件的数量,以执行集成和系统级测试。通过使用这个测试方案,您可以更容易地识别和调试测试用例和模型设计问题。如果您想获得聚合的覆盖率,请测试您的整个模型。

使用测试工具

测试工具包含被测试组件的副本,或者,为了测试整个模型,包含对模型的引用。线束还包含用于测试的输入和输出。使用测试工具将被测试的模型或组件与主模型隔离开来,这将保持主模型的干净和整洁。

您可以在您的模型文件中,或者在与模型分离的外部文件中,在内部保存该工具。在内部保存工具简化了模型和测试的共享,因为工件更少,并且允许您更容易地调试测试问题。从外部保存工具可以让您重用和共享工具,并清楚地将您的设计与测试工件分离开来。不管它是在模型的内部还是外部,测试工具的工作原理都是一样的。有关测试工具的更多信息,请参见测试线束和模型关系而且创建一个测试工具

该图显示了一个测试工具的示例。

测试线束,显示连接到路由子系统的输入。该子系统连接到被测试的移位逻辑块,该块连接到另一个路由子系统,然后该子系统连接到输出。

被测试的组件是shift_logic块,它是在套件创建期间从主模型复制的。有关的shift_logic块链接到主模型。的输入是轮廓尺寸块,输出是外港块。垂直子系统包含信号规范块和连接组件接口到输入和输出的路由。

确定输入和输出

考虑使用什么输入信号和信号公差来测试您的模型,以及从哪里获得它们。您可以将Signal Editor块添加到您的测试工具中,以定义输入信号。或者,也可以定义和使用来自微软®Excel或MAT文件,或Test Sequence块。如果你有仿真软件设计验证器安装后,您可以自动生成测试输入。

对于来自测试的输出,考虑您是希望将测试细节和测试结果数据保存到一个报告中,以便存档还是分发。也可以使用输出作为测试评估块来评估和验证测试结果。对于基线测试,使用输出将实际结果与预期结果进行比较。

优化测试执行时间

您可以优化测试时间的方法包括使用迭代、并行测试,以及运行测试用例的子集。

在设计测试时,确定是需要多个测试还是同一测试的迭代。迭代是测试用例的变体。在迭代中为不同的输入数据集、参数集、配置集、测试场景、基线数据和模拟模式使用迭代。使用迭代的一个优点是您可以使用快速重启来运行您的测试,这避免了必须为每次迭代重新编译模型,从而减少了模拟时间。

例如,如果您有多个输入数据集,您可以为每个外部输入文件设置一个测试用例迭代。重写参数的另一种方法是使用脚本参数扫描,它使您能够遍历许多值。如果您需要独立的配置控制,或者每个测试涉及不同的需求,则使用单独的测试用例;有关迭代的更多信息,请参见测试迭代

如果您有并行计算工具箱™,则可以在本地计算机或集群上并行运行测试。如果你有MATLAB并行服务器™,您可以在远程集群上并行运行测试。当您有大量的测试用例或需要长时间运行的测试用例时,并行测试是有用的。看到使用并行执行运行测试

优化测试时间的另一种方法是通过标记要运行的测试来运行测试用例的子集。

有关改进和优化模型仿真的更多信息,请参见Simulink文档中的仿真下面的优化性能一节。

使用编程或GUI界面

创建和运行测试仿真软件测试提供了测试管理器,这是一个交互工具,以及您可以在测试脚本和命令行中使用的API命令和函数。使用测试管理器,您可以管理大量的测试,并系统地获取和管理结果。如果您需要定义新的测试评估,请使用test Manager,因为这个功能在API中是不可用的。如果您在持续集成环境中工作,请使用该API。否则,您可以使用您喜欢的任何选项。

另请参阅

相关的话题

Baidu
map