随着测试覆盖率和应用复杂度的增加,工程师通常花费更多的时间来维护测试管理基础架构,而不是开发测量,从而导致可维护性差、重用率低的系统。顺序是测试管理的核心部分,可实现自动化测试和测量。
本白皮书探讨了在NI TestStand等专用测试管理框架中使用应用程序级、无代码顺序和顺序,以及如何确定最佳方法。本白皮书还将讨论如何使用AI加速开发,以及NI LabVIEW+ Suite与开源解决方案的比较。
工程师通常会花费过多的时间开发定序器而不是开发测试代码,从而降低部署和测试执行的速度。随着需求的增长,排序和支持代码将变为第二个代码库。典型的工作从新的测量转移到维护基础设施。必须开发和维护步骤执行、配置、测试系统部署、错误处理、记录和报告等操作,以确保持续的测试效率。将重点从测试执行转移到测试管理会降低工作效率、降低复制到新工作站的速度并增加风险。测试编排中的任何微小改动都会破坏原本稳定的测量代码。
另一个经常被忽视的挑战是在测试管理基础架构上花费的时间或精力不足,从而导致后期的重复开发。例如,验证团队可能只需要简单的自动化需求。从验证过渡到生产时,执行的测试可能会发生重叠。如测试基础架构不匹配,将导致对现有测试代码和自动化进行不必要的重新开发,否则这些代码和自动化可能会被转移到产品开发的下一阶段。
定序器是定义测试流的控制层,例如,步骤顺序、分支、限制/决策、错误处理、报告生成和资源使用(仪器、DUT连接、文件目录等)。在设计和验证中,团队通常从交互式测量开始快速获取“第一个跟踪”,然后在工作流重复时立即添加自动化。这些步骤列出了常见的进程:
可在交互式应用程序中处理简单线性自动化流程的基本顺序。InstrumentStudio和NI FlexLogger等提供无代码测试自动化工具的软件就是这类交互式应用程序的范例。
例如,假设需要验证被测设备(DUT)。在InstrumentStudio中,可按顺序自动执行一组重复步骤,例如配置仪器生成已知信号、测量DUT响应和捕捉结果。这种可重复的顺序允许用户在同一台或多台设备上快速重新运行同一进程,与手动操作相比,可确保一致性并节省时间,而无需额外的代码。但必须指出,此类顺序通常是线性的,并且每个设备仅以相同顺序运行相同的步骤。对于扩展顺序流控制、专用过程模型或自定义UI和报告,您需要更高级的排序工具。InstrumentStudio内置的序列被保存为序列文件,也可以在TestStand中打开以扩展测试管理功能。
关于使用InstrumentStudio定序器可以和不可以完成的任务,见表1。
注:InstrumentStudio定序器需要InstrumentStudio专业版许可证,该许可证也包含在LabVIEW+ Suite中。
关于InstrumentStudio定序器的更多信息,请访问InstrumentStudio定序器工具文档。
图1。InstrumentStudio Sequencer
另一个无代码自动化排序的范例是使用FlexLogger自动记录传感器模块的输出响应。FlexLogger提供排序插件,用于自动记录DUT的数据,包括初始化数据采集设备、向DUT应用激励信号以及以线性顺序在指定持续时间内记录数据。该插件支持线性阶跃式顺序执行、基本阶跃级分支(跳过、重复、停止或跳转至阶跃)和轮询条件逻辑(开始、停止、前提条件和后阶跃操作),无需开发代码即可实现测试过程的自动化。
表2提供了使用FlexLogger排序插件可完成和不可完成的更详细的列表。
注:FlexLogger的排序插件需要FlexLogger专业版许可证,该许可证也包含在LabVIEW+ Suite中。
关于Sequer插件的更多信息,请访问https://github.com/ni/niflexlogger-plugins/tree/main/PDK%20plugins/Output%20Sequencer
图2。FlexLogger排序插件
复杂的顺序增加了可变性(数据驱动的参数)、重试/跳过逻辑、并行性(多UUT、多站点)、资源仲裁和可追溯性。复杂的顺序功能在验证和生产中至关重要,因为它们可强制执行跨工作站和变体的可重复执行,使用高级过程模型提高吞吐率,定义确定性行为,并产生一致的跟踪/报告以调试和审计结果。
例如,使用TestStand的功能生产测试可能会为多个产品变体和多个待测单元(UUT)运行相同的核心测量步骤,同时根据配置文件或扫描部件号调整参数和流程。该顺序可初始化PXI机箱、电源或固定设备等共享资源,然后并行执行每个UUT测试线程,同时锁定无法共享的仪器。如测量失败,序列可应用条件分支(例如,运行诊断子序列或跳转至安全关闭),还可在包含序列号、限值、操作员ID和校准元数据的可追溯报告中捕捉标准化结果。该过程可确保每个工作站生成用于调试和审计顺序结果的一致数据。
图3。TestStand序列编辑器
LabVIEW+ Suite包含多个级别的排序,具体取决于您在开发工作流程中所处的位置。
本节概述了根据具体项目需求组织自动化测试序列的三种不同策略。选择正确的方法取决于平衡设置速度、可扩展性和长期维护的需求。
流程简单且无需构建框架即可快速启动时,可使用FlexLogger或InstrumentStudio等无代码测试自动化工具。这些产品最适合工作台验证和特征化,即报告和可追溯性需求最少的可重复运行。
无代码自动化排序简化了通常使用Python等脚本语言完成的自动化,现在可以在应用程序层面完成,减少了需要编写和验证的代码数量。
如需协调多个工作站、频繁更改、需要操作员界面、需要标准化报告、支持多UUT或并行执行,或必须满足合规性和可追溯性要求,请切换至TestStand。在这些情况下,应保持测量代码模块化,并将流控制、结果处理和部署问题移至定序器中,这样就不会分散到每个测试模块中。
测试管理框架的主要用例无疑是高容量、高吞吐率和测试可追溯性要求的生产测试环境。但是,测试管理应用程序也可以在测试的验证阶段中找到位置。例如,当需要运行大量的验证和/或特性测试时,简单定序器的局限性很快就会显现出来,尤其是在缺乏速度优化的Python语言中。此外,验证和生产周期之间可能存在间隔,此时可能需要重写代码以更好地优化生产测试。在验证和生产中使用TestStand可确保验证团队能够很好地应对需要大量测试的情况,并更顺利地过渡到生产开发阶段。
仅当需求稳定且可以长期拥有(维护、文档、板载和自动化部署/更新)时,开发自定义定序器。除基本排序外,与使用经验证和维护的排序工具相比,拥有成本通常较高。
NI软件可降低集成硬件支持、维护执行引擎、部署工具和内置报告/可追溯性的风险。如果您的团队长期拥有该框架,并且您的要求(硬件组合、报告、部署)简单、线性且稳定,则开源软件可以正常工作。但是,在基本顺序之外,自定义框架的拥有将导致开发和维护方面的巨大拥有成本,并且这些成本已经可以在NI软件(如InstrumentStudio和FlexLogger)中处理。
此外,与执行速度较慢的Python优化相比,TestStand作为LabVIEW+ Suite的一部分可提供无与伦比的测试性能,与使用C或.NET进行开发相比,定序器开发复杂度更低。TestStand 提供了经过数十年优化和维护的完整测试管理框架,使工程师无需重新开发现有解决方案。
AI可加快测试顺序开发。许多开发人员使用AI生成测量代码、分析测试数据,甚至使用首选语言创建简单的精简序列。NI Nigel™ AI直接集成到LabVIEW+ Suite中,因此您可以利用Nigel AI实现所有这些功能。与其他AI解决方案相比,使用LabVIEW+ Suite的Nigel AI具有多种优势。
Nigel 经过专门的测试和测量应用程序培训,能够帮助您深入了解如何使用 LabVIEW、InstrumentStudio、FlexLogger 和 TestStand 来快速学习和入门。Nigel 提供了使用哪些函数和设置的指导,并将很快能够在完全开发的测试管理框架中根据提示生成完整的 TestStand 序列,这与您在 Python 或 C 中所做的一样,以增强鲁棒性。
测试顺序是测试管理的核心部分,因为它定义了测量的执行方式,包括步骤顺序、分支、极限/决策、错误处理以及结果记录/报告。随着测试覆盖率和应用程序复杂度的增加,排序和支持基础架构可能会很快变成第二个代码库,从而降低部署速度并增加风险。
使用LabVIEW+ Suite,您可以使用InstrumentStudio或FlexLogger的最简单顺序方法扩展自动化,而无需将编排、报告、部署和可追溯性推送到每个测量模块中,同时随着需求从验证扩展到生产,使用TestStand规划通往专用测试管理框架的明确路径。此外,Nigel AI 提供全面的 AI 帮助和顺序开发的未来协调,提供完整的硬件和软件见解,以及即将实施的序列生成,从而将自动化提升到一个新的水平。
| 区域 | InstrumentStudio定序器功能 | InstrumentStudio定序器限制 |
|---|---|---|
| 创建序列 | 添加仪器面板作为顺序步骤,为自定义测量步骤配置I/O和测量插件 | 不支持高级分支、条件逻辑或顺序内的并行执行 |
| 配置步骤 | 直接从InstrumentStudio面板测量创建步骤。通过在仪器面板中配置测量,InstrumentStudio可以直接将配置转换为自动化步骤 | 无法创建自定义测量逻辑或集成外部脚本/代码用于步骤执行 |
| 扫描 | 通过线性参数级联实现基本的单级扫描 | 不支持嵌套扫描、复杂循环结构或基于测试结果的动态参数更改 |
| 序列执行引擎 | 执行序列以执行每个定义的测量步骤。InstrumentStudio在执行过程中实时显示测量结果。 | 无法根据步骤结果分支执行、运行并行测试或处理操作员工作流 |
| 顺序报告 | 生成包含每个顺序执行结果的PDF文件 | 无法自定义默认.pdf以外的报表格式或自动生成高级分析或摘要 |
| 顺序记录 | 自动生成执行日志,用于跟踪和验证顺序运行 | 不提供高级日志管理、导出选项或自动与外部系统集成日志 |
表1.InstrumentStudio定序器比较表
| 区域 | FlexLogger排序插件功能 | FlexLogger排序插件的限制 |
|---|---|---|
| 排序模型 | 按定义的持续时间执行线性、基于步骤的序列 | 作为具有层次或并行状态的完整状态机 |
| 流控制 | 步骤级分支:跳过步骤、重复步骤、停止或跳转至指定步骤 | 支持任意控制流(开关/分支、嵌套分支、动态标签) |
| 条件逻辑 | 条件表达式(布尔/数值)用于开始、停止、前提条件和后步骤操作 | 确定性地或即时地响应事件(条件为轮询,而非中断驱动) |
| 循环 | 通过重复步骤或跳至前期步骤实现基本循环 | 创建动态计算的循环或运行时生成的序列 |
| 输出通道 | 每个定序器实例驱动多个模拟和数字输出通道 | 超出硬件/FlexLogger限制或指定明确的“最大通道”值(未定义) |
| 输出值 | 使用公式保持、梯度、插值和计算输出(上一个、默认、t、数学函数) | 在步骤中运行用户代码(LabVIEW VI、Python、自定义算法) |
| 定时 | 执行适用于慢速/中速顺序的软件定时步骤 | 提供硬件定时、确定性的高速波形控制 |
| 反应性 | 参考条件中的映射输入通道 | 保证零延迟响应(输入值可能略有延迟) |
| 运行时行为 | 在一个项目中运行多个独立的定序器插件实例 | 运行时修改顺序结构(步骤、通道、逻辑) |
| 用例展示 | 测试流程、老化、耐用性、条件梯度/保持 | 替换PLC、安全关键联锁、闭环控制 |
表2:FlexLogger排序插件比较表