TestStand ​系统​部署​最佳​实践【9】

概览

测试​系统​的​部署​是​测试​框架​开发​中​最​重要​的​环节​之一,​但在​开发​结束​之前​却​经常​被​忽视。​在​整个​开发​周期​中​牢记​部署​很​重要,​如此​可​确保​部署​过程​尽可能​顺利。​要​部署​NI TestStand​系统,​必须​识别​需要​部署​的​不同​组​件,​确定​这些​组​件​的​依赖​关系,​然后​将​其​打包​到​可​部署​的​解决​方案​中。

​创建​可​部署​的​解决​方案​后,​您​可以​使用​多个​选项​将​该​解决​方案​部署​到​一个​或​多个​测试​站。​本文​档​讨论​了​使用​NI​程序​包、​安装​程序​技术​或​共享​网络​驱动​器​的​部署​策略。​

内容

  • 识别​部署​所需​的​组件
  • 选择​部署​机制

识别​部署​所需​的​组件


​测试​系统​通常​很​复杂,​包含​许多​组​件​和​文件,​必须​正确​部署​所有​组​件​和​文件,​从而​确保​在​生产​系统​中的​测试​顺利​运行。​在​本文​档​中,​我们​仅​考虑​测试​产品​时​使用​的​软件​组​件。

TestStand​系统​有​许多​必须​包含​在​部署​中的​组件

TestStand​测试​系统​的​主要​组​件​包括​测试​代码、​测试​框架​文件​以及​驱动​程序​和​Runtime​引擎。

测试​代码

测试​代码​包括​为了​执行​实际​测试​而​创建​的​序列​文件​和​代码​模​块。​部署​测试​代码​时,​必须​确保​代码​模​块​的​所有​必需​依赖​项​均​包含​在内,​并且​文件​已​部署​在​磁盘​上​的​正确​位置,​以便​调​用​者​可以​找到​它们。​测试​代码​通常​包括​一个​或​多个​序列​文件​以及​这些​文件​引用​的​文件。 


​序列​文件

序列​文件​取决​于​它们​调​用​的​代码​模​块、​序列​文件​依赖​项​以及​补充​文件​(例如​属性​加​载​器​文件)。​您​可以​使用​TestStand​部署​工具​来​分析​序列​文件​并​枚举​这些​依赖​项。​TestStand​部署​工具​无法​识别​动态​引用​的​依赖​项​(例如​TestStand​表达​式​指定​的​属性​文件)​或​隐​式​引用​的​文件​(例如​测试​文​档)。

应​尽可能​将​特定​序列​文件​的​所有​依赖​文件​存储​在​序列​文件​路径​下​的​子​目录​中。​此​结构​具有​以下​优点:

  • 可以​使用​相​对于​当前​序列​文件​的​路径​来​引用​文件,​从而​确保​在​将​序列​文件​和​依赖​项​复制​到​另​一个​位置​时,​这些​路径​仍然​有效。
  • 跟踪​动态​调​用​的​隐​式​依赖​项​要​容易​得​多,​因为​可以​整体​部署​依赖​项目​录。

您​还​必须​考虑​代码​模​块​本身​的​依赖​项。​部署​此类​依赖​项​的​过程​因​模​块​类型​而​异。


​LabVIEW​代码​模块

LabVIEW​代码​模​块​包括​VI、​LabVIEW​类​成员​调​用、​Express VI​调​用​和​属性​节点​调​用。​为了​在​未​安装​LabVIEW​开发​系统​的​系统​中​执行​LabVIEW​代码​模​块,​必须​确保​VI​代码​模​块​的​所有​依赖​项​均​保存​在​相同​版本​的​LabVIEW​中。​您​还​需要​考虑​LabVIEW​开发​系统​附带​的​所有​依赖​VI,​例如​LabVIEW​安装​中的​vi.lib​或​instr.lib​目录​中​出现​的​VI​均​包含​在​部署​中。​您​可以​使用​以下​方法​来​确保​两​个​条件​均​得到​满足:

  • 为​所有​代码​模​块​VI​创建​LabVIEW​源​代码​发布,​并​确保​未​选择​不​包含​vi.lib、​instr.lib​和​user.lib​的​选项。​为了​防止​源​VI​与​源​代码​发布​中的​VI​出现​交叉​链​接,​请​确保​将​文件​添加​到​新​项目​库​中。
  • 为​源​文件​创建​一个​或​多个​打包​项目​库​(PPL)。​PPL​是​包含​所有​VI​及其​依赖​项​的​单​个​编译​文件。​借助​这种​方法,​可以​将​已​部署​的​PPL​替换​为​更新​的​版本,​从而​更新​现有​部署。

*PPL​不​包括​DLL​或​已​编译​为​PPL​的​VI​的​依赖项

要​自动​处理​此​过程​的​大部分​内容,​您​可以​使用​TestStand​部署​工具​部署​调​用​LabVIEW​代码​模​块​的​序列​文件。​TestStand​部署​工具​将​所有​VI​保存​在​单​个​LabVIEW​版本​中,​并​包含​LabVIEW ADE​中的​所有​必需​的​依赖​项。​还​可以​选择​使用​这​一​部署​工具​生成​打包​项目​库​(PPL)。​有关​更多​信息,​请​查看《在​LabVIEW​打包​项目​库​中​部署​VI》

C/​C​+​+ DLL​依赖项

在​通常​情况​下,​任何​依赖​DLL​都​将​被​复制​到​生成​目录​中,​或​成为​包含​在​所需​Runtime​引擎​中的​系统​DLL。​您​应​尽量​不​直接​将​DLL​或​其他​二​进制​文件​部署​到​Windows​系统​目录,​而​应​先​确定​安装​这些​依赖​项​的​软件,​然后​再​将​其​包含​在​部署​中。​有关​部署​其他​软件​的​更多​信息,​请​查看​下面的《驱动​程序​和​Runtime》​章节

.NET​依赖项

与​非​托管​C/​C​+​+ DLL​一样,​托管.NET DLL​是​可以​在​不​使用​ADE​的​情况​下​执行​的​编译​代码。​与​C/​C​+​+ DLL​不同,.NET​程序​集​可以​引用​全局​程序​集​缓​存​(GAC)​中的​依赖​程序​集,​其中​包括​已​安装​驱动​程序​或​Runtime​软件​的​程序​集,​但​也可以​包含​您​自己​的​代码。

生成.NET​程序​集​时,​可以​对​引用​的​程序​集​使用“复制​本地”属性,​从而​在​您​的​程序​集​旁边​加上​这些​程序​集​的​副本。​这样​一​来,​您​可以​确保​通过​部署​包含​程序​集​和​依赖​项​的​文件​夹​来​部署.NET​依赖​项。

测试​框架​文件

除了​测试​代码​外,​还​必须​部署​TestStand​框架​文件。​如果​在​部署​中​包含​TestStand Runtime,​系统​中将​安装​这些​文件​的​默认​版本。​但是,​如果​您​已​自​定义​这些​组​件​的​版本,​则​需要​在​测试​系统​部署​中将​其​包含​在内。 

TestStand​配置​文件

TestStand​配置​文件​存储​TestStand​的​本地​安装​设置。 这些​文件​描述​并​驱动​测试​系统​的​行为。​TestStand​配置​文件​位于<TestStand​应用​程序​数据​>​Cfg目录​中。

​有关​TestStand​包含​的​配置​文件​以及​每​个​文件​中​所​存储​信息​的​详细​信息,​请​查看《配置​文件》帮助​主题。

TestStand​组件

TestStand​组​件​用于​实现​测试​系统​的​高层​执行,​与​测试​序列​分离,​从而​增强​TestStand​架构​的​模​块​化。​TestStand​组​件​实现​了​登录​和​注​销、​报告、​数据​库​记录​和​序列​号​输入​等​功能。​这些​文件​位于<TestStand>​Components目录​中。

​有关​TestStand​组​件​目录​中​各​项​的​详细​信息,​请​查看《组​件​目录》帮助​主题


​TestStand​用户​界面

为了​在​已​部署​的​计算​机上​运行​序列,​您​需要​部署​至少​一个​用户​界面,​因为​序列​编辑​器​仅​在​开发​计算​机上​可用。​用户​界面​可以​很简单,​也可以​高度​自​定义,​具体​取决​于​您​的​需求。​TestStand​包括​可以在<TestStand Public>/​UserInterfaces中​部署​的​用户​界面​应用​程序。

有关​创建​在​已​部署​的​计算​机上​使用​的​TestStand​用户​界面​的​特定​信息,​请​查看《NI TestStand​用户​界面​开发​的​最佳​实践》文​档。

驱动​程序​和​Runtime​引擎

要​在​生产​系统​中​执行​序列​和​测试​代码,​必须​确保​安装​了​所有​必需​的​Runtime​引擎​(Runtime)​和​硬件​驱动​程序。​Runtime​引擎​是​执行​软件​组​件​(例如​DLL、​VI​和​序列​文件)​所​必需​的。​驱动​程序​是​测试​系统​使用​的​硬件​组​件​所​必需​的。​您​将​始终​需要​部署​TestStand Runtime,​其中​包含​TestStand​引擎​和​支持​文件。 

如果​使用​TestStand​部署​工具​进行​部署,​可以​选择​检测​并​包含​代码​模​块​引用​的​所需​版本​的​驱动​程序​和​Runtime。​如果​不​包括​Runtime,​TestStand​部署​工具​会​提供​一条​信息​记录​消息,​指示​应​在​部署​中​包含​哪些​版本。

软件​许可证

您​必须​确保​已​部署​的​计算​机​有​适当的​软件​许可​证。​每​台​已​部署​的​计算​机​至少​需要​基本​部署​许可​证,​该​许可​证​允许​序列​执行,​但​不​允许​开发。​LabVIEW​和​LabWindows/​CVI Runtime​等​许多​Runtime​引擎​没有​任何​许可​要求。​您​应该​查阅​文​档​来​了解​所​部署​的​所有​其他​组​件,​从而​确保​获得​所有​必要​的​部署​许可​证。​有关​已​部署​应用​程序​需要​获得​许可​证​的​所有​NI​产品​的​列表,​请​查看《NI​软件​的​部署​和​调​试​许可​证》​的​《部署​许可​证》​章节帮助​主题。

如果​要​部署​到​大量​生产​计算​机上,​NI​将​提供​批量​许可,​您​可以​通过​中央​许可​服务​器​管理​许可​证。​有关​批量​许可​选项​的​更多​信息,​请​查看《软件​的​批量​许可​计划》页​面。

选择​部署​机制

对​需要​包含​在​测试​系统​部署​中的​文件​集​进行​定义​之后,​需要​选择​将​文件​分发​到​生产​计算​机​的​机制。​以下​章节​介绍​了​下列​部署​机制:

基于​NI​程序​包​的​部署

NI​程序​包​提供​了​将​部署​中的​所有​文件​整合​为​一个​文件​的​机制,​您​可以​使用​NI Package Manager​将​其​部署​并​提取​到​生产​计算​机上​的​正确​位置。​可以​使用​TestStand​部署​工具​来​构​建​一个​包含​部署​中​所有​文件​的​程序​包。​对于​基于​程序​包​的​部署,​部署​所需​的​驱动​程序​和​组​件​作为​程序​包​的​依赖​项,​但​不​包含​在​程序​包​中。 

在​生产​计算​机上​安装​程序​包​时,​NI Package Manager​将​检测​这些​依赖​项,​并​允许​您​下载​并​安装​这些​程序​包。​您​还​可以​使用​SystemLink​软件​在​组织​内​提供​NI​程序​包​的​存储​库,​包括​您​创建​的​NI​程序​包。​有关​使用​SystemLink​管理​基于​程序​包​的​部署​的​更多​信息,​请​查看《如何​使用​SystemLink​配置​系统​和​部署​软件?》

由于​每​个​NI​程序​包​均​为​单​个​组​件,​因此​可以​使用​更新​的​版本​号​创建​程序​包​的​新​版本,​来​更新​基于​程序​包​的​部署。​新​版本​经过​测试​和​验证​之后,​您​可以​通过​传统​的​文件​传输​或​SystemLink​将​其​分发​到​生产​计算​机上。

基于​安装​程序​的​部署

部署​文件​的​另​一种​方法​是​创建​一个​包含​部署​所需​的​所有​组​件​的​安装​程序,​该​安装​程序​可以​复制​并​安装​在​测试​站​计算​机上。​与​程序​包​不同,​安装​程序​可以​将​所需​的​驱动​程序​和​组​件​均​包含​在内。​将​这些​组​件​包含​在内​会​大大​增加​安装​程序​在​磁盘​上​的​容量,​但​可​确保​驱动​程序​和​Runtime​引擎​始终​包含​在内​且​可用。​借助​TestStand​部署​工具,​您​无​需​直接​了解​Microsoft​安装​程序​技术​即可​为​TestStand​系统​创建​安装​程序,​并​提供​以下​功能:

  • 将​文件​分发​到​目标​计算​机上​的​特定​目录,​例如<TestStand>目录或<Desktop>目录。
  • 导入​您​在​Measurement and Automation Explorer(MAX)​中​生成​的​硬件​配置。
  • 可以​包含​其他​组​件,​包括​驱动​程序​和​Runtime。 
  •  能够​创建​补丁​安装​程序​以​将​更新​应用​于​现有​部署。

有关​TestStand​部署​工具​可用​功能​的​更多​详细​信息,​请​查看​TestStand​帮助​中的《使用​TestStand​部署​工具​构​建​安装​程序》主题。​在​大​多数​情况​下,​TestStand​部署​工具​提供​了​构​建​自​定义​部署​安装​程序​所需​的​功能。​如果​需要​进一步​控制​部署​安装​程序​的​行为,​可以​使用​第三​方​工具​创建​安装​程序。​请​查看《使用​第三​方​工具​构​建​安装​程序》,​详细​了解​有关​有​必要​进行​此​操作​的​情况。

要​将​更新​应用​于​现有​安装​程序,​可以​使用​TestStand​部署​工具​创建​仅​包含​已​更新​组​件​的​补丁​安装​程序。​有关​创建​补丁​安装​程序​的​更多​信息,​请​查看《补丁​部署》帮助​主题。​此外,​还​可以​考虑​创建​多个​安装​程序​来​实现​部署​的​模​块​化,​例如,​为​测试​代码、​TestStand​组​件、​驱动​程序​和​Runtime​引擎​创建​单独​的​安装​程序。​借助​这种​方法,​您​可以​仅​更新​和​分发​有​更改​的​安装​程序。

由于​安装​程序​会​自动​将​文件​放置​在​正确​的​位置,​并且​可以​包含​所需​的​驱动​程序​和​Runtime​引擎,​因此​创建​了​有效​的​安装​程序​后,​即可​轻松​部署​系统。​但是,​由于​必须​将​基于​安装​程序​的​部署​移动​并​安装​到​每​台​测试​计算​机上,​因此​它们​通常​最​适合​在​少量​测试​计算​机上​使用​的​部署。 

网络​驱动​器​部署

借助​网络​驱动​器​部署​架构,​可以​直接​使用​网络​驱动​器​与​测试​站​计算​机​共享​文件,​而无​需​整合​到​安装​程序​中。​对​网络​驱动​器​上​文件​的​访问​可以​通过​源​代码​控制​解决​方案​进行​管理。​借助​这种​方法,​测试​开发​人员​可以​在​共享​存储​库​中​创建​和​更新​文件。​完成​测试​后,​这些​文件​会​被​复制​到​生产​计算​机上,​或​直接​从​网络​位置​即可​使用。 

您​可以​采用​网络​驱动​器​部署​策略,​使用​共享​存储​库​在​开发、​暂​存​和​生产​计算​机​之间​共享​文件

开发​新的​测试​代码​时,​请​务必​确保​开发​使用​的​代码​在​经过​测试​和​验证​之前,​从未​在​已​部署​的​系统​中​使用。​通常​情况​下,​可以​访问​测试​硬件​的​生产​计算​机​被​指定​为​暂​存​测试​器,​并​用于​验证​和​测试​预​发布​测试​系统。​在​暂​存​测试​器​上​验证​了​测试​系统​后,​即可​将​其​部署​到​生产​计算​机上。

确保​已​部署​的​代码​得到​验证​的​最佳​方法​因​需要​将​更新​应用​于​测试​站​的​频率​而​异。

对于​需要​频繁​更新​的​情况,​持续​集成​和​交付​(CI/​CD)​方法​可以​帮助​确保​最新​的​代码​在​测试​计算​机上​可用,​同时​仍​可​确保​代码​已经​过​正确​的​测试​和​验证。​借助​CI/​CD​方法,​您​可以​将​构​建、​测试​和​部署​测试​代码​更新​的​大部分​过程​自动​化,​从而​尽可能​减少​开销。​您​可以​使用​第三​方​工具​(例如Jenkins)​来​实现​这种​类型​的​自动​化。 

对于​更​严格​控制​的​环境,​验证​要求​通常​非常​严格,​因此​不可​频繁​进行​测试​系统​更新。​对于​这些​测试​系统,​可以​定义​一个​单独​的​存储​库​或​主干,​让​开发​人员​在​其中​进行​更改​并​为​测试​添加​新​功能。​测试​系统​的​最新​版本​完成​并​经过​验证​后,​开发​人员​会​创建​主干​的​版本​分支,​并​在​生产​计算​机上​使用。​该​分支​应​锁定​在​源​代码​控制​中,​用于​防止​对​已​验证​的​代码​进行​任何​更改。​新​分支​完成​并​经过​验证​后,​可以​创建​一个​包含​代码​的​新​版本​分支。

为了​部署​测试​代码,​生产​计算​机会​获取​版本​化​代码​的​副本,​该​副本​应​保持​只读​状态​以​确保​其​不被​更改。​为了​进一步​确保​不对​已​验证​的​文件​进行​任何​更改,​可以​将​代码​添加​到​测试​序列​中​来​验证​所有​文件​的​校​验​和。​有关​此​方法​的​更多​信息,​请​查看《TestStand​系统​检验​和​验证​的​最佳​实践》文​档。

借助​网络​驱动​器​部署​来​部署​驱动​程序​和​Runtime​引擎

当​使用​基于​网络​驱动​器​的​方法​时,​您​需要​使用​单独​的​机制​在​测试​计算​机上​安装​必要​的​驱动​程序​和​Runtime。​可以​通过​以下​机制​来​部署​Runtime​引擎​和​驱动​程序:

  • 构​建​包含​所需​软件​的​安装​程序。​TestStand​部署​工具​可以​生成​一个​包含​Runtime​引擎​和​驱动​程序​的​安装​程序。
  • 基于​已​安装​所有​必需​的​驱动​程序​和​Runtime​的​系统​创建​系统​镜​像。

最佳​方法​主要​取决​于​系统​更新​的​频率。​在​许多​情况​下,​可以​结合​使用​多种​方法。​以下​常见​场景​对​选择​驱动​程序​和​Runtime​部署​策略​进行​了​说明:

  • 对于​更新​频率​不高​的​系统,​创建​镜​像​通常​会​实现​正​投资​回报​率。​仍然​可以​对​测试​系统​进行​小​更新,​而无​需​更新​镜​像。
  • 对于​更新​频率​更高​的​系统,​应​使用​所需​的​驱动​程序​和​Runtime​为​测试​系统​创建​安装​程序。

访问​测试​系统​文件​的​策略

对于​网络​驱动​器​部署,​您​可以​使用​以下​其中​一种​常规​方法​来​管理​文件​存储:

  • 直接​从​网络​驱动​器​访问​文件。
  • 使用​第三​方​工具​将​文件​从​网络​驱动​器​复制​到​本地,​从而​确保​本地​文件​与​驱动​器​同步。

直接​从​网络​驱动​器​访问​文件

直接​从​网络​驱动​器​访问​文件​具有​一定​的​优势,​在​网络​驱动​器​上​更新​文件​时,​可以​确保​将​更新​应用​于​所有​测试​计算​机。​但是,​直接​从​网络​驱动​器​访问​文件​意味​着​测试​站​的​操作​将​取决​于​共享​驱动​器​和​网络​连接​的​可用性。​如果​其中​一个​不可​用,​生产​操作​人员​将​无法​从​测试​站​运行​测试​文件,​这​可能​导致​生产​线​停工。​因此,​应​与​IT​部门​合作​以​确保​满足​共享​驱动​器​和​网络​的​正常​运行​时间​要求,​这​一点​至​关​重要。​例如,​使用​服务​器​冗​余​来​满足​共享​驱动​器​的​正常​运行​时间​要求。 

要​使用​共享​驱动​器​存储​TestStand​配置​文件​和​组​件,​必须​使用​TestStand​环境​功能,​帮助​您​指定​TestStand​目录​的​位置。​为此,​您​可以​创建​一个​包含​这些​目录​的​网络​驱动​器​位置​的​环境​文件​(tsenv)。​有关​如何​创建​和​使用​此​文件​的​详细​信息,​请​查看《TestStand​环境》帮助​主题。


​将​文件​复制​到​本地​各​测试站

您​还​可以​选择​创建​所有​部署​文件​的​本地​副本,​此​方法​具有​以下​优点:

  • 测试​站​可以​在​没有​永久​网络​连接​的​情况​下​执行​测试。
  • 可以​减少​测试​系统​文件​的​加​载​时间。

但​这种​方法​增加​了​额外​的​工作​量,​需要​将​文件​复制​到​所有​测试​站。​在​运行​任何​测试​之前,​还​必须​确保​所有​测试​系统​都有​最新​文件。

您​可以​构​建​其他​工具,​从而​在​每次​启动​测试​站​时​自动​比较​测试​站​上​与​共享​驱动​器​匹配​的​文件​版本,​并​下载​所有​非​最新​文件。

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

原文地址:https://www.cnblogs.com/YourDirection/p/13764325.html