TestStand中混合并行测试系统的设计 - Part I
主要软件: TestStand
主要软件版本: 2012
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
问题: NI TestStand做为测试管理软件,提供现成即用的、完全可自定义的测试执行管理环境,用于管理、控制并运行您的测试序列。通过TestStand可以管理几乎所有编程环境开发的程序代码,包括NI LabVIEW、NI LabWindows/CVI、VB和VC++。另外它还可以运行编译成DLL (动态连接库) 的测试代码、ActiveX服务器或EXE。
TestStand的一大特点是它可以实现并行测试。使用TestStand自带的并行测试模型Parallel Process Model和Batch Process Model很容易就可以实现多个待测件(UUT)的并行执行,缩短测试时间,大大提高产线的测试效率和产能。为了完成多个UUT的测量,需要给UUT配置相应的测试硬件设备。硬件设备的配置有三种情况:
1)所有UUT拥有各自独立的测试设备:在条件允许的情况下,可以给每个UUT都配置独立的测试设备,这样每个UUT都可以单独进行测试,它们是完全并行的;
2)所有UUT都共享同一套测试设备:有些测试设备非常昂贵,一般会采取多个UUT共享同一套设备的方式,而通过开关进行切换。采用并行测试架构,尽量使昂贵的测试设备处于运转状态,减少设备闲置时间,提高测试效率;
3)在实现应用中,很多情况是这样子的:在整套系统中,共享其中昂贵的设备,而其它测试项用到的测试设备,是可以给每个UUT独立配置的。这样一种混合的模式,该如何来执行并行测试,实现效率的最优化呢?
解答: 这篇文档将分为两部分:
Part 1:TestStand中并行测试基础
在引入混合模式并行测试之前,我们先介绍TestStand中的并行测试的基础。细心的可能会发现,在TestStand的很多地方都有并行设置的途径:
1. 使用Sequence Call Step调用subsequence时,在其属性配置窗口的Module页的Execution Options栏中,可以选择subsequence在新的线程中运行(Use New Execution)或在新的执行中运行(Use New Execution)。
图1. Sequence Call Step配置窗口
开辟一个新的线程或新的执行,无论是哪一种情况,都可以实现subsequence和其调用方并行执行。这两者有什么区别呢,请参考链接:When to Run a Sequence in a New Execution versus in a New Thread。当Subsequence在一个新的执行中运行,TestStand将给subsequence创建一个全新的执行对象(Execution Object),新的执行对象可以包含多个线程,并拥有独立的执行窗口(Execution Window)、报表对象(Report Object)等等。当subsequence在新的线程中运行时,TestStand只是在当前执行对象(Current Execution Object)中添加了一个新的线程,新的线程不具有执行窗口和报表对象。图2表明了TestStand中多线程的层次关系。
图2. TestStand多线程层次关系图
那么什么时候选择新建一个线程,而什么时候选择新建一个执行?如果我们希望subsequence能在一个型的Process Model中运行、如果希望subsequence拥有独立的执行窗口和报表对象、如果希望subsequence拥有足够的独立性(即当调用方Sequence由于某种原因挂起时,subsequence仍能正常执行),那么请选择新建一个执行。
2. 从TestStand 2.0开始,TestStand中自带两个并行测试的Process Model,分别是Parallel Process Model和Batch Process Model。使用其中任意一个Process Model,就可以进行并行测试了!这里解释一下Process Model(what is a Process Model?):Process Model简单来说就是一个Sequence文件,它定义了一系列通用的操作(称之为Callback),包括识别UUT、主测试序列、产生报表、数据记录等等。以图3为例,假如Process Model包括PreUUT,MainSequence,和PostUUT三个通用操作。当我们新建了一个Sequence文件(即相当于Process Model的客户端)并且采用了该Process Model,Sequence文件将按照Process Model定义好的方式工作,去执行测试。但Process Model只是规定了一个框架,通用操作的具体内容在Sequence文件中是可以被修改和覆盖的。在图3中,PreUUT和MainSequence都被Client修改,未修改部分就采用Process Model默认的处理方式。
图3. Process Model和使用它的Sequence文件
Parallel 和Batch Process Model为何具有并行测试的能力呢。其实从前面介绍的Sequence Call Step的Execution Options中可以得知,它们是给每个UUT都新建一个新的执行,每个UUT都有自己的执行窗口和报表对象,它们在独立的并行运行。关于Parallel Process Model和Batch Process Model的区别,请参考链接Benefits of Parallel Testing。使用Parallel Process Model,我们可以测试完全独立的UUT。比如4个UUT的测试,其中一个UUT测试完成之后,可以立刻从测试夹具中取出来,然后测试夹具又装上新的UUT,在操作这些的同时,其它UUT仍处于测试之中,完全不受干扰。使用Batch Process Model时,同样以4个UUT为例,我们以4个UUT为一组,确保它们同时开始测试,然后同时结束。为什么有这个需求呢,因为有时候测试夹具是共用的,或者4个UUT的负载是共用的等等。
3. 当我们在Sequence File中新增加一个Step,在Step的属性配置窗口有Synchronization一栏,从Batch Synchronization下拉列表中可以选择:No Synchronization、One Thread Only、Parallel等。这些设置是专门针对Batch Process Model,也只有当Client Sequence File采用Batch Process Model时,这个设置才生效。那么串行(Serial)、并行(Parallel)的设置到底是起什么作用呢?
图4. Synchronization设置
Batch Process Model将所有的UUT做为一组,确保它们能同时开始测试,并同时结束。以图5为例:假如有3个UUT,每个UUT有三个测试项。使用Batch Process Model,则所有的UUT同时开始测试,其中UUT 0很快就完成了三项测试,那么它需要等待,直到UUT 1和UUT 2都测完了所有项之后,它们才同时结束测试。因此Batch Process Model确保同时开始和同时结束,中间测试项是否同步,它是不关心的,也因此除了同时开始和结束的制约,默认情况下所有的UUT在完成测试项的过程中其实是完全独立的,并行的。
图5. Batch Process Model
如果希望某一个具体的测试项之间要同步,如图6所示,我们希望所有UUT的第三项测试能同时开始和结束,这时候就需要用到Synchronization Section。
图6. Synchronization Section
Batch Synchronization下有很多选项,关于它们的详细信息,请参考TestStand Help文档,搜索关键词“Batch Synchronization”。并且参考Parallel Testing With TestStand,下载其中的Presentation File,有很好的图示说明。
这里还是以图6为例简单的介绍一下,然后你也不妨建一个Step测试一下:
No synchronization:UUT的第三测试项之间没有同步,彼此独立;
One thread only:只有一个线程执行了第三项测试,其它线程跳过;
Parallel:所有UUT的第三测试项同时开始,并同时结束;
Serial:某一时刻只能有一个UUT执行第三项测试,然后所有UUT按顺序执行完。
4. 在Type Palette的Synchronization中有Batch Synchronization Step,在Sequence File中增加该Step后,在其“Batch Synchronization Settings”中可以设置Section Type:Serial、Parallel、或One Thread Only。这个和第3点中描述的在Step的属性配置窗口的Synchronization一栏设置同步的效果是一样的。只不过采用该Step相当于显示的说明某测试项是有同步要求的。同样的,只有当Sequence File选择Batch Process Model时,该Step的设置才会生效。在图7中,通过Batch Synchronization Step,我们显示的同步Step 4和Step 71. Benefits of Parallel Testing:
2. When to Run a Sequence in a New Execution versus in a New Thread:
3. Parallel Testing With TestStand:
4. Importing and Exporting Arrays
5. How Do I Specify a Particular Process Model for a Specific Sequence File?
6. What is a Process Model?
附件:
报告日期: 11/29/2012
最近更新: 11/30/2012
文档编号: 63SMTV7K