TestStand ?用户?界面?开发?最佳?实践

Posted yourdirection

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TestStand ?用户?界面?开发?最佳?实践相关的知识,希望对你有一定的参考价值。

概览

TestStand?用户?界面?是?一个?应用?程序,?提供?用于?在?生产?站?点?执行?测试?的?图形?界面。?用户?界面?应用?程序?通常?用于?执行?测试,?而?TestStand?序列?编辑?器?通常?用于?开发?测试。?您?可以?自?定义?用户?界面?以?满足?特定?的?测试?需求,?甚至?可以?在?需要?时?开发?测试。

本文?讨论?了?设计?和?开发?TestStand?用户?界面?应用?程序?的?最佳?实践:

  • 介绍?TestStand?提供?的?即?用?型?组件
  • 说明?如何?利用?TestStand?架构?来?构?建?可?扩展?且?可?维护?的?测试?系统

内容

  • TestStand?用户?界面?的?架构
  • 管理?不同?用户?的?需求
  • 在?UI?外?实现?的?功能
  • 在?用户?界面?和?其他?组?件?之间?进行?通信

TestStand?用户?界面?的?架构

TestStand?使用?模?块?化?架构?设计,?利用?具有?单一?用途?的?独立?组?件,?使得?整个?系统?的?开发?和?维护?更加?简单?直接。

技术图片

用户?界面?是?模?块?化?TestStand?架构?中?一个?独立?组件

用户?界面?组?件?为?开发?人员?和?测试?操作?员?提供?了?相应?机制,?用于?在?测试?系统?中?创建?和?运行?序列。?在?模?块?化?架构?中,?用户?界面?(UI)?和?底层?TestStand?应用?程序?之间?应?存在?清晰?的?界限。?这种?架构?具有?以下?优点:

  • 能够?与?使用?多种?不同?用户?界面?的?测试?系统?无缝?交互。 例如,?测试?开发?人员?可以?使用?序列?编辑?器?来?开发?序列,?而?测试?操作?员?可以?使用?操作?员?界面?来?执行?测试?和?查看?结果。
  • 对?UI?进行?更改,?而?没有?更改?测试?行为?的?风险。

TestStand?用户?界面?与?TestStand?引擎?API?通信?以?执行?其?各种?功能,?例如?获取?测试?执行?的?状态、?创建?和?编辑?序列?以及?配置?设置。?TestStand?还?提供?了一?组?用户?界面?控?件?和?单独?的?UI API,?让?您?可以?快速?创建?自己?的?TestStand?用户?界面。


TestStand?用户?界面?(UI)?控件

TestStand?用户?界面?(UI)?控?件?是?一?组?ActiveX?控?件,?这些?控?件?实现?了?应用?程序?显示、?执行?和?调?试?测试?序列?所需?的?常用?功能。?这些?ActiveX?控?件?显著?减少?了?用户?界面?与?TestStand API?交互?以?处理?用户?界面?任务?所需?的?源?代码?数量。?使用“属性?(Properties)”页?面?或?调?用?可用?的?属性?和?方法,?可?配置?这些?控?件。?有关?如何?在?LabVIEW、?CVI、?C#?或?VB.NET?中?使用?TestStand UI?控?件?的?更多?信息,?请?参见TestStand UI?控件帮助?主题。

管理?器?控?件?和?可见?控件

TestStand UI?控?件?提供?了?两?组?用户?界面?控?件:?管理?器?控?件?和?可见?控?件。

管理?器?控?件?调?用?TestStand API?来?执行?各种?任务,?例如?加?载?文件,?启动?执行?以及?检索?顺序?和?执行?信息。?当?发生?应用?程序?事件?时?(例如?当?用户?登录?时、?执行?到达?断?点?时,?或者?用户?更改?他们?正在?查看?的?文件?或?顺序?时),?管理?器?控?件?也?会?通知?您。?管理?器?控?件?在?运行?时?不?可见。

可见?控?件?向?用户?显示?信息,?例如?显示?当前?执行?状态?的?执行?视图?控?件。?可见?控?件?还?允许?用户?与?UI?交互,?例如?使用?按钮?控?件?执行?测试。 可见?控?件?必须?连接?到?管理?器?控?件,?从而?确定?其?运作?方式。 这种?连接?通过?使用?管理?器?控?件?的?连接?方法?来?实现。?连接?控?件?时,?管理?器?控?件?会?自动?处理?用于?管理?可见?控?件?行为?的?内部?逻辑。 您?可以?建立?视图?连接、?列表?连接、?命令?连接?和?信息?源?连接,?具体?取决?于?所?连接?的?管理?器?控?件?和?可见?控?件?的?类型?以及?可见?控?件?的?期望?行为。

技术图片

将?可?视?TestStand UI?控?件?连接?到?管理?器?控?件?以?定义?其?行为。

有关?在?各种?编?程?环境?中?使用?TestStand UI?控?件?的?更多?详细?信息,?请?参阅TestStand?用户?界面?控件帮助?主题。 您?还?可以?使用连接?UI?控件演示?来?查看?可?创建?的?可用?连接?的?行为。

此外,?您?还?可以?将?编?程?环境?中?本地?提供?的?控?件?与?TestStand UI?控?件?结合?使用。?使用?本地?控?件?时,?可以?使用?用户?界面?API?直接?与?管理?器?控?件?进行?通信,?从而?实现?与?TestStand?相关?的?功能。?有关?编写?直接?调?用?TestStand API?的?应用?程序?的?更多?信息,?请?参考使用?原生?控?件?构?建?TestStand UI?的?示例


简化?和?全?功能?用户?界面?应用?程序?示例

TestStand?提供?了?几个?示例?和?组?件,?可?用于?帮助?构?建?用户?界面。?参考?用户?界面?示例,?有利?于?开始?开发?自?定义?用户?界面。?TestStand?还?附带?了?多种?用户?界面?组?件,?这些?组?件?能够?实现?在?这些?用户?界面?应用?程序?中?使用?的?常见?功能,?您?可以?在?自己?的?应用?程序?中?复?用?这些?用户?界面。

TestStand?附带?了?使用?支持?编?程?语言?的?简化?和?全?功能?用户?界面?应用?程序?示例,?此类?编?程?语言?包括?LabVIEW、?LabVIEW NXG、?Labwindows?/?CVI?、?C#?和?VB.net。?TestStand?提供?了?以?每?种?受?支持?编?程?语言?编写?的?示例?源?代码。?您?可以?参考?此?源?代码,?以便?开始?开发?自?定义?用户?界面,?也可以?按?原样?使用?它们。

简化?用户?界面?最大?程度?地?减少?了?显示?内容,?不?包含?菜单?栏,?其?目的?是?供?测试?操作?员?在?已?部署?的?测试?系统?上?作为?用户?界面?使用。?而?全?功能?用户?界面?则?显示?了?更多?信息,?添加?了?菜单?栏,?并?提供?了?调?试?功能。 全?功能?用户?界面?还?具备?编辑?器?模式,?可?用于?创建?和?修改?测试?序列,?例如?TestStand?序列?编辑?器。

在?学习?如何?使用?TestStand UI?控?件?进行?开发?时,?简化?用户?界面?示例?是?一个?很好?的?起点。 对于?LabVIEW、?LabWindows/?CVI?或?C#?实现,?可以?使用?下方?的?指南?查看?源?代码?及其?工作?方式?的?详细?说明:

管理?不同?用户?的?需求

在?为?测试?系统?开发?用户?界面?时,?务?必要?考虑?将与?应用?程序?进行?交互?的?所有?用户?的?目标?和?需求。 测试?系统?用户?通常?可以?分为?以下?几?类?角色:

  • 框架?开发?人员 — 设计?测试?框架?组?件,?包括?定制?的?用户?界面、?过程?模型?和?步骤?类型。 
  • 测试?开发?人员 — 在?框架?开发?人员?实现?的?框架?内?创建?测试?序列。
  • 技术?员 — 对?在?生产?环境?中?运行?测试?时?出现?的?各种?问题?进行?故障?分析。
  • 测试?操作?员 — 设置?测试?单元?并?在?生产?环境?中?运行?测试。

在?为?测试?系统?用户?规划?和?设计?适当的?用户?界面?时,?您?扮演?的是?框架?开发?人员?的?角色。 借助?TestStand UI?控?件,?您?可以?根据?用户?的?需求?完全?自?定义?用户?界面。?例如,?测试?操作?员?可能?只需要?启动?测试?并?查看?结果。 但?测试?开发?人员?则?需要?完全?的?访问?权限?来?创建?和?编辑?序列?文件。

您?可以?为?测试?开发?人员?提供?全?功能?用户?界面,?该?界面?允许?创建?和?编辑?序列?文件,?例如?TestStand?提供?的?全?功能?UI?示例?或?序列?编辑?器。 对于?测试?操作?员,?可以?设计?一个?简化?用户?界面,?其中?仅?显示?一个?用于?开始?测试?的?按钮?以及?一个?显示?测试?结果?的?显示?控?件,?从而?确保?操作?员?可以?成功?运行?测试。 向?操作?员?提供?较?复杂?的?UI?可能?会?导致?出现?问题,?因为?这?需要?操作?员?事先?接受?其他?培训,?且?由于?可用?功能?过多,?操作?时?更?容易?出?错。

通过?使用?TestStand UI?控?件?来?开发?UI,?您?将?能够?从?全?功能?UI?无缝?迁移?到?简化?UI。?这?两?种?UI?均?基于?TestStand?引擎、?序列、?过程?模型?和?其他?组?件?而?构?建,?并且?会?共用?这些?组?件。

技术图片

全?功能?UI(例如?序列?编辑?器)?和?简化?操作?员?UI?可以?利用?相同?的?测试?代码?无缝?交互

除了?创建?单独?的?用户?界面,?还?可以?使用?TestStand?用户?管理?来自?定义?在?单?个?用户?界面?应用?程序?中?提供?的?功能。 在?不同?角色?执行?相同?测试?的?情况?下,?这种?方法?更?适用。 例如,?负责?分析?失败?测试?故障?的?技术?人员?将?需要?访问?诊断?数据,?如?执行?和/?或?测试?报告?的?视图,?而?这些?数据?通常?不会?向?操作?员?显示。 为?技术?人员?提供?单独?的?UI?应用?程序?会?出现?问题,?因为?他们?无法?从?单独?的?应用?程序?访问?当前?的?执行?信息。 要?解决?这个?问题,?可以?创建?一个?单独?的?用户?界面,?为?更?高级?用户?提供?更多?视图。 例如,?可以?使用ctrl + shift + alt + insert将?TestStand?全?功能?用户?界面?更改?为?编辑?器?模式,?让?高级?用户?获得?更改?序列?的?权限。

技术图片
全?功能?UI?示例?可以?在?操作?员?模式?或?编辑?器?模式?下?执行

为?TestStand?用户?管理?器?定义?用户?时,?TestStand UI?控?件?会?根据?当前?用户?的?权限?自动?启用?或?禁用?其?状态。?使用?Engine.CurrentUserHasPrivilege TestStand API?方法,?可?根据?用户?的?权限?定义?自?定义?行为,?例如?隐藏?或?显示?用户?界面?的?某些?部分。?有关?定义?用户?和?权限?的?更多?信息,?请?参阅管理?用户帮助?主题。

在?UI?外?实现?的?功能

在?开发?TestStand?用户?界面?时,?务必?明确?区分?在?UI?中?实现?的?功能?以及?在?测试?系统?其他?组?件?中?实现?的?功能。 本?节?概述?了?常见?的?测试?系统?功能?以及?在?TestStand?架构?中?实现?这些?功能?的?情况。

在?前端?回?调?中?实现?初始?化?代码

在?许多?情况?下,?测试?系统?需要?在?测试?开始?执行?之前?执行?操作。?例如,?您?可能?需要?初始?化?测试?硬件?并?验证?硬件?是否?已?校准,?或者?检查?用户?权限?以?初始?化?用户?界面。

要?处理?这些?功能,?可以?在?前端?回?调?序列?文件?中?使用?LoginLogout?序列。 此?序列?默认?在?TestStand?启动?时?由?TestStand UI?应用?程序?管理?器?控?件?执行,?并且?默认?向?用户?显示?登录?对话?框。 向?此?序列?添加?功能?具有?以下?好处:

  • 所有?TestStand?用户?界面?和?序列?编辑?器?均?会?调?用?相同?的?LoginLogout?序列,?这样,?您?就?可以?定义?能?从?任何?UI?访问?的?功能?并?防止?出现?重复?的?代码
  • 您?可以?更改?其他?代码?的?行为,?而无?需?更改?用户?界面。

除了?LoginLogout?序列?之外,?还?可以?在?前端?回?调?中?定义?其他?序列,?以便?在?其他?情况?下?实现?调?用?的?功能。 对于?这些?其他?序列,?需要?使用?Engine.CallFrontEndCallbackEx()?方法?将?代码?添加?到?用户?界面,?以便?在?需要?时?调?用?序列。 使用?这个?方法,?无?需?管理?对?序列?文件?的?引用,?因为?TestStand?会?自动?加?载?和?卸?载?前端?回?调,?所以?非常?方便。 


使用?工具?菜单?访问?附加?应用?程序

测试?系统?通常?使用?与?测试?一起?工作?的?独立?工具?或?应用?程序。 例如,?可以?启动?数据?库?配置?实用?程序?或?分析?应用?程序。 您?无?需?将?这些?功能?构?建?为?用户?界面?应用?程序?的?模?块,?而是?可以?通过?植?入?独立?工具?来?模?块?化?系统,?并?通过?自?定义?工具?菜单?项?提供?对?相应?的?访问。 通过“工具?(Tools)”?“自?定义?(Customize)”菜单,?可?从?序列?编辑?器?自?定义?工具?菜单。?在?自?定义?对话?框?中,?可以?添加?新的?工具?菜单?项?并?配置?其?行为。

技术图片
创建?自?定义?工具,?向?实现?工具?菜单?的?任何?用户?界面?提供?更多?功能

所?做的?更改?将?保存?到?单独?的?配置?文件?中,?因此?所有?用户?界面?都?将?显示?您?创建?的?自?定义?条目。 如需?更多?信息,?请?参考自?定义?工具?菜单?对话框帮助?主题。

使用?过程?模型?定义?序列?入口点

用户?界面?需要?为?用户?提供?一种?开始?执行?序列?的?方法,?但?重要?的是,?UI?不能?直接?与?任何?序列?文件?耦合。 要?允许?用户?开始?测试,?可以?创建?一个?按钮?来?调?用?当前?已?加?载?序列?的?执行?入口?点,?包括?直接?运行?序列?或?使用?过程?模型?入口?点?(例如 Single Pass 和 Test UUTs)。 用户?界面?不?应?包含?序列?执行?之前?或?之后?执行?的?功能,?此?功能?应?通过?过程?模型?实现。

过程?模型?还?可以?定义?配置?入口?点,?用户?可以?使用?这些?入口?点?配置?过程?模型?设置。?确保?任何?模型?设置?都是?从?这些?入口?点?配置,?而不是?直接?通过?用户?界面?配置。?通过?将?功能?构?建?到?过程?模型?中,?这些?功能?可在?任何?TestStand?用户?界面?应用?程序?和?序列?编辑?器?中?使用。

有关?使用?过程?模型?的?更多?信息,?请?参阅TestStand?过程?模型?定制?的?最佳?实践文?档。

在?用户?界面?和?其他?组?件?之间?进行?通信

尽管?将?用户?界面?与?测试?系统?的?其他?组?件?(例如?测试?序列?文件?和?过程?模型)?分?离开?很?重要,?但?用户?界面?必须?与?这些?组?件?有效?通信。 本?节?介绍?了?可?用于?在?这些?组?件?之间?进行?通信?且?同时?仍?保持?这种?模?块?化?的?方法。

序列?和?用户?界面?之间?的?通信

在?执行?测试?时,?测试?系统?必须?向?操作?员?提供?反馈,?表明?执行?的?当前?状态,?例如?正在?运行?的?测试?或?当前?的?测试?结果。?通常,?可以?使用?TestStand UI?控?件?来?显示?此?信息,?例如?执行?视图?和?报告?视图。?通过?连接?到?管理?器?控?件,?这些?控?件?将?随时?更新?以?显示?由?引擎?管理?的?当前?执行?状态。

在?某些?情况?下,?可能?需要?显示?有关?测试?的?更多?具体?信息。 执行?序列?或?代码?模?块?必须?将?此?信息?传递?到?用户?界面?进行?显示,?或?指示?用户?界面?采取?措施。?为了?在?不?引入?耦合?的?情况?下?传达?此?信息,?可以?使用?UI?消息?来?实现?通信。?使用?序列?文件?属性?或?UI?变量?作为?通信?方式?的?替代?方法,?在?序列?文件?和?用户?界面?之间?创建?了?不必要?的?依赖?关系。?例如,?从?序列?更新?全局?文件,?然后?在?用户?界面?中?检查?其?状态,?这样?会?在?全局?文件?和?UI?之间?引入?耦合。  首?选?UI?消息?有?两?个?原因:

  1. UI?和?序列?文件?的?独立?性 — 用户?界面?应?始终?与?序列?文件?一起?运行,?反之亦然。 通过?使用?UI?消息,?在?同时?运行?序列?文件?和?用户?界面?时,?不?要求?序列?文件?中?存在?某些?属性。 使用?UI?消息:
    • 用户?界面?可以?执行?不?实现?某些?消息?的?序列?(用户?界面?中的?处理?代码?根本?不会?执行)。
    • 发布?自?定义?消息?的?序列?可以?在?并非?专?为?处理?自?定义?消息?而?构?建?的?UI?中?执行?(用户?界面?会?忽略?UI?消息)。
  2. 可?维护?性 — UI?消息?避免?了?对?序列?文件?属性?或?UI?变量?的?依赖,?这?意味?着?开发?人员?需要?维护?的?序列?文件?和?用户?界面?都?更少。

有关?使用?UI?消息?的?更多?信息,?请?参阅?《使用?TestStand?用户?界面?消息?(UI?消息)》

UI?消息?的?类型

UI?消息?包含?了?表明?消息?用途?的?消息?ID。 TestStand?定义?了?多个?UI?消息?ID,?这些?ID?定义?了?由?引擎?自动?发送?或?由?TestStand?用户?界面?控?件?自动?处理?的?消息。 例如,?消息?ID UIMsg_EndExecution(值?4)?在?执行?结束?后?由?引擎?发送。 管理?器?控?件?将?许多?这些?UI?消息?显示?为?单独?的?事件;?在?这种?情况?下,?可以?定义?ApplicationManager EndExecution?事件?的?处理?程序,?而不是?直接?使用?UI?消息?事件?处理?程序。

其他?UI?消息?由?默认?过程?模型?发布,?例如?UIMsg_ModelState_Identified(值:?32),?过程?模型?会?在?识别?待?测?设备?的?序列?号?之后?发布?此?消息。 此外,?还?可以?使用?Thread.PostUIMessageEx TestStand API?方法,?从?代码?模?块、?测试?序列?或?过程?模型?中?发布?预?定义?或?自?定义?的?UIMessage。

UIMessageCodes帮助?主题?中?提供?了?UI?消息?ID?或?事件?代码?的?列表。

您?可以?自行?定义?用于?自?定义?操作?(例如?更新?图表?和?直方?图?中的?数据)?的?UIMessage。?定义?自?定义?UIMessage?时,?请?从?UIMsg_UserMessageBase?事件?代码?开始?指定?唯一?的?事件?代码。?发布?自?定义?UIMessage?时,?传递?已?定义?的?事件?代码?和?要?显示?的?数据。?UI?消息?提供?了?用于?数值、?字符?串?或?ActiveX?数据?的?数据?字?段,?可以?在?调?用?postUIMessageEx?方法?时?指定?这些?字?段。?在?定义?处理?程序?以?响应?用户?界面?中的?UI?消息?时,?此?数据?会?作为?参数?在?事件?回?调?中?显示。

要?定义?用户?界面?如何?处理?UI?消息,?请?为?以下?两?个?程序?管理?器?事件?中的?其中?一个?添加?事件?回?调,?从而?将?操作?员?界面?配置?为?在?处理?UI?消息?时?运行?用户?定义?的?代码:

  • UImessage事件 — 每?当?应用?程序?管理?器?处理?任何?UI?消息?时,?都会?触发?此?事件。 指定?的?事件?回?调?将?在?任何?默认?UI?消息?处理?操作?之前?执行。 在?回?调?中将?取消?输出?事件?参数?设置?为“True”,?可?覆盖?默认?事件?操作。
  • UserMessage事件 — 仅?针对?自?定义?UI?消息?(消息?ID?为?10000?或?更大?数字?的?UI?消息)?触发?此?事件。 

有关?为?用户?界面?定义?事件?处理?程序?的?信息,?请?参阅?TestStand?帮助?中的处理?事件主题。

从?用户?界面?到?执行?测试?的?通信

在?某些?情况?下,?需要?将?信息?从?用户?界面?传?达到?测试?序列。 但是,?序列?和?UI?之间?的?通信?应?始终?由?序列?发起,?从而?确保?序列?处于?可?修改?其?数据?的?状态。 为此,?该?序列?可以?发布?带有?自?定义?代码?的?UI?消息,?以此?表明?它?已?准备?好?进行?通信。?发布?UIMessage?时,?将?同步?参数?设置?为“True”,?以便?等到?用户?界面?处理?该?消息?后?再?执行。?用户?界面?处理?UIMessage?时,?它?会?检索?SequenceContext?对象?并?写?入?或?读?取?某些?变量,?例如?过程?模型?局部?变量。
在?许多?情况?下,?UI?并不?是?用户?指定?测试?相关?数据?的?最佳?位置。 例如,?如果?数据?与?过程?模型?中的?任务?有关,?最好?修改?或?创建?配置?入口?点,?以便?从?默认?菜单?访问?该?入口?点。

 

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














以上是关于TestStand ?用户?界面?开发?最佳?实践的主要内容,如果未能解决你的问题,请参考以下文章

TestStand 界面重置小技巧

TestStand 如何正确使用Trace功能

带有选项卡式用户界面的 KnockoutJs 应用程序:最佳实践是啥?

Spring Transactions 和通用 DAO 和服务的最佳实践

?TestStand API 编程

Flex 工作流程和最佳实践