TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

概览

TestStand​包括​许多​内​置​步骤​类型,​这些​步骤​类型​作为​测试​序列​的​构​建​块。​除​内​置​步骤​类型​外,​用户​还​可以​在​TestStand​中​创建​自​定义​步骤​类型​来​实现​其他​功能。

自​定义​步骤​类型​使​用户​可​通过​以下​方式​扩展​现有​步骤:

  • 配置​步骤​属性​的​值,​并​确定​步骤​用户​可以​修改​哪些​属性
  • 添加​新的​步骤​属性​来​存储​自​定义​数据,​可以​选择​性​地​将​这些​数据​记录​到​测试​结果中
  • 定义​要​在​执行​主​模​块​之前​或​之后​调​用​的​代码
  • 创建​接口,​使​用户​在​编辑​时​可以​配置​自​定义​步骤​属性

设计​完善​的​步骤​类型​可以​加快​序列​开发、​减少​调​试​工作、​使​开发​人员​能够​共享​标准​化​代码,​并​可以​在​多个​测试​站​和​独立​组​之间​实现​一致性。​但是,​自​定义​步骤​类型​可能​需要​大量​时间​来​计划、​编​程、​调​试、​部署​和​维护。

在​阅读​本文​之前,​请​确保​您​熟悉​创建​自​定义​步骤​类型​的​过程。​关于​此​过程​的​详细​信息,​请​参考《创建​波形​自​定义​步骤​类型》​教程。

内容

  • 选择​使用​自​定义​步骤​类型​的​时机
  • 定义​自​定义​步骤​类型​的​要求
  • 管理​步骤​类型​数据
  • 子​步骤​可​用于​配置​自​定义​步骤​类型​功能

选择​使用​自​定义​步骤​类型​的​时机

在​开始​设计​自​定义​步骤​类型​之前,​应​考虑​其他​可能​更​适合​新​功能​的​方法。 

在​以下​情况​下,​不​建议​创建​或​修改​自​定义​步骤​类型:

  • 新​功能​会​影响​所有​或​许多​类型​的​步骤。 在​这种​情况​下,​请​考虑​使用引擎​回调,​它​将​在​每​个​步骤​之前​或​之后​执行。
  • 希望​提供​现有​步骤​的​基本​配置,​但是​不需要​新的​功能​或​属性。 在​这种​情况​下,​请​创建​包含​步骤​更改的步骤​模板
  • 希望​提供​可以​在​编辑​时​使用​的​工具​或​实用​程序。 在​这种​情况​下,​请​使用自​定义​工具​菜单项来​调​用​自​定义​代码。


可在​以下​情况​下​创建​或​修改​步骤​类型:

  • 相应​功能​无法​在内​置​步骤​类型​中​实现。
  • 相应​功能​需要​修改​在​现有​步骤​类型​实例​中​无法​修改​的​属性,
  • 相应​功能​要求​必须​在​调​用​测试​代码​之前​或​之后​执行​操作,​例如​设置​步骤​或​分析​结果。
  • 希望​借助​用户​界面​简化​配置​步骤​的​用户​体验。
  • 希望​与​其他​组、​公司​或​客户​共享​功能。

 

步骤​模板​与​自​定义​步骤​类型


在​序列​中​开发​和​配置​步骤,​然后​将​这些​步骤​拖​放到“插入​选​板”(Insertion Palette)​的“模板​列表”(Templates List)​中,​即可​创建​步骤​模板。​TestStand​会​将​步骤​实例​的​副本​保存​为​模板,​将​步骤​模板​拖​放到​新​序列​中​即可​进行​复​用​来​快速​创建​新​序列。

步骤​模板​和​自​定义​步骤​类型​之间​的​区别​在于,​模板​只能​通过​现有​步骤​类型​来​创建,​并且​模板​仅​包含​与​原始​步骤​类型​相同​的​功能。​相​对于​步骤​模板,​自​定义​步骤​类型​在​修改​或​重新​设计​方面​具有​更大​的​灵活​性。​对于​添加​到“模板​列表”(Templates List)​的​步骤,​只能​配置​原始​步骤​类型​的​开发​人员​启用​的​设置。​相比​之下,​新​自​定义​步骤​类型​可​用于​创建​具有​全新​行为​的​全新​步骤。​同样,​对​步骤​模板​的​更改​仅​影响​该​步骤​未来​的​实例,​而​不会​更改​该​步骤​的​现有​实例。

使用​步骤​模板​有​一个​好处,​若要​以​相同​的​方式​复​用​同一​步骤,​可以​避免​多次​自​定义​步骤​设置。​例如,​如果​要​将​IVI​电源​设置​为​5 V,​然后​再​设置​为​3.3 V,​并​计划​在​整个​序列​中​多次​执行​此​步骤,​那么​在​最初​使用​并​配置​步骤​后​创建​两​个​步骤​模板​可以​节省​时间。​但是,​如果​需要​在​运行​测试​代码​之前​先​配置​电源​的​步骤,​创建​自​定义​步骤​类型​则​是​一种​更好​的​方法。

 

步骤​模板​与​自​定义​步骤​类型​的​比较  

步骤​模板

自​定义​步骤​类型

  • 对于​重复​插入​具有​相同​首​选项​和​配置​的​现有​步骤​类型​很有用
  • 除​现有​步骤​实例​外,​无​其他​自​定义项
  • 开发​开销​较​低 
  • 在​需要​新的​数据​和​功能​时​很有用
  • 支持​无法​在​步骤​实例​中​使用​的​自​定义项
  • 开发​开销​较高

 

定义​自​定义​步骤​类型​的​要求


设计​自​定义​步骤​类型​时,​请​考虑​框架​开发​人员​和​测试​开发​人员​各自​的​职责。 框架​开发​人员​的​职责​是​开发​工具​和​构​建​块,​而​测试​开发​人员​的​职责​是​使用​这些​工具​来​实现​实际​的​测试​代码。

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

设计​自​定义​步骤​类型​时,​您​需要​履行​框架​开发​人员​的​职责,​请​务必​从​最终​用户​和​测试​开发​人员​的​角度​审视​所​开发​的​步骤​类型​的​功能。
确定​自​定义​步骤​类型​的​要求​时,​请​遵循​以下​准则

  • 定义​自​定义​步骤​类型​的​范围。 思考​测试​开发​人员​将​使用​自​定义​步骤​类型​执行​哪些​任务。 此​范围​应​足够​大,​能够​处理​这些​用例,​但​范围​过​大会​使​步骤​类型​的​目的​不​明确。
  • 根据​步骤​类型​的​范围,​定义​步骤​类型​需要​的​数据​以及​存储​数据​的​方式。
  • 定义​步骤​类型​的​所有​实例​应​实现​的​所有​功能。 确保​在​步骤​属性​中​定义​此​功能​所需​的​所有​数据。
  • 定义​哪些​数据​可​由​用户​编辑,​哪些​数据​应​记录​到​报表​或​数据​库​中。
  • 思考​将来​可能​会​需要​的​功能​或​配置,​并​确保​这些​项目​的​实现​方式​可​使​步骤​类型​的​更新​顺利​传递​到​所有​实例。

管理​步骤​类型​数据

自​定义​步骤​类型​将​数据​存储​在​多个​属性​和​设置​中,​这些​属性​和​设置​可​用于​配置​步骤​类型​实例​的​行为,​以及​管理​步骤​类型​功能​所需​的​数据。​其中​包括:

  • 内​置​类型​属性,​存在​于​所有​步骤​类型​中,​无法​在​相应​类型​的​实例​中​进行​修改。
  • 默认​值​属性,​用于​定义​新​步骤​实例​的​状态,​可在​相应​类型​的​实例​中​进行​修改。
  • 为​步骤​类型​定义​的​自​定义​属性。

内​置​类型​属性

内​置​步骤​类型​属性​存在​于​所有​步骤​类型​中,​用户​无法​在​相应​步骤​类型​的​实例​中​修改​这些​设置。 此外,​对​这些​属性​的​值​所​做的​更改​都​将​传递​到​相应​步骤​类型​的​所有​实例。

示例:​所有​步骤​类型​都​定义​了​一个​说明​表达​式,​该​表达​式​显示​在​步骤​实例​旁边​的“步骤”(Steps)​窗​格​中。 此​属性​存在​于​所有​步骤​类型​中,​但​每​种​步骤​类型​的​相应​值​均​单独​设置。 此​值​无法​在​步骤​类型​的​实例​中​进行​修改。

访问​步骤​类型​的​内​置​属性:

  1. 使用“查看”(View) »“类型”(Types)菜单​或​快捷​键​Ctrl + T​导航​到​类型​视图
  2. 右​键​单击​步骤​类型,​然后​选择“属性…”(Properties…),​启动​属性​窗口

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

步骤​类型​属性​对话框

 

此​对话​框​中的​大​多数​设置​均​为​默认​值,下​一部分将​介绍​这些​内容。 内​置​属性​包括:

  • 图​标 — 步骤​的​图​标,​位于<TestStand Public>/​Components/​Icons文件​夹中
  • 步骤​说明​表达​式 — 步骤​说明,​显示​在​步骤​类型​实例​的​步骤​窗​格中
  • 版本​设置 — 用于​解决​类型​冲突  
  • 项目​名称​表达​式​(菜单​选项​卡)​— 定义​插入​选​板​中​步骤​的​名称

 

创建​自​文​档​化​说明


由于​相应​说明​无法​在​步骤​实例​中​配置,​因此​您​可以​作为​步骤​类型​开发​人员​对​说明​进行​定义,​从而​帮助​用户​创建​自​文​档​化​步骤。 说明​字​段​由​一个​表达​式​指定,​该​表达​式​可​用于​创建​显示​重要​步骤​属性​的​动态​说明。 当​用户​更改​步骤​类型​实例​中的​这些​属性​值​时,​说明​将​更新,​使​用户​可以​快速​浏览​步骤​状态,​而无​需​导航​至​步骤​设置​窗​格。

示例:下​图​第二​步​中的“步骤​说明”更​具有​描述​性,​提供​的​文​档​更​佳。 此​说明​使用​以下​表达​式​来​定义​说明:

"Calibrate Channels: " + Str(Step.minChannel) + " - " +Str(Step.maxChannel)

如果​用户​配置​了​minChannel​和​maxChannel​步骤​属性,​则​此​表达​式​会​将​说明​配置​为​动态​更新。

 

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

步骤​说明​示例

 

步骤​属性​默认值

开发​步骤​类型​时,​可以​为​所有​用户​可​配置​步骤​设置​配置​默认​值。 此外,​这些​属性​可​配置​为​在​步骤​实例​中​禁用,​从而​使​设置​的​默认​值​无法​被​修改。 与​内​置​属性​一样,​默认​值​也在​步骤​属性​窗口​中​进行​定义。 但是,​所有​默认​值​设置​都​包含“默认”一​词,​它​可能​存在​于​设置​名称​中​或​配置​默认​值​的​设置​选项​卡​中。

示例:状态​表达​式​属性​用于​确定​步骤​结果。 此​属性​存在​于​所有​步骤​类型​中,​每​种​步骤​类型​均​设置​为​默认​值。 在​某些​步骤​类型​中,​例如“数值​边界​测试”,​状态​表达​式​在​步骤​类型​中​被​禁用,​因此​无法​在​单​个​数值​边界​测试​步骤​中​对​表达​式​进行​编辑

设计​自​定义​步骤​类型​时,​可以​禁用​在​步骤​类型​的​实例​之间​不会​变化​的​任意​属性。 如此​可以​更好​地​控制​步骤​类型​用户​修改​行为​的​方式。​但是,​限制​用户​编辑​步骤​设置​可能​会​影响​灵活​性,​因此​您​应​仅​禁用​确定​用户​始终​不需要​修改​的​设置。

请​记住,​即使​禁用​在​步骤​实例​中​编辑​步骤​属性​默认​值​的​功能,​以后​对​这些​默认​值​所​做的​更改​也不会​传递​到​步骤​类型​的​实例。​关于​如何​解决​此​问题​的​更多​信息,​请​查看《更新​和​维护​步骤​类型》。


更新​默认​值​时​的​注意​事项


不​应​使用​这些​属性​的​值​来​定义​步骤​类型​开发​人员​可能​需要​更新​的​步骤​类型​功能。 例如,​请​勿​使用​步骤​的“Post”表达​式​来​实现​步骤​类型​特定​功能。 如果​需要​在​步骤​类型​的​未来​版本​中​更新​此​功能,​将​无法​确保​步骤​的​所有​实例​都​将​更新。 而是​应​在​步骤​前​或​步骤​后​的​子​步骤​中​实现​此​功能。

自​定义​属性


除​内​置​属性​外,​还​可以​定义​特定​于​步骤​类型​的​自​定义​属性。 这些​属性​可​用于​存储​与​步骤​类型​功能​具体​相关​的​数据。 

示例:数值​边界​测试​步骤​包含​一个“Limits.High”属性,​这​是​数值​边界​步骤​类型​的​独​有​属性。 该​类型​将​此​属性​的​默认​值​定义​为​11,​用户​可以​修改​其​创建​的​每​个​实例​中的​该​值。

创建​自​定义​步骤​属性:

  1. 使用“查看”(View) »“类型”(Types)菜单​或​快捷​键​Ctrl + T​导航​到​类型​视图
  2. 展开​步骤​类型​项。
  3. 右​键​单击“父”(Parent)​属性或“<Right click to insert field>”条目​来​添加​新​属性

如果​在​步骤​类型​的​结果​容器​中​定义​了​属性,​则​该​属性​将​包含​在​结果​集合​中。 然后,IncludeInReport或IncludeInDatabase标志​可​用于​将​数据​记录​到​报表​或​数据​库​中。

 

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

 

默认​状态​下,​用户​可以​更改​每​个​步骤​实例​的​步骤​属性​值。 但是,​如果​在​步骤​类型​中​为​步骤​属性​设置​了​共享​标志,​则​该​值​将​被​锁定​为​步骤​类型​中的​值。 与​步骤​默认​值​不同,​对​该​值​的​更新​将​传递​到​步骤​类型​的​实例。

确定​自​定义​步骤​类型​的​范围

为​步骤​属性​选择​的​数据​类型​应​由​步骤​类型​的​范围​决定。​例如,​考虑​数值​边界​测试​和​多数​值​边界​测试​步骤。 虽然​多数​值​边界​测试​可以​容纳​更多​边界​并​具有​更多​功能,​但是​也​增加​了​编辑​时​用户​界面​和​结果​记录​的​复杂​性。 更​基本​的​数值​边界​测试​的​范围​更​小,​界面​也​更​简单。​需要​的​开发​工作​更少,​除此之外,​对​测试​序列​开发​人员​而言,​范围​更​小​的​步骤​也​更易​于​使用。


在​开发​自己​的​自​定义​步骤​类型​时,​请​务必​在​定义​自​定义​属性​之前​先​定义​步骤​的​范围,​因为​所​选​的​属性​会​显著​影响​步骤​类型​的​复杂​性。

子​步骤​可​用于​配置​自​定义​步骤​类型​功能

以下​各​部分​说明​了​如何​使用​子​步骤​来​实现​以下​步骤​类型​行为:

  • Runtime​功能,​应​在​主​代码​模​块​之前​或​之后​对​步骤​类型​的​所有​实例​执行
  • 用户​界面,​在​编辑​测试​序列​时​查看​和​编辑​步骤​数据
  • 测试​开发​人员​创建​步骤​的​新​实例​时​执行​的​功能

 

实现​子​步骤

子​步骤​使用​所​提供​的​TestStand​适​配​器​之一​调​用​代码​模​块。 子​步骤​无法​在​步骤​的​实例​中​修改,​对​子​步骤​设置​的​所有​更改​都​将​传递​到​步骤​类型​的​实例。  

将​子​步骤​添加​到​自​定义​步骤​类型:

  1. 使用“查看”(View) »“类型”(Types)菜单​或​快捷​键​Ctrl + T​导航​到​类型​视图
  2. 右​键​单击​步骤​类型,​然后​选择“属性…”(Properties…)
  3. 选择“子​步骤”(Substeps)​选项​卡。 选择​与​所需​代码​模​块​匹配​的​适​配器
  4. 单击“添加”(Add),​然后​选择​子​步骤​类型。 子​步骤​列表​中将​出现​一个​新​条目
  5. 选择​相应​条目,​然后​单击“指定​模​块”(Specify Module),​为​子​步骤​配置​代码​模​块,​方法​与​为​步骤​配置​代码​模​块​相同

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

     多数​值​边界​测试​步骤​类型​的​步骤​后​和​编辑​子​步骤

 

定义​步骤​类型​的​Runtime​功能

步骤​前​和​步骤​后​子​步骤​可​用于​为​步骤​类型​定义​Runtime​功能。 在​步骤​执行​时,​这些​子​步骤​会​在​主​代码​模​块​之前​或​之后​执行。  

示例:消息​弹出​步骤​类型​使用​C​代码​模​块​在​运行​时​创建​和​显示​消息​框。 此​模​块​将​在​步骤​后​子​步骤​中​调​用, 

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

          步骤​执行​顺序:​子​步骤

 

这些​子​步骤​可​用于​定义​适用​于​步骤​所有​实例​的​功能。 通常,​子​步骤​需要​与​步骤​类型​的​行为​相关​的​特定​数据。 在​自​定义​步骤​属性​中​定义​此​数据,​从而​确保​此​数据​在​步骤​的​所有​实例​中​均可​用。

如果​存在​多个​步骤​前​或​步骤​后​子​步骤,​则​它们​将​按照“步骤​类型​属性”(Step Type Property)​对话​框“子​步骤”(Substep)​选项​卡​上​显示​的​顺序​执行。

默认​状态​下,​测试​开发​人员​可以​为​步骤​类型​的​每​个​实例​指定​一个​代码​模​块。 如果​步骤​类型​不需要​代码​模​块,​则​应​在“禁用​属性”(Disable Properties)​选项​卡​中​为​步骤​类型​配置​禁用“指定​模​块”(Specify Module)​选项。 许多​内​置​步骤​类型​都​采用​这种​设计​方式,​例如​语​句​和​消息​弹出​步骤。

提供​长期​操作​的​视觉​反馈

TestStand​会​等待​步骤​前​或​步骤​后​子​步骤​中的​代码​执行,​然后​再​继续​下一步​操作。​如果​这些​步骤​的​代码​模​块​运行​缓慢​或​静默​运行,​TestStand​看起来​会​像是​无​响应。​为了​解决​此​问题,​可以​更改​光​标​或​使用​UI​消息​(例如​UIMsg_ProgressPercent)​来​更新​状态​栏​中的​进度​条。 

关于​如何​使用​此​方法​的​更多​信息,​请​查看《使用​UI​消息​更新​状态栏

使用​终止​监视器

您​开发​的​代码​模​块​应​包括​并​定期​轮​询​终止​监视​器,​以便​在​用户​使用​TestStand​或​TestStand API​中的​内​置​选项​终止​或​中止​序列​执行​时​正常​应对。 如果​用户​终止​序列​执行,​借助​终止​监视​器​可以​快速​终止​相应​子​步骤。

关于​在​代码​中​实现​终止​监视​器​的​更多​信息,​请​查看《终止​监视​器​示例

使用​步骤​前​或​步骤​后​子​步骤​代替​默认​模块

将​步骤​类型​固有​的​基本​操作​的​代码​模​块​作为​步骤​前​或​步骤​后​子​步骤​来​实现,​而不是​作为​默认​模​块。​仅​当​步骤​的​每​个​实例​可以​调​用​不同​的​代码​模​块​时,​才​使用​默认​模​块​设置。​默认​的​模​块​设置​独立​存在​于​步骤​的​每​个​实例​中,​而且​当​更改​步骤​类型​的​设置​时,​默认​状态​下,​TestStand​不会​更新​现有​的​步骤​实例。​但是,​对​子​步骤​的​更改​会​自动​影响​相应​步骤​类型​的​所有​现有​实例。

 

为​步骤​类型​创建​编辑​界面

编辑​子​步骤​提供​在​代码​模​块​中​实现​的​图形​用户​界面​(GUI),​用户​可以​在​编辑​时​在​其中​修改​相应​步骤​实例​的​变量​或​设置。​通常,​编辑​子​步骤​用于​配置​为​步骤​类型​定义​的​自​定义​步骤​属性。  

示例:“打开​数据​库”步骤​类型​通过​编辑​子​步骤​提供​了​一个​对话​框,​使​用户​可以​配置​ConnectionString​和​DatabaseHandle​步骤​属性,​这​两​个​属性​是​数据​库​步骤​类型​的​自​定义​属性。

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

编辑​子​步骤​提供​了​用于​配置​步骤​设置​的​用户​界面

 

用户​创建​自​定义​步骤​类型​的​实例​时,​可​使用​步骤​设置​窗​格​中的​按钮​访问​编辑​子​步骤​用户​界面,​这​将​在​新​窗口​中​启动​编辑​子​步骤​UI。 不过,​像​许多​内​置​步骤​类型​一样,​也可以​直接​在​选项​卡​中​嵌入​编辑​子​步骤​用户​界面。 这种​方法​需要​额外​的​开发​工作,​并且​必须​使用.NET​语言​进行​开发,​但是​这​为​步骤​类型​的​用户​提供​了​更加​无缝​的​编辑​界面。 关于​如何​实现​嵌入式​编辑​子​步骤​界面​的​更多​信息,​请​查看《在​序列​编辑​器​中​创建​自​定义​步骤​类型​编辑​选项卡》。

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

嵌入式​编辑​界面​(上)​与​在​单独​的​窗口​中​启动​的​编辑​子​步骤​(下)​之间​的​比较

单​个​与​多个​编辑​子​步骤

一个​自​定义​步骤​类型​可以​定义​许多​属性,​如果​所有​属性​同时​向​用户​显示,​可能​会​造成​混淆。 使用​在​单独​的​窗口​中​启动​的​编辑​子​步骤​常用​方法​时,​请在​单​个​编辑​子​步骤​中​使用​组织​方法​(例如​引入​选项​卡)​将​数据​组织​到​可​管理​的​部分​中。 由于​每​个​界面​必须​独立​启动,​因此​不​建议​使用​多个​编辑​子​步骤。 例如,“打开​SQL​语​句”步骤​可​实现​带有​多个​选项​卡​的​单​个​编辑​子​步骤。  

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

“打开​SQL​语​句”步骤​的​编辑​子​步骤​包含​两​个​选项​卡,​可​用于​对​设置​进行​分类

如果​将​嵌入式​步骤​面板​方法​用于​复杂​的​步骤​类型,​则​使用​多个​编辑​面板​的​方法​更​佳,​这​是​因为​步骤​选项​卡​上​会​清楚​地​显示​数据。​例如,“多数​值​边界​测试”步骤​包含​两​个​选项​卡,​可​用于​编辑​数值​数据​源​和​每​个​数据​源​的​边界​条件。 

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

“边界”(Limit)​和“数据​源”(Data source)​选项​卡​分别​在​单独​的​编辑​面板​中​实现

 

将​编辑​子​步骤​模​态​化​到​TestStand

始终​将​编辑​子​步骤​和​其他​用户​界面​代码​模​块​模​态​化​到​TestStand,​因为​当​TestStand​调​用​编辑​子​步骤​时,​它​将​禁用​序列​编辑​器。​如果​代码​模​块​未​模​态​化,​TestStand​窗口​可能​会​隐藏​代码​模​块。​用户​可能​认为​序列​编辑​器​已​挂​起,​并​可能​尝试​终止​TestStand。

关于​如何​在​子​步骤​模​块​中​实现​模​态​化​的​更多​详细​信息,​请​参见将​对话​框​模​态​化​到​TestStand示例。

表达​式​可​用于​充分​提高​灵活性

在​编辑​子​步骤​UI​中​使用​表达​式​字​段​可​帮助​用户​与​数据​进行​灵活​交互,​并​使​用户​可以​在​属性​值​中​使用​变量​和​逻辑。 但是,​与​使用​字符​串​或​数值​控​件​相比,​使用​表达​式​控​件​需要​更多​的​投资,​并且​需要​进行​额外​的​检查​来​确保​表达​式​可​为​属性​提供​有效​值。 

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

指定​设置​时,​表达​式​比​固定​值​更​灵活

定义​开发​人员​创建​步骤​实例​时​的​行为

在​许多​情况​下,​可能​需要​定义​在​测试​开发​人员​创建​新的​步骤​实例​时​出现​的​功能。 例如,​内​置​的“If”步骤​类型​使用​OnNewStep​子​步骤​来​插入​匹配​的“End”步骤。

为了​实现​这种​功能,​需要​创建​一个​编辑​子​步骤,​然后​将​该​子​步骤​重​命名​为“OnNewStep”。 这些​子​步骤​通常​使用​TestStand API​来​操作​步骤​实例​或​创建​其他​步骤​实例。

对​子​步骤​的​通用​建议

使用​参数​或​TestStand API​在​子​步骤​中​访问​数据

与​标准​代码​模​块​一样,​将​TestStand​数据​提供​给​子​步骤​的​方法​有​两​种。 可以​通过​代码​模​块​的​参数​传递​数据。 另外,​还​可以​从​代码​模​块​内​调​用​TestStand API,​直接​访问​和​更改​属性。​步骤​前​和​步骤​后​子​步骤​通常​只需要​读​取​步骤​属性​即可​确定​其​行为。​例如,​用于​设置​加热​室​的​温度​值。 但是,​编辑​子​步骤​需要​将​属性​的​当前​状态​显示​在​初始​UI​中,​而且​还​需要​一种​方法​来​更新​用户​修改​的​任何​值。  

在​大​多数​情况​下,​与​使用​TestStand API​直接​访问​数据​相比,​使用​参数​传递​数据​是​一种​更好​的​方法。 使用​参数​更不​容易​出​错:​由于​属性​是在​TestStand​的​步骤​类型​设置​中​定义​的,​而不是​直接​在​代码​模​块​中​定义​的,​因此​更​容易​发现​属性​名称​或​数据​类型​中的​错误。​此外,​在​步骤​配置​中​定义​所有​属性​可​使​步骤​类型​更易​于​维护。 在​不​修改​代码​模​块​的​情况​下,​对​步骤​属性​的​任何​更改​都可以​考虑。

但是,​根据​步骤​的​状态,​当​代码​模​块​需要​动态​访问​各种​数据​时,​使用​API​直接​访问​属性​可能​很有​帮助。 在​这种​情况​下,​使用​步骤​参数​会​导致​参数​过多,​而​在​不同​情况​下,​实际​用到​的​参数​只有​一部分。

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

模​块​适​配​器​将​步骤​变量​读​取​或​写​入​到​代码​模​块​的​输入​和​输出​中,​并​检查​错误

 

TestStand ​自​定义​步骤​类型​开发​最佳​实践【3】

在​LabVIEW​中​使用​TestStand API​访问​步骤​属性​不会​在​编辑​时​提供​参数​错误​检查​功能

编辑​时​卸​载​模块

在​为​自​定义​步骤​类型​的​子​步骤​开发​和​测试​代码​模​块​时,​请​注意,​在​执行​子​步骤​时,​TestStand​会​加​载​代码​模​块​并​将​其​保留​在​内存​中。​由于​模​块​将​保持​加​载​状态​以供​后​续​执行,​因此​这​可以​提高​性能,​但是​在​TestStand​卸​载​模​块​之前,​无法​编辑​代码​模​块。​卸​载​代码​模​块​的​方法​有​两​种:

  1. 选择“文件”(File)»“卸​载​所有​模​块”(Unload All Modules),​卸​载​当前​保留​在​内存​中的​任何​模​块。
  2. 在​子​步骤​配置​窗​格​中,​选择“编辑”(edit)​按钮,​卸​载​模​块​并​在​相应​的​开发​环境​中​打开​模块

 

维护​自​定义​步骤​类型​的​最佳​实践

存储​和​分​发自​定义​步骤​类型

应​考虑​如何​存储​和​分发​创建​的​自​定义​步骤,​这​一点​很​重要。​NI​建议​在​类型​选​板​文件​中​(而不是​在​序列​文件​中)​创建​所有​步骤​类型,​因为​在​加​载​序列​文件​时,​TestStand​会​在​类型​选​板​文件​中​搜索​步骤​类型​更新。​TestStand​还​可以​在​序列​文件​中​保留​所​使用​的​每​个​步骤​类型​的​副本,​帮助​管理​步骤​的​复​用。​如果​在​部署​序列​文件​时​未​使用​类型​选​板​文件,​序列​文件​仍​将​包含​步骤​类型​的​副本。  

框架​开发​人员​创建​的​步骤​类型​通常​会​分发​给​多个​测试​开发​人员​使用。 由于​步骤​类型​具有​许多​关联​的​文件,​因此​这​可能​会​带来​一定​的​挑战。 为了​帮助​管理​步骤​类型​文件,​请​使用​以下​目录​存储​步骤​类型​的​文件

  • 类型​选​板​文件​包含​类型​定义<TestStand Public>/​Components/​TypePalettes/
  • 子​步骤​代码​模​块​文件<TestStand Public>/​Components/​StepTypes/​[typeName]
  • 自​定义​图标<TestStand Public>/​Components/​Icons/​[typeName]

通过​使用​这些​目录,​可​将​必要​的​文件​分发​到​任何​测试​开发​人员​系统​上​的​TestStand Public​目录。 如果​在​新的​类型​选​板​文件​中​定义​了​类型,​则​可以​对​TestStand​进行​配置,​在​类型​选​板​文件​名​中​添加“Install_”前​缀,​自动​导入​类型​选​板。 关于​此​方法​的​详细​信息,​请​查看“类型​选​板​文件”帮助​主题

 

避免​重​命名​或​更改​步骤​属性​的​数据​类型

如果​需要​更改​自​定义​属性​的​类型,​可以​使用​新​类型​创建​另​一个​属性,​并​保留​使用​先前​类型​的​属性。​如果​更改​了​属性​的​名称​或​数据​类型,​TestStand​会​将​步骤​实例​中的​属性​值​替换​为​该​属性​的​默认​值。​除了​使用​新​类型​创建​新​属性​外,​还​可以​向​步骤​类型​添加​逻辑,​用于​处理​步骤​同时​使用​旧​属性​和​新​属性​的​情况。​例如,​当​TestStand​将​边界​值​实现​为​表达​式​时,​它​会​添加​两​个​新的​布​尔​属性,​用于​指定​使用​旧​的​数值​边界​属性。​UseLowExpr​和​UseHighExpr​属性​用于​确定​步骤​是​计算​旧​的​数值​边界​还是​新的​表达​式​边界。

上一篇:TestStand​ 最佳实践系列


下一篇:现代明亮人像摄影调色Lr预设