因果图测试规范.docx
《因果图测试规范.docx》由会员分享,可在线阅读,更多相关《因果图测试规范.docx(12页珍藏版)》请在冰豆网上搜索。
因果图测试规范
因果图设计测试规范
前言
本文档介绍了针对终端软件测试的因果图法测试规范。
本测试规范中对移动终端用因果图法设计测试用例原理进行了详细的描述,并用实例加以说明如何使用该方法设计测试用例。
包括设计测试用例时的使用范围,设计测试用例的步骤等。
本测试规范介绍了一种通用的测试方法,需要根据被测终端软件需求才能形成具体的测试用例。
目录
1.简介4
2.作用4
3.因果图法基本规则4
3.1.因果图的基本符号4
3.2.因果图的约束符号5
4.测试用例设计步骤6
4.1.列出输入项和输出项7
4.2.分析因果关系7
4.3.标注约束形成因果图7
4.4.转换成判定表7
4.5.设计测试用例7
5.因果图法举例8
5.1.因果图法典型例子8
5.2.飞信添加好友实例10
6.因果图的优点和缺点13
6.1.优点13
6.2.缺点13
7.名词解释14
8.参考文档14
9.修改历史14
1.简介
因果图是一种测试用例的设计方法。
能从用自然语言书写的程序规格说明的描述中找出的“因”(输入条件)和“果”(输出或程序状态的改变),通过因果图转换为判定表,最后依据判定表进行测试用例的设计。
所生成的判定表可以不通过剪裁直接生成测试用例,但会导致测试用例的冗余。
即使是对于一般的小规模软件,画出的因果图也可能是非常庞大的,以至于依据因果图的写出测试用例数量很庞大,给测试工作带来沉重的负担。
2.适用范围
因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件涉及的各种组合情况。
因果图法一般和判定表结合使用,通过映射同时发生相互影响的多个输入来确定判定条件。
因果图法最终生成的就是判定表。
采用因果图法能帮助我们按照一定的步骤选择一组高效的测试用例,同时,还能指出程序规范中存在什么问题,鉴别和制作因果图。
因果图法着重分析输入条件的各种组合,每种组合条件就是“因”,它必然有一个输出的结果,这就是“果”。
3.因果图法基本规则
检查输入条件的组合不是容易的事情,即使把所有输入条件都划分成等价类,它们之间的组合情况也相当多。
如果没有系统性的方法来选择输入条件的一个子集,可能导致低效率的测试。
因此,必须考虑使用一种适合于描述这样一种情况的测试设计方法,对于多种条件的组合相应产生多个动作的形式,这就用到了因果图法。
3.1.因果图的基本符号
通常在因果图中用ci表示原因,用ei表示结果;各结点表示状态,可取值0或1。
0表示某状态不出现;1表示某状态出现。
因果图的基本关系,如下图:
●恒等:
若c1为1,则e1也为1;
若原因出现,则结果出现;若原因不出现,则结果也不出现
●非(~):
若c1为1,则e1为0;
若原因出现,则结果不出现;若原因不出现,则结果出现。
●或(∨):
若c1或c2或c3为1,则e1为1;
若三个原因中有一个出现,则结果出现;若三个原因都不出现,则结果不出现
●与(∧):
若c1和c2都为1,则e1为1;
若两个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。
3.2.因果图的约束符号
为了表示原因和原因之间可能存在的约束条件,在因果图中附加一些表示约束条件的符号。
如下图:
●从输入考虑,有四种约束;
1)异(Exclusiveor):
a和b最多有一个为1,即a和b不能同时为1。
2)或(In):
a、b、c至少有一个为1,即不能同时为0。
3)唯一(Only)
a、b必须且仅有一个为1。
4)要求(Request):
a是1时,b必须为1。
●从输出考虑,还有一种约束;
5)强制(mandatory):
表示当a是1时,b必须是0;而当a为0时,b的值不定。
4.测试用例设计步骤
利用因果图设计测试用例一般要经过以下几个步骤:
1.列出输入项、输出项;
2.分析因果关系
3.标注约束形成因果图
4.转换成判定表
5.设计测试用例
4.1.列出输入项和输出项
分析软件规格说明的描述中哪些是原因,哪些是结果。
原因常常是输入条件或者是输入条件的等价类,结果是输出。
并将输入和输出分左右罗列出来。
输入需要包括外部消息输入,内部预置的用户状态、数据配置等所有对系统输出有影响的因素。
4.2.分析因果关系
分析程序规格说明的描述中语义的内容,并将上一个步骤分析出来的输入和输出表示成连接各个原因与各个结果的因果初始图,给每个原因和结果赋予一个标识符,并加上原因和结果间的基本关系,通过这样的方式画出因果初始图。
4.3.标注约束形成因果图
由于语法和环境的限制,有些输入之间或输入和输出之间的组合情况不可能出现,因此需要分别找出输入与输入之间的约束关系,并在因果图上使用若干个特殊的符号标进行约束关系的标注。
4.4.转换成判定表
输入作为条件桩,输出作为动作桩,填入判定表中,根据因果图中输入和输出的基本关系,在判定表上对应的位置填写结果。
在填写判定表时,可以用1和0标识,也可以用真和假标识。
判定表中的列就是规则,因为有些条件之间存在约束关系,或者语法和环境的限制,很多的组合是无效的,所以在判定表中要将这些无效组合形成的规则去掉。
并且,为了达到减少测试用例的目的,需要合并相似的规则。
4.5.设计测试用例
根据简化后的判定表中的每一列编写测试用例,这时的输入和输出在判定表中已经明确的表示出来了。
还有一些在判定表简化过程中被合并的,以及因果约束关系和及语法和环境的限制,不能出现的输入组合,为了检验软件的容错性,还应针对因果图中的各个约束条件,灵活采用等价类划分法和边界值法等测试方法进行有针对性的编写测试用例。
5.因果图法举例
5.1.因果图法典型例子
通过下面的示例说明如何使用因果图方法设计测试用例。
如想对文件进行修改,输入的第一个字符必须是A或B,第二个字符必须是一个数字,如果第一个字符不正确,则给出信息L;如果第二个字符不正确,则给出信息M。
1.列出输入项和输出项
输入:
c1第一个字符是A
c2第一个字符是B
c3第二个字符是一个数字
输出:
e1给出信息L
e2修改文件
e3给出信息M
2.分析因果关系
其中10为中间结点,中间结点是导出结果的进一步原因。
3.标注约束形成因果图
4.转换成判定表
5.设计测试用例
如下图:
表中规则3里A3表示,在输入时第一字符为A,第二个字符为3;A8是它的等价输入。
以上是因果图法应用的一个典型例子,虽然很简单,但包含了因果图法的所有必须步骤。
因果图法在解决较为复杂的问题中是非常有效的,它能有力地帮助确定测试用例。
5.2.飞信添加好友实例
功能点描述:
Fetion添加好友时,能够自动将通讯录中的联系人电话或FetionID,添加到输入框内,如联系人不存在号码或FetionID,则给出提示。
如图
1.列出输入项、输出项:
经过分析可以找出以下输入项、输出项:
输入项:
1)通过FetionID添加
2)通过手机号码添加
3)联系人只有FetionID
4)联系人只有手机号码
输出项:
1)提示联系人没有FetionID
2)提示联系人没有手机号码
3)FetionID添加成功并显示
4)手机号码添加成功并显示
2.分析因果关系
将输入和输出按照习惯分别罗列,输入项在左,输出项在右。
然后根据从需求中分析出的基本关系将他们链接在一起。
结果如下图:
3.分析并标注约束
4.转换为判定表
如图,分析规则1、2、3、4和13、14、15、16不可能出现,所以没有动作项。
根据实际的语法以及环境,分析排除和合并规则后(具体简化原则请参阅判定表规范),形成的判定表如下图:
5.设计测试用例
通过判定表就可以清楚的看到输入项和输出项之间因果关系,根据这些明确的关系设计测试用例如下:
以上的步骤就是通过因果图法设计测试用例的使用流程。
6.因果图的优点和缺点
因果图和等价类以及边界值法一样,是一种基本的测试方法,等价类划分和边界值分析方法,都是着重考虑输入条件,而未考虑输入条件之间的联系和组合。
如果在测试时必须考虑输入条件的各种组合,则可能又会产生一些新的情况。
因果图法能非常的清晰和有力的帮助解决在这种情况下的测试用例的设计问题。
但并不是在某个项目中只应用因果图法,而是用于一个模块或者一个功能点,比如,包含复选的输入输出功能点,或存在复杂的输入和输入之间多种组合的页面。
有些很简单的页面,用因果图就不如用等价类或边界值法省力了。
6.1.优点
1.可以全面的覆盖输入和输入的组合对结果的不同影响;
2.可以清晰地归纳出输入条件之间的限制关系;
3.可以帮助分析需求规格说明书中的存在问题;
4.可以帮助在复杂输入条件下高效率的选择测试用例;
5.可以帮助提高测试用例发现问题的效率;
6.可以帮助学习测试思想,比如,抽象出的中间状态以及为导出结果进一步原因产生的中间结点。
6.2.缺点
1.利用因果图来设计测试用例时,作为输入和输出的因果关系,以及输入和输入之间的约束关系,很难从软件需求规格说明书中得出。
但可能从软件设计文档可以得出这些信息。
2.因果图必须依赖于判定表生成测试用例而不能独自生成测试用例,所以要对判定表使用比较熟练。
7.名词解释
条件桩:
列出了问题的所有条件。
通常认为列出的条件的次序无关紧要。
动作桩:
列出了问题规定可能采取的操作。
这些操作的排列顺序没有约束
规则:
任何一个条件组合的特定取值及其相应的要执行的操作称为规则。
(以上名词解释,如需更详细的定义,请参见《判定表测试规范》)
8.参考文档
1.《软件测试设计》电子工业出版社马均飞,郑文强编著
2.《软件测试需求分析与系统测试用例设计培训教材》51testing培训