From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



TestStand中混合并行测试系统的设计 - Part I



主要软件: TestStand
主要软件版本: 2012
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System

问题:
NI TestStand做为测试管理软件,提供现成即用的、完全可自定义的测试执行管理环境,用于管理、控制并运行您的测试序列。通过TestStand可以管理几乎所有编程环境开发的程序代码,包括NI LabVIEWNI LabWindows/CVIVBVC++。另外它还可以运行编译成DLL (动态连接库) 的测试代码、ActiveX服务器或EXE
TestStand的一大特点是它可以实现并行测试。使用TestStand自带的并行测试模型Parallel Process ModelBatch Process Model很容易就可以实现多个待测件(UUT)的并行执行,缩短测试时间,大大提高产线的测试效率和产能。为了完成多个UUT的测量,需要给UUT配置相应的测试硬件设备。硬件设备的配置有三种情况:
1)所有UUT拥有各自独立的测试设备:在条件允许的情况下,可以给每个UUT都配置独立的测试设备,这样每个UUT都可以单独进行测试,它们是完全并行的;
2)所有UUT都共享同一套测试设备:有些测试设备非常昂贵,一般会采取多个UUT共享同一套设备的方式,而通过开关进行切换。采用并行测试架构,尽量使昂贵的测试设备处于运转状态,减少设备闲置时间,提高测试效率;

3)在实现应用中,很多情况是这样子的:在整套系统中,共享其中昂贵的设备,而其它测试项用到的测试设备,是可以给每个UUT独立配置的。这样一种混合的模式,该如何来执行并行测试,实现效率的最优化呢?



解答:
这篇文档将分为两部分:
Part 1:TestStand中并行测试基础
Part 2:混合并行测试系统
在引入混合模式并行测试之前,我们先介绍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 ModelBatch Process Model。使用其中任意一个Process Model,就可以进行并行测试了!这里解释一下Process Modelwhat is a Process Model?):Process Model简单来说就是一个Sequence文件,它定义了一系列通用的操作(称之为Callback),包括识别UUT、主测试序列、产生报表、数据记录等等。以图3为例,假如Process Model包括PreUUTMainSequence,和PostUUT三个通用操作。当我们新建了一个Sequence文件(即相当于Process Model的客户端)并且采用了该Process ModelSequence文件将按照Process Model定义好的方式工作,去执行测试。但Process Model只是规定了一个框架,通用操作的具体内容在Sequence文件中是可以被修改和覆盖的。在图3中,PreUUTMainSequence都被Client修改,未修改部分就采用Process Model默认的处理方式。
3. Process Model和使用它的Sequence文件
理解了Process Model只是个框架,当Client Sequence File采用ParallelBatch Process Model时,由于这两个Process Model都具有并行测试的能力,所以Client Sequence File也将具有并行测试的能力。关于Client Sequence File如何选择Process Model,请参考:How Do I Specify a Particular Process Model for a Specific Sequence File?
Parallel Batch Process Model为何具有并行测试的能力呢。其实从前面介绍的Sequence Call StepExecution Options中可以得知,它们是给每个UUT都新建一个新的执行,每个UUT都有自己的执行窗口和报表对象,它们在独立的并行运行。关于Parallel Process ModelBatch Process Model的区别,请参考链接Benefits of Parallel Testing。使用Parallel Process Model,我们可以测试完全独立的UUT。比如4UUT的测试,其中一个UUT测试完成之后,可以立刻从测试夹具中取出来,然后测试夹具又装上新的UUT,在操作这些的同时,其它UUT仍处于测试之中,完全不受干扰。使用Batch Process Model时,同样以4UUT为例,我们以4UUT为一组,确保它们同时开始测试,然后同时结束。为什么有这个需求呢,因为有时候测试夹具是共用的,或者4UUT的负载是共用的等等。
3. 当我们在Sequence File中新增加一个StepStep的属性配置窗口有Synchronization一栏,从Batch Synchronization下拉列表中可以选择:No SynchronizationOne Thread OnlyParallel等。这些设置是专门针对Batch Process Model,也只有当Client Sequence File采用Batch Process Model时,这个设置才生效。那么串行(Serial)、并行(Parallel)的设置到底是起什么作用呢?
4. Synchronization设置
Batch Process Model将所有的UUT做为一组,确保它们能同时开始测试,并同时结束。以图5为例:假如有3UUT,每个UUT有三个测试项。使用Batch Process Model,则所有的UUT同时开始测试,其中UUT 0很快就完成了三项测试,那么它需要等待,直到UUT 1UUT 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 synchronizationUUT的第三测试项之间没有同步,彼此独立;
One thread only:只有一个线程执行了第三项测试,其它线程跳过;
Parallel:所有UUT的第三测试项同时开始,并同时结束;
Serial:某一时刻只能有一个UUT执行第三项测试,然后所有UUT按顺序执行完。
4. Type PaletteSynchronization中有Batch Synchronization Step,在Sequence File中增加该Step后,在其“Batch Synchronization Settings”中可以设置Section TypeSerialParallel、或One Thread Only。这个和第3点中描述的在Step的属性配置窗口的Synchronization一栏设置同步的效果是一样的。只不过采用该Step相当于显示的说明某测试项是有同步要求的。同样的,只有当Sequence File选择Batch Process Model时,该Step的设置才会生效。在图7中,通过Batch Synchronization Step,我们显示的同步Step 4Step 71.       Benefits of Parallel Testing:
http://www.ni.com/white-paper/3043/en#toc3
2.       When to Run a Sequence in a New Execution versus in a New Thread
http://www.ni.com/white-paper/4823/en
3.       Parallel Testing With TestStand:
http://www.ni.com/white-paper/5141/en
4.       Importing and Exporting Arrays
http://www.ni.com/white-paper/3481/en
5.       How Do I Specify a Particular Process Model for a Specific Sequence File?
http://digital.ni.com/public.nsf/allkb/CEDEDEB004083D6F862572B400779E46?OpenDocument
6.       What is a Process Model?
http://digital.ni.com/public.nsf/allkb/D9E7A0BDDDA2A87886256FD9007598D2?OpenDocument


附件:





报告日期: 11/29/2012
最近更新: 11/30/2012
文档编号: 63SMTV7K