TestStand​ 过程​模型​开发​和​自​定义【6】

概览

过程​模型​的​开发​和​自​定义​是​NI TestStand​的​强大​功能,​用户​可​通过​此​功能​归纳​多个​测试​序列​中的​概念​并​提高​代码​复​用​率,​从而​减少​开发​和​维护​时间。

​本文​档​概述​了​自​定义​过程​模型​的​最佳​实践。​本文​档​非常​适用​于​具有​基本​过程​模型​开发​应用​知识​的​人员。​要​熟悉​这些​概念,​请​参阅《过程​模型​理论》​文​档,​大致​了解​TestStand​如何​使用​过程​模型。

内容

  • 过程​模型​在​测试​系统​中的​作用
  • 过程​模型​组件
  • 自​定义​过程​模型
  • 修改​现有​的​模型​行为
  • 修改​过程​模型​数据​结构
  • 定义​特定​测试​站​的​自​定义​行为
  • 将​自​定义​过程​模型​升级​为​更高​版本​的​TestStand

过程​模型​在​测试​系统​中的​作用

要​为​产品​创建​功能​齐全​的​测试,​不仅仅是​需要​执行​一​组​测试​用例。​通常,​测试​系统​在​执行​测试​序列​之前、​期间​和​之后​必须​执行​一系列​操作。​定义​测试​过程​的​通用​操作​包括​识别​待​测​设备、​将​合格/​失败​状态​通知​操作​员、​记录​结果​和​生成​测试​报表。​这​一系列​操作​及其​执行​流程​称为​过程​模型。​在​TestStand​中,​过程​模型​层​在​序列​文件​中​实现,​与​TestStand​引擎​不同。​鉴于​这种​模​块​化​的​特点,​用户​可以​自​定义​过程​模型,​而​不会​影响​测试​执行​程序​本身。

过程​模型​提供​了​独立​于​测试​执行​程序​和​测试​代码​的​附加​层,​可​实现​常见​测试​功能

 

过程​模型​是​TestStand​的​独​有​特色,​而​大​多数​自行​开发​的​测试​执行​程序​则​无法​匹​敌。​通常,​这些​应用​程序​没有​过程​模型​的​概念,​测试​序列​或​测试​执行​程序​本身​都​提供​了​常见​测试​任务​的​机制。 这些​都不是​理想​方法:

  • 如果​测试​代码​负责​执行​这些​通用​操作,​则​创建​的​每​个​新​测试​集​将​需要​重复​此​代码。
  • 如果​直接​在​测试​执行​程序​中​实现​通用​操作,​则​更改​通用​测试​操作​需要​更新​整个​测试​执行​程序。

使用​过程​模型​执行​常见​任务​可以​增强​模​块​化​特性​并​提高​可​复​用​性,​因为​用户​可以​仅​在​一个​位置​修改​通用​操作,​同时​仍​将​这些​操作​与​基础​测试​执行​程序​区分​开​来。

借助​插​件​架构,​TestStand​过程​模型​可​进一步​实现​模​块​化。 过程​模型​调​用​插​件​序列​文件​来​实现​结果​处理,​如​报表​生成​和​数据​库​记录。 您​可以​修改​这些​插​件​或​创建​自己​的​插​件,​以此​扩展​过程​模型​的​功能,​而无​需​修改​过程​模型​本身。

过程​模型​调​用​插​件​来​执行​结果​处理,​包括​报表​生成​和​数据​库​记录。 用户​还​可以​创建​自​定义​插​件,​实现​自​定义​记录​机制

 

用户​可以​使用​TestStand​过程​模型​来​创建​功能​强大​且​灵活​的​测试​应用​程序。​实现​过程​模型​的​模​块​化,​可​最大​程度​地​减少​更新​框架​功能​时​需要​更改​的​代码​量。​使用​TestStand​过程​模型​架构​来​开发​完整​的​测试​系统,​可以​节省​时间​并​降低​开发​和​维护​成本。

过程​模型​组件


在​TestStand​中,​过程​模型​可​作为​已​启用​过程​模型​选项​的​序列​文件​来​实现,​而且​可以​包含​其他​特定​于​模型​的​序列​类型。 序列​文件​类型在“序列​文件​属性”(Sequence File Properties)​的“高级”(Advanced)​选项卡中​配置。​这些​序列​类型​各自​具有​特定​的​行为:

  • 执行​入口点允许​用户​使用​所需​的​过程​模型​序列​来​执行​测试。
  • 配置​入口点为​用户​提供​了​一个​用户​界面,​用于​配置​过程​模型​设置​并​存储​这些​设置。
  • 模型​回调允许​测试​序列​文件​覆盖​过程​模型​行为。

通过“序列​属性”(Sequence Properties)​对话​框​的“模型”(Model)​选项​卡,​配置​过程​模型​文件​包含​的​序列​类型。


执行​入口​点​序列


执行​入口​点​为​用户​提供​了​一种​方式,​可​运用​过程​模型​执行​其​测试​代码。​默认​的​TestStand​过程​模型​提供​两​个​执行​入口​点,​即​Test UUTs​和​Single Pass。​每​个​入口​点​都在​过程​模型​序列​文件​的​序列​中​实现。​在​序列​编辑​器​中,​当​活动​窗口​包含​使用​过程​模型​的​序列​文件​时,“执行”(Execute)​菜单​将​列出​执行​入口​点。

顺序​过程​模型​使用​Single Pass​和​Test UUTs​执行​入口​点。​两​种​执行​入口​点​都可​调​用​客户​端​序列​文件​的​MainSequence​序列,​一次​针对​一个​待​测​设备​执行​测试。​入口​点​还​可​共享​其他​操作,​如​生成​测试​报表​和​将​数据​结果​存储​在​数据​库​中。

顺序​过程​模型​中的​Single Pass​和​Test UUTs​执行​入口​点​流程

入口​点​名称​表达​式​是​使用​入口​点​时​序列​编辑​器​或​用户​界面​中​出现​的​名称。​使用“序列​属性”(Sequence Properties)​对话​框​中“模型”(Model)​选项​卡​上​的“入口​点​名称​表达​式”(Entry Point Name Expression)​文本​框,​编辑​此​值。​仅​当​您​选择​的​序列​为​执行​入口​点​时,“入口​点​名称​表达​式”(Entry Point Name Expression)​文本​框​才​可见。​ResStr(“MODEL”、“TEST_UUTS”)​等​默认​值​采用​ResStr​函数,​具有​TestStand​本地​化​功能。​用​另​一个​本地​化​值​替换​该​值,​或​使用​从​用户​角度​描述​入口​点​的​常量​字符​串​表达​式。 

使用​本地​化​字符​串​而不是​常量​字符​串​的​好处​是​用户​可​更改​字符​串​值,​而无​需​修改​过程​模型​本身。​有关​使用​TestStand​资源​字符​串​进行​本地​化​的​更多​信息,​请​参阅将​TestStand​本地​化​为​其他​语言教程。

 

配置​入口点


配置​入口​点​可​为​用户​提供​一种​方法,​用以​配置​过程​模型​设置。 默认​模型​包含​模型​选项​和​结果​处理​入口​点。 与​执行​入口​点​类似,​配置​入口​点​在​过程​模型​文件​的​序列​中​实现,​并​在​序列​编辑​器​的“配置”(Configure)​菜单​中​列出。 为了​保存​设置,​模型​入口​点​会​将​数据​写​入​TestStand​配置​目录​中的​配置​文件。

 

模型​回调


测试​开发​人员​可以​使用​模型​回​调​来自​定义​特定​测试​过程​模型​的​某些​方面,​而无​需​更改​过程​模型​本身。 过程​模型​定义​了​入口​点​在​执行​中​各个​点​调​用​的​回​调​序列。 例如,​在​开始​测试​之前,​Test UUTs​入口​点​将​调​用​PreUUT​回​调​序列,​提示​用户​输入​序列​号。 如果​测试​开发​人员​需要​对​此​功能​进行​特定​更改,​则​可以​覆盖​测试​序列​文件​中的​回​调。 在​这种​情况​下,​当​模型​调​用​PreUUT​序列​时,​系统​将​调​用​测试​序列​文件​中的​序列,​而不是​过程​模型​文件​中的​PreUUT​序列。

有关​过程​模型​回​调​的​详细​说明,​请​参见《在​NI TestStand​中​使用​回调》​文​档。


测试​序列​文件​可以​覆盖​过程​模型​中的​回​调​序列,​从而​确定​自​定义​行为

 

过程​模型​插件


默认​过程​模型​使用​插​件​架构​来​实现​结果​处理,​包括​报表​生成​和​数据​库​记录。 每​个​插​件​都可​在​单独​的​序列​文件​中​实现,​此类​序列​文件​包含​插​件​入口​点​序列,​系统​会​在​主​过程​模型​入口​点​的​各个​点​处​调​用​这些​序列。 过程​模型​还​提供​了​一个​插​件​配置​对话​框,​使​测试​开发​人员​能够​配置​处于​活动​状态​的​插​件​并​配置​插​件​设置。 

有关​TestStand​过程​模型​插​件​架构​的​更多​信息,​请​参阅过程​模型​插​件​架构帮助​主题。 

 

其他​引擎​回调


除了​标准​序列​文件​中​提供​的​引擎​回​调,​过程​模型​序列​文件​还​提供​了​其他​引擎​回​调。 这些​回​调​具有“ProcessModel”前​缀,​仅​针对​过程​模型​中​当前​客户​端​序列​文件​的​步骤​执行,​用户​可​对​该​文件​进行​定义。 例如,​ProcessModelPostStep​回​调​在​测试​序列​中​执行​的​每​个​步骤​之后​执行,​但在​执行​过程​模型​中的​步骤​之后​不​执行。

通常,​这些​回​调​用于​自​定义​错误​处理。 测试​开发​人员​一般​希望​尽量​从​错误​中​提取​更多​信息,​并​希望​在​发生​错误​时​控制​系统​行为。​在​其他​用例​中,​外​包​的​全​自动​环境​通常​需要​启动/​停止​输入​和​红/​绿灯​输出,​并​具有​相应​的​调​试​记录,​从而​跟踪​之前​的​系统​和​测试​错误​活动。

您​可以​使用​在​过程​模型​级别​定义​的​ProcessModelPostStepFailure​和​ProcessModelPostStepRuntimeError​引擎​回​调,​对​所有​客户​端​序列​文件​中的​错误​进行​常规​处理,​而无​需​测试​序列​程序​员​额外​处理。​如果​客户​端​序列​文件​中​发生​错误,​则会​执行​这些​回​调。

 

自​定义​过程​模型


在​许多​情况​下,​您​可能​需要​扩展​或​修改​TestStand​随​附​的​过程​模型​的​功能。 过程​模型​的​常见​更改​包括​报表​修改、​测试​重​试​策略、​错误​处理​和​记录、​测试​站​校准​例​程​以及​待​测​设备​选择​机制。

 

使用​过程​模型​插​件​添加​新​功能


默认​过程​模型​使用​插​件​来​实现​结果​处理​功能,​包括​报表​生成​和​数据​库​记录。 但是,​插​件​不仅​限于​结果​处理。 如果​您​需要​向​过程​模型​添加​功能,​可以​创建​插​件​来​实现​此​功能,​而无​需​修改​过程​模型​本身。 这种​方法​有​很多​优势:

  • 用户​可以​轻松​地​将​插​件​与​顺序​模型、​批量​模型​和​并行​模型​集成,​而​不用​对​每​个​模型​进行​更改。
  • 用户​不需要​维护​和​部署​自​定义​过程​模型。
  • 用户​可以​将​过程​模型​的​自​定义​功能​与​未来​更改​进行​集成。
  • 无​需​整合​过程​模型​代码​更改​即可​共享​插​件。

默认​情况​下,​用户​必须​为​模型​创建​插​件​实例​才能​执行。 如果​只需​在​某些​情况​下​使用​要​添加​的​新​功能,​这种​可​选​方法​十分​适用。 如果​应​始终​执行​该​功能​(与​过程​模型​本身​的​代码​类似),​则​可以​使用​过程​模型​插​件​附加​软件。  模型​插​件​附加​软件​的​实现​方式​与​标准​插​件​相同,​但​保存​在​插​件​目录​的​附加​软件​子​文件​夹​中。 它们​不会​出现​在​插​件​配置​对话​框​中,​但​会​始终​执行。



创建​新​插件


除了​自​定义​结果​处理​之外,​用户​还​可以​开发​自​定义​插​件,​通过​多种​方式​扩展​模型。 测试​站​校准​是​可以​通过​自​定义​插​件​添加​到​过程​模型​的​一个​功能​示例。 在​测试​站​上​执行​测试​序列​文件​之前,​您​可能​需要​确认​测试​站​校准​的​有效性。​这些​例​程​通常​要​根据​到期​日期​检查​测试​设备​是否​已​校准。​校准​到期​会​触发​错误​情况,​警告​操作​员,​并​阻止​测试​执行。

通过​在​自​定义​模型​插​件​中​实现​功能,​用户​可以​在​必要​时​禁用​校准,​并​通过​结果​处理​对话​框​为​测试​开发​人员​提供​配置​界面。 有关​实现​的​信息,​请​参见创建​过程​模型​插件主题。

 


要​更改​直接​在​过程​模型​中​实现​的​行为​(如​待​测​设备​序列​号​跟踪),​需要​直接​对​模型​进行​更改。​要​开发​新​过程​模型​或​自​定义​现有​过程​模型,​首先​可以​使用​过程​模型​的​副本,​以便​复​用​默认​过程​模型​中​已​实现​的​大量​微调​逻辑。   

在​修改​过程​模型​之前,​请将​整个​模型​目录<TestStand>/​Components/​Models复制​到​TestStand​公共​目录​的​相应​位置<TestStand Public>/​Components/​Models。 仅​更改​TestStand​公共​位置​中的​文件。

 

修改​模型​入口点


在​许多​情况​下,​用户​可能​需要​自​定义​执行​入口​点​的​执行​流程。 例如,​您​可能​希望​测试​系统​在​发生​某些​类型​的​故障​时​自动​在​待​测​设备​上​重新​执行​测试,​或者​在​要求​主管​干预​以​确定​是否​需要​进一步​测试​之前​限制​每​个​操作​员​的​重​试​次数。​对于​这些​更改​类型,​您​需要​直接​修改​入口​点​序列,​从而​添加​循环​和​其他​条件。 对​入口​点​进行​更改​时,​请​确保​记录​您​所​做的​更改,​以便​更​轻松​地区​分​默认​行为​和​自​定义​行为。

 

允许​测试​开发​人员​自​定义​模型​行为

自​定义​过程​模型​时,​请​务必​考虑​特定​测试​是否​需要​修改​或​禁用​您​定义​的​行为。 在​测试​开发​人员​可能​需要​进行​更改​的​情况​下,​请​使用​现有​的​或​新的​回​调​序列​来​实施​更改。 然后,​如果​测试​开发​人员​需要​更改​您​定义​的​行为,​则​可以​覆盖​该​回​调。 

应​始终​在​单独​的​序列​中​实现​新​功能,​用户​可​从​应​实现​该​序列​的​入口​点​调​用。​您​可以​根据​要​为​测试​开发​人员​提供​的​自​定义​级别,​通过​以下​方式​在​过程​模型​中​实现​序列:

  • 您​希望​为​测试​开发​人员​提供​一种​在​执行​特定​点​扩展​模型​的​方法:实现​没有​默认​功能​的​占位​符,​以便​客户​端​序列​文件​可以​在​必要​时​插入​功能。​从​入口​点​调​用​回​调​时,​可以​选择​将​参数​传给​回​调,​从而​向​测试​开发​人员​提供​相关​数据。 例如,​ModifyReportHeader​不​提供​默认​实现,​但​包含​报表​相关​数据​的​参数​将​传给​回​调,​从而​允许​测试​开发​人员​访问​和​修改​报表。
  • 您​希望​定义​可​由​测试​开发​人员​自​定义​或​禁用​的​功能: 实现​默认​行为,​以便​客户​端​回​调​可以​调​用​模型​回​调​以​运行​过程​模型​默认​实现,​而且​客户​端​回​调​可以​实现​其他​功能。​默认​状态​下,​PostUUT​可​实现​横​幅​效果,​从而​显示​测试​序列​的​结果。​客户​端​序列​文件​可以​实现​自​定义​PostUUT​行为,​并​通过​覆盖​回​调​且​仍​调​用​过程​模型​实现​来​保留​横​幅​效果。 通过“序列​属性”(Sequence Properties)​中的“在​创建​覆盖​序列​时​复制​步骤​和​局部​变量”(Copy Step and Locals when Creating an Overriding Sequence)​选项,​可​指定​在​测试​开发​人员​覆盖​回​调​时​应​复制​的​序列​内容。
  • 您​希望​彻底​阻止​测试​开发​人员​自​定义​功能:如果​要​定义​测试​开发​人员​禁止​修改​的​功能,​请​使用​标准​序列​而不是​回​调,​因为​在​客户​端​序列​文件​中​标准​序列​不会​被​覆盖。


自​定义​现有​的​模型​插​件​行为


框架​开发​人员​经常​自​定义​报表​生成​行为,​从而​满足​其​测试​系统​的​特定​要求。 有关​报表​自​定义​的​详细​信息,​请​参考​高级​架构​系列​的《NI TestStand​报表​生成​和​自​定义​最佳​实践》​文​档。 针对​如何​在​TestStand​模型​架构​中​实现​自​定义​以​生成​报表,​本文​档​提供​了​更多​相关​信息。 

 

修改​过程​模型​数据​结构


默认​过程​模型​会​定义​数据​类型,​从而​存储​有关​当前​待​测​设备、​测试​站​和​模型​选项​的​信息。 在​某些​情况​下,​您​可能​需要​在​这些​属性​中​存储​其他​数据,​最​常见​的是​待​测​设备​数据。 例如,​默认​的​TestStand​待​测​设备​选择​机制​仅可​跟踪​序列​号,​但​您​可能​还​需要​维护​设备​型号。 

NI​建议​尽量​不要​更改​模型​数据​类型,​因为​许多​TestStand​文件​中​都​引用​了​这些​数据,​并且​维护​更新​信息​并非​易​事。 但是,​过程​模型​在​待​测​设备​和​NI_StationInfo​数据​类型​中​提供​了​非​结构​化​的​属性,​用户​可以​轻松​添加​其他​待​测​设备​跟踪​信息,​而无​需​修改​待​测​设备​数据​类型。​您​可以​在​UUT.AdditionalData​容器​中​创建​一个​新的​ModelNumber​属性​来​存储​此类​信息。 TestStand​附带的向​报表​添加​自​定义​数据示例​展示​了​此​属性​的​用途:​将​字​段​添加​到此​属性,​并​将​其​添加​到​测试​报表​中。 该​示例​使用​回​调​在​客户​端​序列​文件​中​实现​更新,​但​用户​也可以​在​过程​模型​中​直接​使用​相同​的​方法。

 

定义​特定​测试​站​的​自​定义​行为


用户​还​可以在<TestStand Public>​\Components​\Callbacks​\Station目录​的​StationCallbacks.seq​中​创建​一个​具有​相同​名称​但​功能​不同​的​序列,​从而​覆盖​过程​模型​序列​文件​中的​回​调。​TestStand​调​用​StationCallbacks.seq​中的​模型​回​调,​而不是​调​用​可在​任何​模型​中​定义​的​具有​类似​名称​的​回​调。​客户​端​文件​中的​回​调​将​覆盖​模型​和​StationCallbacks.seq​文件​中​名称​相似​的​回​调。

 

将​自​定义​过程​模型​升级​为​更高​版本​的​TestStand

在​升级​到​较​新​版本​的​TestStand​时,​需要​合并​以下​两​项​更改:​对​默认​过程​模型​所​做的​任何​更改,​以及​NI​在​新​版本​中​所​做的​更改。 为此,​请​首先​打开​序列​编辑​器​中“编辑”(Edit) »“比较​序列​文件”(Diff Sequence File Against),​使用​TestStand​差异​工具​查看​旧版​与​新版​默认​过程​模型​之间​的​差异。​如果​所有​修改​都​集中​在​过程​模型​文件​的​新​序列​中,​或者​单独​在​插​件​中​实现,​那么​用户​便可​轻松​地​将​过程​模型​自​定义​项​导入​到​新版​过程​模型。

如果​要​迁移​通过​2012​年​之前​的​TestStand​版本​创建​的​模型,​则​需要​对​新​模型​进行​大幅​更改,​才能​实现​插​件​架构。 请​参阅将​过程​模型​自​定义​项​迁移​到​TestStand 2012​或​更高​版本,​详细​了解​如何​在​这种​情况​下​迁移​过程​模型。

 

本文转自:https://www.ni.com/content/ni/locales/zh-cn/support/documentation/supplemental/08/teststand-process-model-development-and-customization.html

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