怎么画因果图?因果图绘图步骤详解
这些依赖关系在软件测试中称为“约束”,约束的类别可分为4种:E(Exclusive,异)、I(at least one,或)、O(one and only one,唯一)、R(Requires,要求),在因果图中,用特定的符号表明这些约束关系,如图所示。除了输入条件,输出条件也会相互约束,输出条件的约束只有一种——M(Mask,强制),在因果图中,使用特定的符号表示输出条件之间的强制约束关系,如下
因果图设计法
因果图法是一种利用图解法分析输人的各种组合情况的测试方法,它考虑了输入条件的各种组合及输入条件之间的相互制约关系,并考虑输出情况。例如,某一软件要求输人地址,具体到市区,如“北京→昌平区”“天津→南开区”,其中第2个输人受到第1个输入的约束,输人的地区只能在输人的城市中选择,否则地址就是无效的。像这样多个输人之间有相互制约关系,就无法使用等价类划分法和边界值法设计测试用例。因果图法就是为了解决多个输人之间的作用关系而产生的测试用例设计方法。
下面介绍如何使用因果图展示多个输人和输出之间的关系,并且学习如何通过因果图法设计测试用例。
1. 因果图
因果图需要处理输入之间的作用关系,还要考虑输出情况,因此它包含了复杂的逻辑关系,这些复杂的逻辑关系通堂用图示来展现,这些图示就是因果图。
因果图使用一些简单的逻辑符号和直线将程序的因(输人)与果(输出)连接起来,一般原因用ci表示,结果用ei表示,ci与ei可以取值“0”或“1”,其中“0”表示状态不出现,“1”表示状态出现。
ci与ei,之间有恒等、非(~)、或(V)、与(A)4种关系,如图下图所示。
上图中展示了因果图的4种关系,每种关系的具体含义如下所示。
(1)恒等:在恒等关系中,要求程序有1个输人和1个输出,输出与输入保持一致。若ci为1,则ei也为1;若ci为0,则ei,也为0。
(2)非:非使用符号“~”表示,在这种关系中,要求程序有1个输人和1个输出,输出是输入的取反。若ci为1,则ei为0;若ci为0,则ei为1。
(3)或:或使用符号“∨”表示,或关系可以有任意个输入,只要这些输入中有一个为则输出为1,否则输出为0。
(4)与:与使用符号“∧”表示,与关系也可以有任意个输入,但只有这些输入全部为输出才能为1,否则输出为0。
在软件测试中,如果程序有多个输入,那么除了输入与输出之间的作用关系之外,这些输人之间往往也会存在某些依赖关系,某些输入条件本身不能同时出现,某一种输人可能会影响其他输人。例如,某一软件用于统计体检信息,在输人个人信息时,性别只能输入男或女,这两种输人不能同时存在,而且如果输入性别为女,那么体检项就会受到限制。这些依赖关系在软件测试中称为“约束”,约束的类别可分为4种:E(Exclusive,异)、I(at least one,或)、O(one and only one,唯一)、R(Requires,要求),在因果图中,用特定的符号表明这些约束关系,如图所示。
上图展示了多个输入之间的约束符号,这些约束关系的含义具体如下所示。
(1) E(异):a和b中最多只能有一个为1,即α和b不能同时为1。
(2) I(或):a、b和c中至少有一个必须是1,即a、b、c不能同时为0。
(3)O(唯一):a和b有且仅有一个为1。
(4) R(要求):a和b必须保持一致,即a为1时,b也必须为1;a为0时,b也必须为0。
上面这4种都是关于输入条件的约束。除了输入条件,输出条件也会相互约束,输出条件的约束只有一种——M(Mask,强制),在因果图中,使用特定的符号表示输出条件之间的强制约束关系,如下图所示。
在输出条件的强制约束关系中,如果a为1,则b强制为0;如果a为0,则b强制为1。
2. 因果图法设计测试用例的步骤
使用因果图法设计测试用例需要经过以下几个步骤。
(1)分析程序规格说明书描述内容,确定程序的输入与输出,即确定“原因”和“结果”。
(2)分析得出输入与输入之间、输入与输出之间的对应关系,将这些输入与输出之间的关系使用因果图表示出来。
(3)由于语法与环境的限制,有些输入与输入之间、输入与输出之间的组合情况是不可能出现的,对于这种情况,使用符号标记它们之间的限制或约束关系。
(4)将因果图转换为决策表。决策表将在下一小节介绍。
(5)根据决策表设计测试用例。
因果图法考虑了输入情况的各种组合以及各种输入情况之间的相互制约关系,可以帮助测试人员按照一定的步骤高效率地开发测试用例。此外,因果图是由自然语言规格说明转化成形式语言规格说明的一种严格方法,它能够发现规格说明书中存在的不完整性和二义性,帮助开发人员完善产品的规格说明。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)