因果图分析法研究与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因果图分析法研究与实现
因果图分析法是编写测试用例的重要方法之一,属于黑盒测试的范畴。因果图分析法原理简单,步骤明确,应用广泛。但目前诸多参考教材对于该方法的介绍基本都采用了相对复杂而且相类似的实例,对学习者来说有一定的困难。结合多年软件测试用例设计的经验,在实践的前提下,就因果图分析法设计测试用例给出了详尽的介绍,特别是针对因果图转换成判定表这一步骤,提出了明确简洁的转换办法并结合浅显易懂的实例加以实现,从而进一步简化了因果图分析法的应用,也为广大学习者提供了一定的参考价值。
标签:黑盒测试;测试用例;因果图;判定表
1引言
随着软件质量受重视程度的日益增加,软件测试在国内软件项目开发中也越来越受重视,并得以迅速发展,而测试用例是软件测试全部过程的核心,是测试执行环节的基本依据。因果图分析法是设计测试用例的重要方法之一,它属于黑盒测试的范畴。因果图分析法原理简单,步骤明确,但由于目前诸多参考教材对于该方法的介绍基本都采用了相对复杂实例,特别当把因果图转换成判定表这一步骤,目前还没有提出过明确性的方法,所有的实例都是直接给出答案,而没有解释方法,这样就给学习者在理解上造成一定的困难,本文在教学实践前提下,就因果图如何转换为判定表提出了一种简易可行的方法,并结合实例加以实现。
2方法介绍
2.1因果图定义
因果图(cause effect graphics)是一种形式化语言,是一种组合逻辑网络图。它是把输入条件视为“因”,把输出或程序状态的改变视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。因果图法的基本原理是通过因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表的每一列设计一个测试用例。
2.2产生背景
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图。因果图法是一种帮助人们系统地选择一组高效率测试用例的方法。
2.3因果图基本符号和条件约束
(1)4种符号分别表示了规格说明中4种因果关系,如图所示:
①恒等:若a=1,则b=1;若a=0,则b=0;
②非:若a=1,则b=0,若a=0,则b=1;
③或(∨):若a=1或b=1或c=1,则d=1;若a=b=c=0,则d=0;
④与(∧):若a=b=c=1,则d=1;若a=0或b=0或c=0,则d=0。
图1
(2)因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。
(3)Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。Ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。
(4)约束:是指输入状态相互之间还可能存在某些依赖关系。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
输入条件的约束有以下4类:
①E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。
②I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0。
③O约束(唯一):a和b必须有一个,且仅有1个为1。
④R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。
输出条件约束类型:只有M约束(强制):若结果a是1,则结果b强制为0。
2.4利用因果图生成测试用例的基本步骤(如图2)
图2
(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等级类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间
对应的关系,根据这些关系,画出因果图。
(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件(可略)。
(4)把因果图转换为判定表。(重点改进之处)
按照由上至下,从左往右的顺序依次转换各关系,具体方法如下:
①恒等:原因为真(1)|结果为真(1),原因为假(0)|结果为假(0);
②非:原因为真(1)|结果为假(0)|原因为假(0),结果为真(1);
③或(∨):原因分别取真一次,结果为真;
④与(∧):原因同时取真一次,结果为真。
(5)把判定表的每一列拿出来作为依据,设计测试用例(测试用例在判定表中)。
3因果图实例推导
某软件规格说明书包含“订货单处理程序”的处理逻辑描述为:如果订货金额不足500元且未过期,则向顾客发出批准单和提货单,已过期的什么通知也不发;如果订货金额超过500但不足1000,则发出批准单和提货单,对已经过期的发过期通知单;如果订货金额超过1000,不论是否过期,都要发出批准单和提货单。
第一步:对说明进行分析,得到原因和结果:
原因:1——订货金额不足500;
2——订货金额超过500但不足1000;
3——订货金额超过1000;
4——已过期;
5——未过期。
结果:21——发批准单和提货单;
22——发过期通知单;
23——什么通知也不发。
第二步:画出因果图。
画因果图时,原因在左,结果在右,由上而下排列,并根据功能说明书中规定的原因和结果之间的关系,用上述基本符号连接起来。在因果图中还可以引入一些中间节点。
图3
将原因和结果用因果图的逻辑符号连接起来,其中编号为11的中间结点是导出结果的进一步原因。
第三步:转换成判定表。
判定表(DecisionTable)是分析和表达多逻辑条件下执行不同操作的情况下的工具。判定表通常由四部分组成:
(1)条件桩(ConditionStub):列出了问题的所有条件。
(2)动作桩(ActionStub):列出了问题规定可能采取的操作。
(3)条件项(ConditionEntry):列出针对它左列条件的取值。
(4)动作项(ActionEntry):列出了在条件项的各种取值情况下应该采取的动作。
表1判定表(由上至下,从左往右排序号;设订货金额为W)
4结语
通过以上介绍,可以得到一个快捷而简单的利用因果图设计测试用例的办法,尤其在将因果图转换成判定表时,已经变得有章可循,实际上这个办法是通用的,对于所有的实例都是可以实现的,学习者可以尝试。
参考文献
[1]徐芳.软件测试技术[M].北京:机械工业出版社,2007.
[2]朱少民.全程软件测试[M].北京:电子工业出版社,2007.