2.3 TestStand组件
TestStand如何实现测试管理?这需要了解它的系统组成,TestStand包含许多组件:序列编辑器(Sequence Editor)、用户界面(User Interface)、TestStand引擎(TestStand Engine)、模块适配器(Module Adapters)、TestStand部署工具(TestStand Deployment Utility),如图2-5所示(TestStand部署工具相对独立,没有在图中列举)。
1.TestStand引擎(TestStand Engine)
图2-5简单地展示了TestStand组件之间的相互关系,可以看到,TestStand引擎是TestStand系统的核心部分。TestStand引擎其实是一个基于ActiveX的自动化服务器,通过应用程序接口(API)将其功能开放给客户端,客户端通过TestStand API得以创建、编辑、执行或调试序列。在TestStand体系中,序列编辑器、用户界面、模块适配器都属于客户端。可以把TestStand引擎比喻成一只看不见的手,因为它本身没有界面,但它在后台支撑着一切功能。
图2-5 TestStand系统组成
2.序列编辑器(Sequence Editor)
序列编辑器(如图2-6所示)是TestStand中最重要的一个开发工具,TestStand大部分的开发工作都是在序列编辑器中完成的。它提供了一个图形化的开发环境,测试开发人员可以在序列编辑器中创建、编辑、执行或调试序列。图形化的开发环境非常方便,举个例子,在序列编辑器中通过拖曳就可以将一个步骤添加到序列中,但底层其实涉及一系列动作,TestStand需要首先创建一个步骤对象,然后设置对象属性,最后把这个对象添加到主序列中,这一系列动作是通过TestStand API访问TestStand引擎来完成的,但对用户而言,只是做了一个拖曳的动作。大部分时候我们不需要直接访问TestStand引擎,序列编辑器的图形化界面简化了用户创建复杂应用的过程。其实,TestStand提供了一个分层体系结构:表达层(用户看到的)和逻辑层(用户的某个操作所对应的在后台执行的操作)。序列编辑器和后面介绍的用户界面都属于表达层,而TestStand引擎及TestStand API属于逻辑层。我们只在某些场合通过TestStand API直接访问TestStand引擎。
3.用户界面(User Interface)
用户界面(如图2-7所示)可以运行和调试由序列编辑器创建的序列,并显示结果。和序列编辑器一样,它也是表达层,通过TestStand API访问TestStand引擎来实现序列的执行、调试等。既然有了序列编辑器图形化的界面,为什么还要专门的用户界面呢?当使用序列编辑器创建序列文件之后,不是就可以立刻在序列编辑器中运行和调试了吗?本质上来说,序列编辑器也是用户界面,只是它的功能比较强大,几乎可以在其中完成所有的开发工作。在开发阶段,往往就在序列编辑器中运行序列并进行调试,这时它就是一个用户界面,但正因为它功能强大,如果开发完成后要把它部署到产线使用,对于产线操作人员而言,这个界面可能就太过复杂了,而且开发者也不希望操作人员随意修改已经编写好的序列文件,因此有必要提供一个简化的界面,只要能运行调试序列即可,甚至连调试功能也不需要,而这就是用户界面。再者,序列编辑器不能修改,而用户界面是可以自定制的,这就完全可以根据自己的需求来设计,如显示额外的信息。在TestStand中有提供基于LabVIEW、LabWindows/CVI、C++、C#和VB.NET的用户界面源代码范例,这些范例都是可以直接运行的,也可以在范例的基础上进行修改。关于用户界面的更多内容,将在高级主题部分进一步讲解。
图2-6 序列编辑器主界面
4.模块适配器(Module Adapter)
TestStand步骤可以调用并执行不同应用开发环境编写的代码模块,而这正是借助于模块适配器来实现的,它在TestStand引擎和代码模块之间提供了一条通道。有些代码模块适配器(如LabVIEW、LabWindows/CVI、.NET),甚至允许在TestStand执行序列的过程中,进入相应代码模块的应用开发环境进行调试,这是比较有用的一个功能。
图2-7 用户界面示例