PICT工具安装后会打开一个帮助页面《PICT 3.3 User’s Guide》,在pict同目录下。很奇怪在微软主页中居然找不到了,从百度文库中有搜到同样的文档http://wenku.baidu.com/link?url=9hQVCuykWtOIGj__bF54mHyEErS-vl3im6iGUZ7VJqPMby42ZFc-q9ZFPEOIVrt4y3I9c-iZ3dA-Wlr4OBevyNTBwKDDkdyCU4jIO-JX847。文档中对Sub-Models的解释为Sub-Models允许用户自己对参数进行整合,以提高这部分集合的测试覆盖率。具体到使用效果上,从之前下载的一些文档上加上自己的实验,总结为一句话:优先对集合中元素进行组合,保证输出结果中任意order个数的元素组合一次,再将这些输出看做为一个等价类,等价类中的元素与其他参数结对生成最终用例。
Sub-Models的格式如下:
{<ParamName1>,< ParamName2>, <ParamName3>, ... } @< Order>
以帮助页面中的内容为例:
{ PLATFORM, CPUS, RAM, HDD } @ 3 以后称集合1
{ OS, IE } @ 2 以后称集合2
集合1中有4个参数,@符号后的数字为3,表明输出结果中任意三个元素组合都要至少出现一次,比如ia64 Dual 64GB肯定能够在结果中找出来,如:ia64 Dual 64GB SCSI WinXP 5.0 SQLServer,如果想进一步验证,可以只保留PLATFORM,CPUS,RAM和HDD,输出结果验证后也是如此
集合2中有2个参数,@符号后的数字为2,表明输出结果中任意两个元素组合都要至少出现一次,比如amd64 IDE肯定能够在结果中找到符合的条目,如:amd64 Quad 64GB IDE Win2K3 5.5 Exchange,如果想进一步验证,按照上面的方法只保留OS和IE,因为输入结果较少,打印如下:
OS IE
WinXP 5.5
Win2K 5.5
NT4 4.0
Win2K3 5.0
WinXP 5.0
Win2K3 4.0
Win2K 4.0
NT4 6.0
Win2K3 6.0
NT4 5.5
WinXP 6.0
NT4 5.0
Win2K 6.0
Win2K3 5.5
WinXP 4.0
Win2K 5.0
结果发现,这是一个全覆盖,单同时也满足两两配对,即任意两个元素的组合都至少出现一次
如果将集合2中order改为1,结果如下
OS IE
NT4 5.0
WinXP 4.0
Win2K 6.0
Win2K3 5.5
这个结果满足集合中任意1个元素的组合至少出现一次,一个元素因为没有组合的概念,所以换句话说就是每个元素至少出现一遍,那么输出个数将会是包含元素最短的参数的元素个数,这里两个参数的个数都是4,所以输出也就是4
从上面的分析可以得出一些特性,当order为1时,只要每个元素出现一次即可;当order为集合元素个数时,则是笛卡尔全覆盖;如果为2时,则是默认的配对组合。
需要注意的是当1<order<N(集合元素个数)时,剩余的部分怎么匹配?比如集合1中order等于3,剩余的4-3=1参数应该怎么配对?这里不要陷入这个牛角尖,3表明的是输出结果中任意3个元素的组合至少出现一次,一条输出中有4个元素,每三个元素要求尽量覆盖到空的没有覆盖到的组合当中,结果要求最少的用例个数将这些三种元素组合覆盖完全,所以是不存在剩余的那1个参数要怎么分配的问题的。
以上解释的是优先对集合中元素进行组合,保证输出结果中任意order个数的元素组合一次这句话,下面解释后面半句再将这些输出看做为一个等价类,等价类中的元素与其他参数结对生成最终用例。
之前的操作都有一个保留本集合参数,删除其他参数的过程,这样就得到了集合的输出结果,然后将这些输入结果看做是一个等价类,所以参数放置到条件当中,再把原集合删除,再进行结对测试。这里一步一步来,首先是集合1,输出结果为37条,也写成参数样式:
SET1: ia64 Dual 4GB IDE, amd64 Dual 128MB IDE, ia64 Quad 64GB IDE……(37条)
注意:参数中的元素默认使用半角逗号(,)分隔
将这个参数放置到原参数当中
PLATFORM: x86, ia64, amd64
CPUS: Single, Dual, Quad
RAM: 128MB, 1GB, 4GB, 64GB
HDD: SCSI, IDE
SET1: ia64 Dual 4GB IDE, amd64 Dual 128MB IDE, ia64 Quad 64GB IDE……(37条)
OS: NT4, Win2K, WinXP, Win2K3
IE: 4.0, 5.0, 5.5, 6.0
APP: SQLServer, Exchange, Office
{ PLATFORM, CPUS, RAM, HDD } @ 3
{ OS, IE } @ 2
删除原集合1,得到:
SET1: ia64 Dual 4GB IDE, amd64 Dual 128MB IDE, ia64 Quad 64GB IDE……(37条)
OS: NT4, Win2K, WinXP, Win2K3
IE: 4.0, 5.0, 5.5, 6.0
APP: SQLServer, Exchange, Office
{ OS, IE } @ 2
再对集合2做同样操作,集合2 的输入写成参数格式:
SET2: WinXP 5.5,Win2K 5.5,NT4 4.0,Win2K3 5.0,WinXP 5.0,Win2K3 4.0,Win2K 4.0,NT4 6.0,Win2K3 6.0,NT4 5.5,WinXP 6.0,NT4 5.0,Win2K 6.0,Win2K3 5.5,WinXP 4.0,Win2K 5.0(16条)
加入到原参数当中
SET1: ia64 Dual 4GB IDE, amd64 Dual 128MB IDE, ia64 Quad 64GB IDE……(37条)
OS: NT4, Win2K, WinXP, Win2K3
IE: 4.0, 5.0, 5.5, 6.0
SET2: WinXP 5.5,Win2K 5.5,NT4 4.0,Win2K3 5.0,WinXP 5.0,Win2K3 4.0,Win2K 4.0,NT4 6.0,Win2K3 6.0,NT4 5.5,WinXP 6.0,NT4 5.0,Win2K 6.0,Win2K3 5.5,WinXP 4.0,Win2K 5.0(16条)
APP: SQLServer, Exchange, Office
{ OS, IE } @ 2
删除集合2,得到:
SET1: ia64 Dual 4GB IDE, amd64 Dual 128MB IDE, ia64 Quad 64GB IDE……(37条)
SET2: WinXP 5.5,Win2K 5.5,NT4 4.0,Win2K3 5.0,WinXP 5.0,Win2K3 4.0,Win2K 4.0,NT4 6.0,Win2K3 6.0,NT4 5.5,WinXP 6.0,NT4 5.0,Win2K 6.0,Win2K3 5.5,WinXP 4.0,Win2K 5.0(16条)
APP: SQLServer, Exchange, Office
这样就得到了最终的参数列表,再做结对测试,就可以输出最终的结果