提高​TestStand​系统​性能 【8】

概览

测试​系统​的​性能​对​生产​线​的​生产​率​和​成本​影响​重大。​运行​缓慢​的​测试​系统​可能​需要​进行​成本​高昂​的​重复​工作​或​缩小​测试​覆盖​范围,​两​种​情况​都​可能​会​影响​质量。​优​化​测试​软件​的​性能​可以​大大​缩短​测试​时间,​并​使用​更少​的​测试​站​实现​更​全面​的​测试。

​​本文​讨论​了​对​使用​NI TestStand​软件​开发​的​测试​站​进行​性能​优​化​的​最佳​实践。​请​务必​谨记,​任何​解决​方案​都​不可能​完美无瑕,​很​难​做到​适用​于​所有​测试​系统。​有些​方法​在​某些​测试​系统​中​会​降低​性能,​而​在​另​一些​测试​系统​中​则​能​提高​性能。​在​对​系统​实施​任何​更改​之前​和​之后,​请​抽出​时间​对​测试​结果​进行​基准​测试,​以此​评估​系统​的​潜在​优​缺点。 

内容

  • TestStand​配置​选项
  • 提高​序列​文件​加​载​性能
  • 提高​代码​模​块​性能
  • 通过​并行​测试​提高​测试​性能
  • 优​化​硬件​使用​情况
  • 优​化​结果​处理

TestStand​配置​选项

TestStand​具有​多个​配置​选项,​这些​选项​可能​会​影响​性能。​以下​各节​介绍​了​这些​选项。

  • 序列​跟踪
  • 平衡​执行​速度​和​内存​使用​情况​的​方案

 

序列​跟踪

序列​跟踪​可​提供​当前​操作​的​即时​反馈​和​状态,​例如“合格”(Pass)、“失败”(Fail)、“错误”(Error)​或“跳​过”(Skipped)。​但​序列​跟踪​会​降低​执行​速度,​从而​影响​性能。​以下​方法​有助​于​提高​执行​速度,​而且​不会​影响​序列​跟踪​带来​的​好处。

为了​在​启用​序列​跟踪​后​提高​性能,​请将​跟踪​速度​设置​为​快速,​确保​步骤​之间​不存在​额外​延迟。​依次​打开“配置”(Configure)»“测试​站​选项”(Station Options),​使用“测试​站​选项”(Station Options)​对话​框​的“执行”(Execution)​选项​卡​对​跟踪​进行​配置。

即使​设置​为​最快​速度,​跟踪​也​会​在​每​个​步骤​执行​后​花费​几​毫秒​的​时间​来​更新“执行​视图”(Execution View)​窗​格。​为了​获得​最快​性能,​可​完全​禁用​跟踪。​不过,​如果​禁用​序列​跟踪,​则​执行​视图​不会​在​执行​序列​时​更新。

要​在​获得​跟踪​优势​的​同时​平衡​性能,​请​使用“序列​调​用​跟踪​设置”(Sequence call trace setting)禁用​特定​子​序列​中的​跟踪。 要​使用​此​方法,​请将​测试​进行​逻辑​分组,​并​为​每​个​组​创建​子​序列。 例如,​在​针对​移动​设备​的​测试​序列​中,​每​个​组​件​(例如​蜂​窝​数据、​用户​输入​和音​频​系统)​的​测试​都可以​在​单独​的​序列​中​实现。​对于​每​个​组​件​的​SequenceCall​步骤,​请在​序列​调​用​中​禁用​跟踪。

  1. 选择“属性”(Properties)»“运行​选项”(Run Options)
  2. 将“序列​调​用​跟踪​设置”(Sequence Call Trace Setting)​属性​设置为“在​序列​中​禁用​跟踪”(Disable tracing in sequence)

通过​这种​方法​组织​测试​序列,​可​对​顶​层​序列​使用​序列​跟踪,​而​不会​因为​跟踪​每​个子​步骤​而​导致​性能​下降。​由于​可以​异步​调​用​每​个子​序列,​因此​这个​方法​也可以​方便​地​应用​到​并行​测试。​关于​并行​测试​序列​的​更多​信息,​请​参阅通过​并行​测试​提高​测试​性能

使用​禁用​跟踪​的​序列​调​用​步骤​来​提高​性能​并​查看​执行​状态

 

平衡​执行​速度​和​内存​使用​情况​的​方案

借助​TestStand,​可​配置​何时​将​代码​模​块​加​载到​内存​或​从​内存​中​卸​载,​这​可能​会对​测试​序列​的​内存​使用​情况​和​执行​速度​产生​重大​影响。​如果​将​模​块​配置​为​在​内存​中​保留​更​长​的​时间,​则​将​缩短​执行​时间,​因为​在​子​序列​执行​时​无​需​重新​加​载​模​块。 不过,​如果​内存​中​保留​了​太多​模​块,​则​可能​会​超出​应用​程序​内存​限制​或​可用​的​物理​内存,​这​也​会​减慢​执行​速度。

理想​情况​下,​可以​对​测试​系统​进行​改进,​增加​内存​限制,​而不是​卸​载​代码​模​块​以​节省​内存。​例如:

  • 使用​64​位​版本​的​TestStand,​增加​应用​程序​的​内存​限制。​如需​了解​更多​有关​使用​64​位​TestStand​解决​内存​问题​的​信息,​请​查看如何​选择​32​位​TestStand​和​64​位​TestStand帮助​主题  
  • 向​测试​系统​添加​其他​物理​内存。
  • 使用​固态​硬盘​提高​虚拟​内存​性能。

如果​内存​使用​情况​方面​仍然​存在​问题,​可以​在​步骤​级别​或​序列​文件​级别​设置“加​载/​卸​载”(Load/​Unload)​选项。​在​大​多数​测试​系统​中,​可将“打开​序列​文件​时​预​加​载”(Preload when opening sequence file)或“执行​开始​时​预​加​载”(Preload when execution begins)选项与“序列​文件​关闭​时​卸​载”(Unload when sequence file is closed)选项​结合​使用,​从而​实现​卓越​性能。 

 

目标 理想​设置
最大​化​执行​次数 使用“打开​序列​文件​时​预​加​载”(Preload when opening sequence file)​和“序列​文件​关闭​时​卸​载”(Unload when sequence file is closed),​将​模​块​保留​在​内存​中,​直到​序列​关闭。 如果​在​内存​中​始终​加​载​模​块,​可以​提高​后​续​调​用​的​速度。
减少​内存​使用 使用“动态​加​载”(Load Dynamically)​和“执行​步骤​后​卸​载”(Unload after Step Executes),​以便​在​不再​使用​模​块​时​从​内存​中​删除​模​块。​但是,​由于​每次​执行​步骤​时​都​必须​重新​加​载​模​块,​因此​性能​会​有所​降低。​此​设置​还有​其他​风险,​例如​在​卸​载​一个​代码​模​块​时​可能​会​丢失​该​代码​模​块​中的​全局​数据。

 

提高​序列​文件​加​载​性能

文件​格式

加​载​较大​的​序列​文件​时,​文件​格式​可能​会​影响​速度​和​性能。​借助​TestStand,​用户​能​以​下列​文件​格式​保存​序列:​INI、​XML​和​二​进制​文件​格式。 

  • 仅​当​必须​能​在​应用​程序​中​查看​文件​且​无法​访问​TestStand​引擎​时,​才能​使用​XML,​例如​使用“序列​文件​查看​器”工具​或​其他​自​定义​查看​器。
  • 只有​在​序列​文件​必须​与​TestStand 3.x​或​更​早​版本​兼容​时​才​使用​INI​格式。
  • 如果​上述​两​种​方法​均​不​适用,​请​使用​二​进制​格式​以​获得​最快​的​加​载​时间。 

要​指定​用于​新​序列​文件​的​格式,​请​执行​以下​操作:  

  1. 选择“配置”(Configure)»“测试​站​选项”(Station Options)
  2. 在“文件”(File)选项​卡​中,​选择“文件​格式​选项”(File Format Options)按钮。 

要​更改​现有​序列​文件​的​格式,​请​执行​以下​操作:

  1. 选择“编辑”(Edit)»“序列​文件​属性”(Sequence File Properties) 
  2. 在“常规”(General)选项​卡​上​选择“文件​格式”(File Format)。
  3. 在“新​文件​的​文件​格式”(File Format for New Files)菜单​中​选择​希望​保存​的​格式。

使用​二​进制​文件​格式​获得​最快​的​序列​文件​加​载​时间

 

搜索​目录​配置

用​相对​路径​指定​序列​文件​和​代码​模​块​时,​搜索​目录​配置​会​直接​影响​加​载​序列​文件​和​代码​模​块​所需​的​时间。​搜索​目录​配置​会​影响​初始​加​载​和​测试​执行​的​性能,​以及​动态​加​载​模​块​的​后​续​迭代​性能。​可​使用​搜索​目录​配置​对话​框​来​查看​和​编辑​搜索​目录。​选择“配置”(Configure)»“搜索​目录”(Search Directories),​打开“编辑​搜索​目录”(Edit Search Directories)对话​框。 

解析​代码​模​块​相对​路径​时,​TestStand​会​遵循​以下​过程:

  1. 将​代码​模​块​路径​添加​到​第​一个​搜索​目录。
  2. 检查​磁盘​上​是否​存在​绝对​文件​路径。
  • 如果​确实​存在,​则​解析​路径。
  • 如果​不存在,​则​移​至​下​一个​目录。

TestStand​会​检查​搜索​目录​列表,​解析​代码​模​块​文件​的​相对​路径

 

由于​每​个​搜索​目录​仅​计算​一个​路径,​因此​该​过程​通常​不会​对​性能​造成​显著​影响。 

但是,​如果​搜索​目录​具有“搜索​子​目录”(Search Subdirectories)​选项,​则会​对​指定​路径​内的​每​个子​目录​重复​该​过程。 如果​路径​包含​较大​的​目录​层次​结构,​则​此​选项​会​严重​影响​性能。 此外,​如果​层次​结构​中​存在​多个​名称​相同​的​文件,​加​载​的​文件​可能​有​误。​鉴于​这些​原因,​应​避免​对​添加​的​任何​搜索​目录​使用​此​选项。 请​确保​使用​基本​搜索​目录​的​相对​路径​指定​所有​代码​模​块​路径。

要​进一步​优​化​搜索​目录​的​顺序,​请​遵循​以下​准则:

  • 将​包含​大​多数​代码​模​块​的​目录​置​于​列表​的​前半​部分,​将​不​常用​的​目录​放在​底部。
  • 由于​网络​访问​比​本地​磁盘​访问​速度​慢,​因此​网络​驱动​器​上​的​目录​应​置​于​列表​的​下半​部分。
  • 如果​确实​需要​使用“搜索​子​目录”(Search Subdirectories)​选项,​请将​这些​目录​放在​列表​最​底部,​仅​作​记录。  

在​为​测试​系统​设计​目录​结构​时,​请​考虑​将​代码​模​块​保存​到​序列​文件​路径​下​的​目录​或​特定​的​代码​模​块​位置。  

  • 如果​使用​序列​文件​的​相对​路径,​可​确保​第​一个​搜索​路径​(当前​序列​文件​目录)​始终​返回​正确​的​文件,​并​避免​进行​其他​搜索。​这种​方法​也能​将​整个​文件​夹​移动​到​其他​位置​或​计算​机,​而​不必​更改​搜索​目录。​对于​仅​由​单​个​序列​文件​或​一​组​相关​序列​文件​使用​的​代码​模​块,​请​使用​此​方法。
  • 如果​使用​特定​的​代码​模​块​位置,​可​将​位置​添加​到​搜索​目录​列表,​从而​轻松​引用​不同​序列​文件​中的​代码​模​块。 此​方法​适用​于​由​许多​序列​文件​共享​的​代码​模​块。

 

提高​代码​模​块​性能

TestStand​可以​在​各种​开发​环境​中​调​用​代码​模​块,​从而​执行​测试​步骤。​这些​代码​模​块​的​配置​和​开发​环境​可能​会对​性能​产生​很大​影响。 在​任何​代码​模​块​环境​中,​都可以​仅​将​必要​的​数据​传​入​和​传​出​代码​模​块,​以此​获得​更好​的​性能。​应​避免​传递​代码​模​块​不会​访问​或​修改​的​大量​数据。

编译​代码​模​块​(DLL)

在​使用​DLL​的​调​试​版​(而​非​发布​版)​时,​诸如.NET​程序​集​或​C/​C​+​+ DLL​之类​的​编译​代码​模​块​可能​会​降低​性能。​通常,​开发​人员​会​在​开发​中​使用​调​试​DLL,​以便​更​轻松​地​查找​和​纠正​模​块​中的​问题。​准备​好​部署​测试​序列​后,​请​切换​到​发布​版​DLL,​以​提高​性能。 

LabVIEW​代码​模块

由于​LabVIEW VI​是​直接​执行​的,​因此​可以​在​LabVIEW​开发​环境​或​LabVIEW Runtime​引擎​中​执行。 在​开发​环境​中​运行​LabVIEW VI​时,​可以​使用​调​试​功能​对​代码​模​块​问题​进行​故障​分析,​但​执行​速度​较​慢。 要​进行​生产​测试,​请​使用​LabVIEW Runtime​引擎​来​调​用​VI。​通过​LabVIEW​适​配​器​对话​框,​可​配置​用于​执行​LabVIEW​代码​的​LabVIEW​服务​器:

  1. 选择“配置”(Configure)»“适​配​器”(Adapters)
  2. 选择​LabVIEW​适​配​器,​然后​单击“配置”(Configure)
  3. 选择​LabVIEW Run-​time​引擎​或​LabVIEW​开发​系统

为了​进一步​优​化​LabVIEW​代码​的​加​载​时间,​可以​将​代码​模​块​VI​内​置​到​打包​项目​库​(PPL)​中。 由于​PPL​包含​代码​模​块​VI​中​所有​VI​依赖​项​的​编译​版本,​因此​LabVIEW​可以​更​快​地​将​依赖​项​加​载到​内存​中。 另外,​如果​使用​TestStand Deployment Utility​部署​代码,​则​可以​在​部署​过程​中​为​VI​生成​PPL。

有关​结合​使用​PPL​与​TestStand Deployment Utility​的​更多​信息,​请​参见使用​LabVIEW​打包​项目​库​整理​测试​程序​文件帮助​主题。

通过​并行​测试​提高​测试​性能

利用​并行​测试​同时​完成​多个​测试,​通常​可以​提升​测试​速度。 TestStand​所​提供​的​功能​有助​于​并行​执行​单​个​待​测​设备​的​测试,​或​同时​测试​多个​待​测​设备。  

 

并行​执行​测试​序列

测试​单​个​待​测​设备​时,​用户​可以​同时​可​测试​系统​的​多个​部分。 例如,​考虑​移动​设备​的​测试​序列。​针对​每​个​组​件​(例如​蜂​窝​数据、​用户​输入​和音​频​系统)​的​测试​都可以​在​单独​的​子​序列​中​实现。​用户​可​配置​序列​调​用​步骤,​异步​调​用​序列,​从而​加快​测试​速度,​而无​需​依次​调​用​每​个​序列。

要​指定​应​异步​执行​的​序列​调​用,​请​执行​以下​操作:

  1. 选择​一个​序列​调​用​步骤,​然后​单击“模​块”(Module)选项​卡。
  2. 在“执行​选项”(Execution Options)菜单​中,​选择“使用​新​线​程”(Use New Thread)或“使用​新​执行”(Use New Execution)选项。

在​新​线​程​中​调​用​序列,​可​同时​测试​待​测​设备​的​不同​部分

在​配置​异步​序列​调​用​时,​请​考虑​使用​新​线​程​与​使用​新​执行​之间​的​区别:

 

新​线程 新​执行
作为​调​用​方​共享​相同​的​结果​集​和​报表 有​自己​的​结果​集​和​报表  
直接​执行 可以​使用​过程​模型​入口​点​执行
与​调​用​方​共享​序列​文件​的​全局值 有​一个​新的​序列​文件​全局​值​副本
被​调​用​方​终止​或​暂停 独立​终止​或​暂停

 

通常,​用户​应​为​测试​序列​中的​相关​测试​使用​新​线​程。 使用​新​执行​的​方式​更​适合​较​为​独立​的​功能,​例如​应​独立​于​测试​序列​运行​的​状态​监视​器。

 

有关​选择​使用​新​线​程​还是​使用​新​执行​的​更多​信息,​请​参阅在​新​执行​中​运行​序列​与​在​新​线​程​中​运行​序列​的​区别

获取​异步​序列​调​用​的​结果

要​获得​用于​生成​报表​或​记录​数据​库​的​异步​子​序列​结果,​请​使用​启动​序列​末尾​的“等待”(Wait)​步骤,​等待​异步​序列​调​用​完成。​子​序列​线​程​完成后,​TestStand​会​将​异步​子​序列​的​结果​附加​到“等待”(Wait)​步骤​结果​中,​以便​用于​报表​生成​和​数据​库​记录。​要​等待​序列​执行​或​线​程,​请在“等待”(Wait)步骤​中​选择“执行”(Execution)或“线​程”(Thread),​以便​控制​和​指定​要​等待​的​执行​或​线​程。 请​记住,​如果​调​用​序列​在​线​程​之前​完成,​添加​此​等待​可能​会​导致​执行​延迟,​因此​仅​当​需要​新​线​程​的​结果​时​才​使用​此​方法

使用​等待​步骤​来​获取​异步​序列​调​用​的​结果

 

并行​测试​多个​待​测​设备

除了​在​测试​序列​中​使用​异步​调​用​之外,​TestStand​还​允许​使用​并行​和​批量​过程​模型​来​并行​测试​多个​待​测​设备。 这些​过程​模型​创建​了​多个​执行,​每​个​执行​都在​单独​的​待​测​设备​上​运行​测试​序列。 可​更改​当前​测试​站​或​单​个​测试​序列​文件​的​过程​模型。

使用​并行​和​批量​过程​模型​同时​测试​多个​待​测​设备

 

有关​并行​测试​如何​缩短​测试​时间​的​演示,​请​参阅​TestStand​附带的并行​测试​策略​演示

 

选择​并行​或​批量​过程​模型

借助​并行​过程​模型,​用户​可在​不同​的​时间​开始​和​完成​待​测​设备​的​测试,​而​批量​过程​模型​的​设计​宗旨​是​同时​在​所有​待​测​设备​上​开始​和​完成​测试​序列。 

  • 并行​过程​模型​非常​适合​下列​情况:​使用​单独​的​测试​连接​件,​测试​多个​待​测​设备,​每​个​待​测​设备​单独​测试。  
  • 批量​过程​模型​非常​适合​下列​情况:​使用​通用​测试​连接​件​或​测试​舱,​对待​测​设备​进行​成​组​测试,​所有​待​测​设备​必须​同步​测试

 除了​同时​开始​和​结束​每​个​批量​测试​之外,​批量​过程​模型​还​能​使用​批量​同步​步骤​和​设置​来​进一步​同步​批量​处理​中​所有​待​测​设备​的​测试。​如果​应​针对​所有​待​测​设备​同时​运行​测试​的​某些​部分,​可​使用​步骤​设置​为​单​个​步骤​定义​同步​部分,​或者​使用​批量​同步​步骤​类型​为​多个​步骤​定义​同步​部分。

使用​批量​同步,​确保​测试​的​某些​部分​对于​批量​处理​中的​所有​待​测​设备​都是​同步的

对于​所有​类型​的​批量​同步​部分,​所有​套接​字​都​一起​进入​和​退出​该​部分。 用户​可​进一步​将​同步​配置​为​按​顺序​执行​或​仅​在​单​个​线​程​中​执行。

如需​了解​更多​关于​批量​同步​的​信息,​请​参阅同步​步骤​类型 – 批量​同步示例

 

并行​测试​的​硬件​注意​事项

并行​测试​多个​待​测​设备​时,​可用​的​测试​硬件​可能​会​变为​性能​瓶颈。 使用​共享​硬件​资源​时,​必须​确保​在​任何​给​定​时间​只有​一个​线​程​在​访问​共享​硬件​资源,​从而​避免​资源​冲突。 用户​通常​使用“锁定”(Lock)​设置​或​步骤​类型​来​保留​共享​资源。 但​如果​多个​线​程​正在​等待​单​个​资源​来​完成​测试,​那么​并行​测试​的​许多​潜在​性能​提升​将​无法​实现。 针对​这种​情况,​可​尝试​以下​方法:

  • 使用“自动​计划”步骤​类型,​在​等待​资源​时​执行​其他​测试。
  • 使用​执行​评​测​工具​查找​导致​瓶颈​的​硬件,​并​添加​其他​测试​硬件。

 

使用​自动​计划

借助“自动​计划”步骤​类型,​可​配置​一​组​能​以​任何​顺序​执行​的​测试,​从而​优​化​测试​时间​和​硬件​利用​率。 在​使用​并行​或​批量​过程​模型​执行​自动​计划​部分​时,​每​个​套接​字​都会​执行​不需要​保留​资源​的​第一​部分。​因此,​同一​测试​的​不同​执行​之间​的​执行​顺序​可能​会​有所不同

可在​执行​顺序​不是​首要​考虑​因素​时​使用​自动​计划​程序​来​优​化​硬件​利用率

 

如果​测试​执行​顺序​不是​首要​考虑​因素,​请​使用​此​方法。​如果​测试​要求​按​特定​顺序​显示​测试​结果,​请​不要​使用​自动​计划。

 

使用​执行​评​测​工具

TestStand​附带​的​执行​评​测​工具​可​用于​识别​限制​测试​系统​执行​速度​的​测试​硬件。 依次​打开“工具”(Tools)»“分析​执行”(Profile Execution),​从​序列​编辑​器​中​启动​执行​评​测​工具。

借助​执行​评​测​器,​可​查看​每​个​硬件​资源​处于​活动​状态​的​时间,​从而​针对​向​测试​系统​添加​硬件​所​产生​的​影响​做出​明智​的​决策。 在​下面​的​示例​分析​中,​DMM​得到​充分利用,​而​示波器​的​利用​率​仅​为​66%。 根据​此​分析,​添加​第二个​DMM​或​具有​更多​通道​的​DMM​将会​缩短​此​序列​的​测试​时间。

借助​执行​评​测​工具,​可​直观​了解​哪些​资源​可能是​测试​配置​中的​瓶颈

 

优​化​硬件​使用​情况

通过​确保​以​最​有效​的​方式​与​硬件​交互,​缩短​测试​时间。 本​节​讨论​管理​硬件​引用​和​测量​方法​以​提高​性能​的​注意​事项。

 

优​化​硬件​测量​性能

对于​任何​给​定​的​硬件​配置,​都​存在​一些​可能​会​降低​测试​有效性​的​常见​因素。​例如,​可以​使用​示波器​来​测量​信号​的​上升​时间、​下降​时间、​RMS​和​峰值。​如果​要​对​示波器​进行​编​程​以​捕获​整个​波形,​请将​波形​传输​到​测试​系统,​然后​对​数据​执行​后​处理​以​提取​所需​的​测量​数据,​由于​传输​的​数据​量​很大,​因此​性能​将会​下降。​通信​总​线​的​延迟​也​会​影响​性能,​因此​应​考虑​仪器​是否​具有​高​延迟​(例如​LAN​或​串​行​连接)​或​低​延迟​总​线​(例如​PCI​或​PXI)。

如果​将​示波器​配置​为​测量​上升​时间、​触发​采集、​从​仪器​读​回​上升​时间​并​重复​进行​每次​测量,​则​必须​为​每次​测量​重新​配置​和​重新​触发​示波器。​使用​此​选项,​速度​可能​偏​慢​且​效率​低下。

鉴于​许多​现代​示波器​具有​多个​测量​通道,​请​使用​以下​步骤​来​更​快​地​执行​测试:

  1. 设置​测试,​在​示波器​中​配置​四​个​测量​通道​(为​上述​每​种​测量​分别​配置​一个)。 
  2. 触发​单​次​采集。
  3. 读​回​四​个​测量​通道​中的​每​个​通道。

管理​硬件​引用​寿命

频繁​打开​和​关闭​与​硬件​的​会话​可能​会​导致​性能​降低:​在​初始​化​与​设备​的​通信​时,​许多​驱动​程序​会​传输​大量​数据​来​验证​通信​和​配置。​因此,​最好​在​每​个​测试​中​仅​初始​化​一次​硬件,​同时​保持​会话​句柄,​以便​在​整个​测试​中​访问​硬件。

要​在​测试​中​仅​初始​化​一次​硬件,​可以​使用​ProcessSetup​过程​模型​回​调,​该​回​调​在​所有​测试​代码​之前​运行。 对于​并行​和​批量​过程​模型,​无论​有​多少​测试​套接​字,​ProcessSetup​仅​执行​一次。​要​清除​引用,​可以​使用​ProcessCleanup​回​调,​该​回​调​在​所有​测试​完成后​执行​一次。​有关​创建​和​使用​过程​模型​回​调​的​更多​信息,​请​参见在​NI TestStand​中​使用​回调

要​访问​在​过程​模型​回​调​中​打开​的​硬件​会话,​可以​使用​在​回​调​序列​和​MainSequence​之间​共享​的​文件​全局​变量。 也可以​使用​会话​管理​器,​通过​activeX​对象​自动​管理​硬件​会话​的​生命​周期。 如需​更多​关于​使用​会话​管理​器​的​信息,​请​参阅会话​管理​器​示例

 

优​化​结果​处理

有​多种​方法​可以​优​化​结果​集​对​系统​性能​的​影响。

使用​即时​记录

对于​内​置​结果​处理​器,​可以​选择“即时”(On-​The-​Fly)​选项,​在​序列​执行​时​(而不是​在​测试​序列​结束​时)​执行​记录。 选择​是否​使用​此​设置​时,​请​考虑​以下​优势​和​缺点

 

即时​记录​的​优势:

  • 允许​测试​操作​员​在​测试​执行​时​查看​报表。
  • 在​测试​程序​出现​严重​错误​的​情况​下​保留​结果。
  • 如果​与​过程​模型​选项​中的“丢弃​结果”(Discard Results)或“模型​不​要求​时​禁用​结果”(Disable Results when not Required by Model)设置​结合​使用,​则​占用​内存​会​比较​少。 启用​此​设置​后,​所有​已​处理​的​结果​将​从​结果​集中​删除,​从而​释放​内存。 对于​生成​报表,​还​必须​在​报表​生成​设置​中​启用“仅​显示​最新​结果”(Only Display Latest Results)​选项,​节省​内存。 

即时​记录​的​缺点:

  • 由于​频繁​登录​占用​内存,​因此​测试​速度​降低。
  • 记录​是在​单独​的​服务​器​中​实现​的,​无法​修改,​因此​更​难以​实现​自​定义。

如果​用户​主要是​为了​实现​即时​记录,​而​不太​在意​速度​稍微​变​慢,​可​通过​调整​即时​设置​来​减轻​性能​影响。 要​访问​这些​设置,​请​执行​以下​操作:

  1. 选择“配置”(Configure)»“结果​处理”(Result Processing)
  2. 选中“显示​更多​选项”(Show More Options)复​选​框,​然后​单击“高级”(Advanced)按钮。

为了​提高​性能,​请​增加​处理​间隔​和/​或​最大​结果​数,​从而​减少​TestStand​记录​结果​的​频率。  

离​线​处理​结果

为了​减少​生成​结果​所需​的​时间,​可​将​结果​数据​记录​在​离​线​结果​文件​中,​该​文件​是​一种​快速​紧凑​的​原始​结果​格式,​其中​包含​TestStand​生成​报表​或​记录​到​数据​库​所需​的​所有​信息。 由于​该​文件​只​包含​原始​结果​数据,​处理​时间​更​短,​因此​可​提高​测试​吞吐量。


使用“离​线​结果​处理​工具”可​将​原始​结果​文件​处理​成​测试​报表,​或​将​数据​记录​到​数据​库​中。​由于​这​是​一个​独立​的​工具,​可以​独立​于​测试​运行,​因此​可以​稍​后​处理​结果​或​在​其他​计算​机上​处理​结果。​如果​保持​测试​系统​性能​的​优先​级​高于​即时​生成​报表,​请​使用​此​工具。​如需​更多​相关​信息,​请​参阅TestStand​离​线​结果​处理​工具帮助​主题。

 

优​化​数据​存储

尽管​某些​网络​数据​传输​机制​比​其他​机制​更​快,​但是​本地​存储​到​硬盘​驱动​器​的​数据​记录​速度​比​存储​到​网络​位置​的​记录​速度​更​快。​例如,​使用​Microsoft​消息​队列​(MSMQ)​与​数据​库​进行​通信,​这​会​创建​本地​中间​数据​文件,​然后​通过​网络​进行​传输。​通常,​这​比​直接​写​入​远程​数据​库​更​快​且​更​安全。​尽管​TestStand​不​提供​使用​MSMQ​的​原生​功能,​但​可以​使用​第三​方​工具​来​实现​此类​通信。

 

仅​记录​所需​的​数据

另​一个​需要​考虑​的​因素​是​记录​到​系统​的​数据​量。​随着​记录​数据​量的​增加,​性能​会​有所​下降。​为了​仅​记录​所需​的​数据,​可​禁用​某些​步骤​或​序列​的​结果​记录。

通过​取消​选择“记录​结果”(Record Result)选项(“步骤”(Step)»“属性”(Properties)»“运行​选项”(Run Options)),​可​排除​单​个​步骤​的​记录​结果。​也​可​使用“序列​属性”(Sequence Properties)对话​框​中的“禁用​所有​步骤​的​结果​记录”(Disable Result Recording For All Steps)设置,​设置​整个​序列​以​排除​结果​记录。

 

失败​后​终止​测试

在​生产​环境​中,​可能​只需要​知道​待​测​设备​存在​失败​测试,​而​不必​具体​了解​是​哪​项​测试。​在​此类​情况​下,​可在​第一次​失败​时​终止​测试​以​释放​系统​资源,​稍​后​再​获得​更​详细​的​故障​分析。 

根据​测试,​某些​故障​可能​比​其他​故障​更​为​严重。​用户​可能​只​希望​在​某些​步骤​失败​时​才​终止​测试。 因此,​可​为​单​个​步骤​或​序列​配置​故障​行为

要​在​特定​步骤​出现​任何​故障​后​结束​测试,​请​执行​以下​操作:

  1. 在“步骤”(Step)​属性​中,​选择“发布​操作”(Post Action)
  2. 在“失败​时”(On Fail)​菜单​中,​选择“终止​执行”(Terminate Execution)

要​在​特定​序列​出现​任何​故障​后​结束​测试,​请​执行​以下​操作:

  1. 在​序列​窗​格​中​右​键​单击​一个​序列,​然后​选择“序列​属性”(Sequence Properties)。
  2. 在“步骤​失败​时”(On Step Failure)​选项​中,​选择“转​到​清除”(Goto Cleanup)。

也可以​为​特定​测试​站​配置​此​设置,​例如​仅​在​生产​测试​机上​提前​终止,​而​始终​在​生产​线​外​的​诊断​机上​完成​完整​测试。 要​配置​特定​的​测试​机​以​在​失败​时​终止​测试,​请​执行​以下​操作:

  1. 选择“配置”(Configure)»“测试​站​选项”(Station Options)
  2. 在​执行​选项​卡​中,​选择“序列​失败​时​立即​转​到​清除”(Immediately Goto Cleanup on Sequence Failure)设置。

 

本文转自:https://www.ni.com/content/ni/locales/zh-cn/support/documentation/supplemental/08/improving-teststand-system-performance.html

posted @ 2020-10-03 15:20  NiKaFace  阅读(1208)  评论(0编辑  收藏  举报