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?配置?文件?位于?\Cfg目录?中。

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

TestStand?组件

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

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


?TestStand?用户?界面

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

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

《NI?软件?的?部署?和?调?试?许可?证》?的?《部署?许可?证》?章节帮助?主题。

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

选择?部署?机制

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

  • 基于?NI?程序?包?的?部署
  • 基于?安装?程序?的?部署
  • 网络?驱动?器?部署

《如何?使用?SystemLink?配置?系统?和?部署?软件?》

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

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

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

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

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