3.3 TestStand开放式架构
1.过程模型(Process Model)
3.2节通过菜单命令“ExecuteSingle Pass”和“ExecuteTest UUTs”执行了主序列,和第2章的菜单命令“ExecuteRun MainSequence”相比,前两者执行了额外的操作,如输入序列号、生成报表、显示测试结果,这是一些比较通用的操作。先聚焦到序列文件本身,仍以Computer Motherboard Test Sequence.seq为例,它自身包含很多的步骤,这些步骤都是针对计算机主板这一特定UUT的,执行菜单命令“ExecuteRun MainSequence”后,TestStand只执行主序列中的步骤,如图3-4所示。作为标准自动化测试系统架构的最顶层,测试管理软件要提供模块化的测试框架,在TestStand中,这个测试框架称为过程模型(Process Model),而采用该过程模型的序列文件称为客户端序列文件(Client Sequence File)。回顾第1章介绍的自动化测试系统的组成,测试软件部分细分为测试程序、自动化测试框架,对应于TestStand中的测试程序即客户端序列文件,测试框架即过程模型。在过程模型中会包含很多的通用操作,而客户端序列文件的主序列只是其中的一部分,过程模型将框架定义好,并预留位置给客户端序列,开发人员负责填写这一部分即可。
如图3-5所示,如果采用过程模型,启动测试之后,TestStand不仅执行客户端主序列,还会按照过程模型定义的顺序执行所有的操作,按照图3-5所示的简化示意流程,即通用操作→客户端序列→通用操作。通过这种形式,TestStand将很多通用操作直接提供给开发人员,如序列号追踪、流程控制、报表生成、数据存储、用户界面更新、配置和提示窗口、用户管理等,开发人员不再需要从头开始这部分工作了。TestStand需要额外做的工作是解决通用操作和客户端序列之间的通信和数据共享问题。其实,过程模型在概念上很简单,就是把通用操作和特定操作组合在一起,形成更大的测试序列,怎么组合以及包含哪些通用操作则由过程模型决定。过程模型本身是一个序列文件,TestStand自带三种过程模型,分别是顺序过程模型、并行过程模型、批量过程模型,后两者具有并行测试的功能,用户也可以根据需要创建新的过程模型。
图3-4 主序列包含一系列步骤
图3-5 过程模型
2.执行入口点(Execution Entry Point)
如前所述,过程模型定义好了测试框架和通用操作。在实际应用中,不同项目使用过程模型时,对它所包含的通用操作以及通用操作之间的执行顺序有着不同的需求,因此每次都要修改过程模型,或者创建新的过程模型,久而久之,过程模型越来越多。为避免这种情况,TestStand引入执行入口点的概念。以图3-6为例,假设过程模型有A、B、C三个不同的执行入口点,A和B之间的区别在于通用操作2和MainSequence的先后顺序变了,而C中通用操作1和MainSequence处于循环之中。因此,选择不同的执行入口点,意味着采用不同的运行方式。说白了,还是这些操作,只是把它们重新排列组合,以满足不同场合应用需求。像3.2节中的Single Pass和Test UUTs就是同一个过程模型的两种不同执行入口点,Test UUTs会连续测试不同的UUT,这不同于Single Pass,就是这个道理。每个过程模型可以有任意多个执行入口点,可根据需要创建添加。
图3-6 执行入口点
3.回调序列(Callback Sequence)
利用执行入口点可以定义适合自己的序列执行方式,然而在执行入口点包含的这些通用操作中,其功能是预定义好的,但是开发人员有可能需要修改默认功能。以输入序列号追踪UUT为例,TestStand默认弹出窗口,提示用户手动输入序列号,但在实际产线中往往是使用条码枪直接扫描,不需要手动输入,这就需要修改或重写序列号输入这一通用操作。怎么修改呢?最直接的方式是在执行入口点中直接修改通用操作,但这会导致潜在的问题,如果产品升级或者完全更新换代,这些通用操作就得去适应新的产品,这时又需要修改执行入口点里的通用操作,或者干脆新建执行入口点。当产品越来越多时,执行入口点修改次数增多,或者其数量不断增加,系统维护就变得非常困难。为避免这种情况,TestStand引入回调序列。TestStand将经常被修改的通用操作设置成回调序列,每个回调序列有定义的默认功能,但是它们可以被客户端序列文件重写。如图3-7所示,在执行入口点中定义了三个回调序列,在客户端序列文件中,重写了回调1和回调3。当TestStand在过程模型框架下执行到每个回调序列时,它会去检查该回调序列是否被客户端序列文件重写,如果是则执行客户端序列文件中的定义,否则执行默认操作。通过这种方式,可以对通用操作进行定制化操作,并且这部分工作是放在客户端序列文件中的,减少了对过程模型和执行入口点的修改。通过过程模型、执行入口点、回调序列这三个不同层次的接口,TestStand就这样将其开放式架构逐步展现出来。
图3-7 回调序列
4.TestStand架构概览
第2章介绍了TestStand系统组件(见图2-5),包括TestStand引擎、序列编辑器、用户界面、模块适配器、部署工具,TestStand引擎是最核心的部分,它支撑着一切操作,序列编辑器和用户界面通过TestStand API和它进行交互。TestStand如果要调用其他应用开发环境编写的代码,就需要借助于模块适配器。
本章介绍了过程模型、执行入口点、回调序列的概念,它们是TestStand展现其强大灵活开放式架构的具体实现,正因如此,TestStand远不只是测试执行器那么简单。概括来讲,TestStand系统组件支撑着测试管理、流程控制,而过程模型、执行入口点、回调序列、客户端序列文件则将这些功能具体化,这两部分整合在一起,就构成了TestStand的整体架构。打开TestStand架构概览图文档<TestStand>\Doc\Manuals\TestStandSystemandArchitectureOverviewCard.pdf,如图3-8所示。TestStand系统组件之间的关系和图2-5是一致的,在这个基础上,它增加了过程模型、序列文件执行的详细信息。过程模型的运作同样由TestStand引擎支撑,它通过TestStand API访问引擎,而序列文件执行底层也同样是由TestStand引擎接管。将“序列文件执行”展开,如果没有使用过程模型,则只执行该序列文件包含的步骤;如果使用了过程模型,则执行过程将按照过程模型设定的方式进行,执行过程会产生测试结果,过程模型中的通用操作会进行结果收集,并生成报表、记录数据库或者做数据离线分析。这些基本上就是TestStand架构的全部内容。
图3-8 TestStand架构概览
【小结】
继第2章介绍TestStand系统组成后,本章重点介绍过程模型、执行入口点、回调序列概念,两部分整合在一起构成了TestStand的整体架构。带着这个整体架构的思想,读者可以在后续章节中慢慢体会TestStand开放式架构,并逐步理解测试管理、流程控制。