|
|
|
|
移动端

2.6.3 从因果图生成判定表(1)

《软件测试基础教程》第2章基于需求的测试生成,本章主要介绍从非形式化或形式化定义的软件需求生成测试集的技术。这些技术,有的可以自动地执行,而大部分则需测试人员付出艰辛的劳动,特别是在测试大型软件时。本章所介绍的大部分测试技术属于黑盒测试,因为生成测试集时不需参考被测软件的源代码。本节为大家介绍从因果图生成判定表。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-17 22:59

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.6.3 从因果图生成判定表(1)

现在,讨论如何从因果图生成判定表。判定表中的每一列表示一个输入值的组合,即一个测试用例。每个条件、结果在判定表中都有相对应的一行。因此,可以将判定表看作是一个N×M的矩阵,其中,N表示条件与结果的个数之和,M表示测试用例数。

判定表中的元素究竟取值为1还是为0,依赖于其对应的各条件为真或为假。对于某个结果,若取值为1或0,则分别对应于该结果“出现”或“不出现”。下面给出从因果图(CEG)生成判定表(DT)的算法,记为CEGDT。

从因果图生成判定表的算法CEGDT

输入:包含原因C1,C2,...,Cp和结果Ef1,Ef2,...,Efq的因果图CEG。

输出:包含N=p+q行和M列的判定表DT,其中,M依赖于因果图中原因、结果之间的关系。

Begin of CEGDT

/*i为一个索引,表示下一个将被处理的结果。

next_dt_col:判定表中的下一个空列。

Vk:由1和0组成的长度为p+q的向量。

Vj:1≤j≤p,表示原因Cj的状态。

Vl:p<l ≤ p+q,表示结果Efl-p是否发生。

*/

步骤1将DT初始化为空判定表。

next_dt_col=1

步骤2for i=1 to q,执行如下步骤。

2.1选取下一个将被处理的结果。

Let e=Efi

2.2求所有导致结果e发生的原因组合。

假设结果e发生。从e开始,对因果图进行回溯,确定导致结果e发生的条件C1,C2,...,Cp的组合。可以使用后面章节将要讨论的启发式方法,以避免测试用例数量发生组合爆炸。同时,确保原因组合能够满足各原因之间的约束关系。

设V1,V2,...,Vmi为可能导致结果e发生的原因组合,因为已假设e发生,即e处于1状态,因此,至少有一个原因组合为真,即mi≥1。根据结果Efl-p针对Vk中的原因组合是否发生,置Vk(l)=1或Vk(l)=0,p<l≤p+q。

2.3构造判定表。

从next_dt_col开始,增加V1,V2,...,Vmi,作为判定表的后续列。

2.4修正判定表中下一个可用的列。

Let next_dt_col=next_dt_col+mi

算法结束时,next_dt_col-1就是生成的测试用例数。

End of CEGDT

在生成测试用例的过程中,可以自动执行CEGDT。在步骤2.2中,测试人员需要利用启发式方法,以避免生成测试用例的数量发生组合爆炸。

在讨论启发式方法之前,先看一个简单的未在步骤2中采用启发式方法的CEGDT应用实例。

例2.20考虑图2-15所示的因果图,其中包括4个原因:C1、C2、C3、C4;2个结果:Ef1、Ef2;3个中间结点,分别标记为1、2、3。

 
图2-15 用于说明算法CEGDT的因果图

接下来,根据CEGDT一步一步地生成判定表。

在步骤1中,将判定表初始化为一张空表,置next_dt_col=1。

接下来是步骤2,首先,取i=1。

根据步骤2.1,e=Ef1。

根据步骤2.2继续下去,从e开始回溯,确定导致结果e发生的所有原因组合。当中间结点2为1状态时,必将导致结果e发生。从中间结点2开始回溯,可以进一步发现,中间结点1和原因C3的以下3种状态组合将导致e发生:(0,1),(1,1)和(0,0)。

继续从中间结点1开始回溯,从而确定原因C1,C2对结点1的影响。导致中间结点1为1状态的C1,C2组合为(1,1);导致中间结点1为0状态的C1,C2组合为(1,0),(0,1)和(0,0)。将这些组合与前面导出的中间结点1与C3的组合进行合并,可以得到如下7个导致结果e发生的C1、C2、C3的原因组合:

 
接着,从图2-15中可以得知,C3与C1之间是R约束关系,即若C3为1状态,则C1也必须为1状态。该约束关系使上表中的第二、第三行组合不可能存在。因此,获得5个导致结果e发生的C1、C2、C3的原因组合:
 
在上表后增加三列,分别代表C4、Ef1、Ef2。将C4列全置为0状态,并根据C1、C2、C3、C4的组合分别填上Ef1、Ef2的取值,这样,可获得如下5个向量。此时m1=5,执行完CEGDT的步骤2.2,且没有使用任何启发式方法。
 


【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

PHP5与MySQL5 Web开发技术详解

本书是目前中文版本第一个真正介绍PHP 5及MySQL 5新增语法与功能的权威宝典! 本书本着精、全、要三宗旨,从理论中延伸,从实践中深入,详...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊