软件测试第四章--因果图讲解
- 格式:ppt
- 大小:2.05 MB
- 文档页数:59
软件测试中的因果图与关系图测试在软件测试过程中,因果图和关系图是两个重要的测试工具。
它们能够帮助测试人员快速有效地识别和分析软件系统中的问题,进而提高软件的质量和可靠性。
本文将介绍软件测试中的因果图和关系图测试,并探讨它们的应用和优势。
一、因果图测试因果图也被称为鱼骨图或石川图,是一种用图形方式表示问题和其根本原因之间因果关系的工具。
因果图测试通过将问题分解为不同的因素,并分析它们之间的因果关系,帮助测试人员确定问题的根本原因。
在进行因果图测试时,首先需要明确要解决的问题。
然后,将问题作为因果图的鱼头,并在鱼骨上画出几条主要的鱼刺来表示可能的原因类别。
例如,对于一个软件崩溃的问题,可能的原因类别包括软件代码、硬件环境、用户操作等。
接下来,在每个原因类别下,进一步细分成具体的原因因素,直到找到问题的根本原因。
因果图测试的优势是可以快速识别问题的根本原因,帮助测试人员集中精力解决关键问题。
此外,因果图测试也有助于团队的协作和沟通,因为它提供了一种结构化的方法将问题和原因可视化。
二、关系图测试关系图测试也被称为流程图或数据流图测试,是通过图形方式表示软件系统的不同模块、组件或数据之间的依赖和交互关系。
关系图测试帮助测试人员识别系统中的数据流程、控制流程以及模块之间的关系,以便更好地进行测试和分析。
在进行关系图测试时,首先需要明确系统的不同组成部分,并标记它们之间的依赖关系。
然后,通过绘制有向箭头表示数据或控制的流向,以及模块之间的交互关系来创建关系图。
通过分析关系图,测试人员可以确定测试的重点和策略,以确保系统的功能和性能达到需求。
关系图测试的优势是帮助测试人员理清系统的架构和逻辑,快速定位问题区域,提高测试效率。
此外,关系图测试也有助于可视化系统的复杂性,促进团队成员之间的理解和合作。
三、因果图与关系图测试的应用因果图和关系图测试在软件测试中有着广泛的应用。
它们可以用于各个阶段的测试,包括需求分析、设计验证、单元测试、集成测试和系统测试等。
软件测试⽤例之因果图法
简介
从⽤⾃然语⾔书写的程序规格说明的描述中找出因(输⼊条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表。
因果图法即因果分析图,⼜叫特性要因图、⽯川图或鱼翅图,它是由⽇本东京⼤学教授⽯川馨提出的⼀种通过带箭头的线,将质量问题与原因之间的关系表⽰出来,是分析影响产品质量的诸因素之间关系的⼀种⼯具。
作⽤
因果图法是⼀种适合于描述对于多种输⼊条件组合的测试⽅法,根据输⼊条件的组合、约束关系和输出条件的因果关系,分析输⼊条件的各种组合情况,从⽽设计测试⽤例的⽅法,它适合于检查程序输⼊条件涉及的各种组合情况。
因果图法⼀般和判定表结合使⽤,通过映射同时发⽣相互影响的多个输⼊来确定判定条件。
因果图法最终⽣成的就是判定表,它适合于检查程序输⼊条件的各种组合情况。
采⽤因果图法能帮助我们按照⼀定的步骤选择⼀组⾼效的测试⽤例,同时,还能指出规范中存在什么问题,鉴别和制作因果图。
因果图法着重分析输⼊条件的各种组合,每种组合条件就是“因”,它必然有⼀个输出的结果,这就是“果”。
基本步骤
利⽤因果图导出测试⽤例⼀般要经过以下⼏个步骤:
1)分析软件规格说明的描述中哪些是原因,哪些是结果。
原因是输⼊或输⼊条件的等价类,结果是输出条件。
给每个原因和结果并赋予⼀个标识符,根据这些关系,画出因果图。
2)因果图上⽤⼀些记号表明约束条件或限制条件。
3)对需求加以分析并把它们表⽰为因果图之间的关系图。
4)把因果图转换成判定表。
5)将判定表的每⼀列作为依据,设计测试⽤例。
第4章动态测试技术(1)-黑盒测试方法1.黑盒测试概述1.定义:黑盒测试是依据软件的需求规约,设计测试用例,检查程序的功能是否符合需求规约的要求2.测试用例:由测试输入数据和预期结果组成(运行实际结果和预期结果不一致说明存在错误)3.主要的黑盒测试方法有等价类划分边界值分析错误猜测法因果图法判定表测试法基于场景测试法正交试验法比较测试2.等价类划分1.概述:1.1由于不能穷举所有可能的输入数据来进行测试,所以只能选择少量有代表性的输入数据,来揭露尽可能多的程序错误(设计测试用例遵循的原则之一)1.2等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例的输入数据等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试 也就是说,如果该子集中的某个输入数据能检测出某个错误,那么该子集中的其他输入数据也能检测出同样的错误;反之,如果该子集中的某个输入数据不能检测出错误,那么该子集中的其他输入数据也不能检测出错误例如:判断一个三角形的三条边是否构成等边三角形,那么{1,1,1}、{3,3,3,}、{8,8,8}……都是等效的。
1.3等价类划分方法把输入数据分为有效输入数据和无效输入数据(除测试正常的数据外,还应该测试不正常的数据)1.4有效输入数据指符合规格说明要求的合理的输入数据,主要用来检验程序是否实现了规格说明中的功能1.5无效输入数据指不符合规格说明要求的不合理或非法的输入数据,主要用来检验程序是否做了规格说明以外的事例如:程序判断三角形是否等边三角形,输入a、b、c三条边,如果a=b,b=c,a=c =>等边三角形,{0,0,0}、{-1,-1,-1}属于无效输入数据,不仅要检查正常的数据输入,还应驾车不正常的数据输入1.6在确定输入数据等价类时,常常还要分析输出数据的等价类,以便根据输出数据等价类导出输入数据等价类2.等价类划分设计测试用例的步骤2.1确定等价类根据软件的规格说明,对每一个输入条件(通常是规格说明中的一句话或一个短语)确定若干个有效等价类和若干个无效等价类可使用如下表格3.确定等价类的规则:3.1如果输入条件规定了取值范围,则可以确定一个有效等价类(输入值在此范围内)和两个无效等价类(输入值小于最小值及大于最大值)例如,规定输入的考试成绩在0..100之间,则有效等价类是“0 ≤成绩≤100”,无效等价类是“成绩<0”和“成绩>100”3.2如果输入条件规定了值的个数,则可以确定一个有效等价类(输入值的个数等于规定的个数)和两个无效等价类(输入值的个数小于规定的个数和大于规定的个数) 例如,规定输入构成三角形的3条边,则有效等价类是“输入边数= 3”,无效等价类是“输入边数<3”和“输入边数>3”3.3如果输入条件规定了输入值的集合(即离散值),而且程序对不同的输入值做不同的处理,那么每个允许的值都确定为一个有效等价类,另外还有一个无效等价类(任意一个不允许的值)(例如:交通信号灯“红”、“黄”,“绿”,是输入的集合,输入离散值) 例如,规定输入的考试成绩为优、良、中、及格、不及格,则可确定5个有效等价类和一个无效等价类3.4如果输入条件规定了输入值必须遵循的规则,那么可确定一个有效等价类(符合此规则)和若干个无效等价类(从各个不同的角度违反此规则)例如,在程序语言中对变量标识符规定为“以字母开头的……串”,那么有效等价类是“以字母开头的串”,而无效等价类有“以数字开头的串”、“以标点符号开头的串”…等3.5如果输入条件规定输入数据是整型,那么可以确定三个有效等价类(正整数、零、负整数)和一个无效等价类(非整数)3.6如果输入条件规定处理的对象是表格,那么可以确定一个有效等价类(表有一项或多项)和一个无效等价类(空表)以上只是列举了一些规则,实际情况往往是千变万化的,在遇到具体问题时,可参照上述规则的思想来划分等价类4.设计测试用例4.1在确定了等价类之后,建立等价类表,列出所有划分出的等价类,并为每个有效等价4.24.2.1设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止(一个测试用例覆盖多个有效等价类)4.2.2为每个无效等价类设计一个新的测试用例(无效等价类发现错误的概率比较大,每个无效等价类设计一个测试用例,提供测试的精度)4.3用等价类划分法设计测试用例的实例:某编译程序的规格说明中关于标识符的规定如下:标识符是由字母开头,后跟字母或数字的任意组合构成;标识符的字符数为1~8个;标识符必须先说明后使用;一个说明语句中至少有一个标识符;保留字不能用作变量标识符(例如:if、goto、int、float)4.3.1用等价类划分方法,建立输入等价类表4.3.2下面选取9个测试用例,它们覆盖了所有的等价类3.边界值分析1.概述:1.1边界值分析常用于对其他黑盒测试方法(特别是等价类划分方法)的补充1.2人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
测试⽤例(因果图法)⼀、应⽤场合在⼀个界⾯中,有多个输⼊条件,输⼊之间存在组合关系,不同的输⼊组合会产⽣不同的输出结果的组合,为了弄清输⼊和输出的关系,使⽤因果图 (控件组合)⼆、核⼼概念1、因——原因,输⼊动作。
2、果——结果,输出结果。
使⽤画图的⽅法找出输⼊(因)和输出(果)的关系 因果图法需要考虑:所有输⼊条件的相互制约关系以及组合关系输出结果对输⼊条件间的依赖关系。
也就是什么样的输⼊组合会产⽣怎样的输出结果。
即“因果关系”三、图形符号1、基本符号——表⽰输⼊和输出之间的关系(重点:恒、与)恒等*含义: 若原因出现,则结果出现;若原因不出现,则结果也不出现。
若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 2、约束(限制)符号——约束的永远都是同⼀类型:要不然同时限制⼏个输⼊之间的关系,要不然同是限制⼏个输出之间的关系。
互斥(E)*含义:表⽰a、b、c三个原因不会同时成⽴;最多有⼀个可能成⽴。
a、b、c不能同时为 1,即a/b/c中⾄多只有1包含(I)含义:表⽰a、b、c三个原因中⾄少有⼀个必须成⽴a、b、c⾄少有有⼀个1,即a,b,c中不能同时为0唯⼀(O)*含义:表⽰a、b、c三个原因中必须有⼀个成⽴,且仅有⼀个成⽴(唯⼀和互斥⾮常接近,就差⼀个默认值) 说明:互斥和唯⼀的区别:⼀般有默认选项—唯⼀,没有默认选项—互斥要求(R)*含义:表⽰a 出现时,则b 必须出现若a = 1 ,则b 必须= 1,即不可能a = 1 且 b = 0 屏蔽(M)含义:若a = 1 ,则b 必须= 0,若a = 0 时则 b 的值不⼀定重点要求: 互斥、唯⼀、要求 屏蔽⼀般在输出中常⽤。
测试用例设计--因果图定义因果图法就是从程序规格说明书的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表,最后为判定表中的每一列设计一个测试用例。
首先我们来了解一下因果图的基本符号:2. 应用的范围更复杂的条件组合,2^n,n比较多的时候3. 步骤1) 根据程序规格说明书描述的语义内容,分析并确定“因”和“果”;2) 将“因”和“果”表示成“因果图”;3) 在因果图上使用若干个约束符号来标明约束条件;4) 将得到的因果图转换成判定表;5) 为判定表中每一列所表示的情况设计一个测试用例。
4. 案例以中国象棋中马的走法为例子,具体说明:1、如果落点在棋盘外,则不移动棋子;2、如果落点与起点不构成日字型,则不移动棋子;3、如果落点处有自己方棋子,则不移动棋子;4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;5、如果不属于1-4条,且落点处无棋子,则移动棋子;6、如果不属于1-4条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子;7、如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
案例分析--因果图1) 根据程序规格说明书描述的语义内容,分析并确定“因”和“果”;原因:1、落点在棋盘外;2、不构成日字;3、落点有自方棋子;4、绊马腿;5、落点无棋子;6、落点为对方棋子;7、落点为对方老将。
结果:21、不移动;22、移动;23、移动己方棋子消除对方棋子;24、移动并战胜对方。
2) 将“因”和“果”表示成“因果图”,并标明约束条件;3) 将得到的因果图转换成判定表;11这个结点称做中间结点,是为了让因果图的结构更加明了,简化因果图导出的判定表。
分析得出以下两个结论:只有1、2、3、4都不成立时,产生11,跟5、6、7结合分别得出22、23、24三个结果;不管5、6、7哪个成立,只要1、2、3、4有一个成立,就产生结果21;再加上落点有自方棋子的状况。
1.引言等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系、相互组合等。
考虑输入条件之间的相互组合,可能会产生一些新的情况。
但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。
因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。
这就需要利用因果图(逻辑模型)。
因果图(Cause-EffectGraphing)提供了一个把规格转化为判定表的系统化方法,从该图中可以产生测试数据。
其中原因是表示输入条件,结果是对输入执行的一系列计算后得到的输出。
因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。
2.因果图介绍2.1图例说明1、4种符号分别表示了规格说明中向4种因果关系。
如图2-1所示。
图2-1 因果图关系2、因果图中使用了简单的逻辑符号,以直线联接左右结点。
左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。
3、ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。
ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。
2.2因果图概念1、关系(图2-1 因果图关系)①恒等:若ci是1,则ei也是1;否则ei为0。
②非:若ci是1,则ei是0;否则ei是1。
③或:若c1或c2或c3是1,则ei是1;否则ei为0。
“或”可有任意个输入。
④与:若c1和c2都是1,则ei为1;否则ei为0。
“与”也可有任意个输入。
2、约束输入状态相互之间还可能存在某些依赖关系,称为约束。
例如,某些输入条件本身不可能同时出现。
输出状态之间也往往存在约束。
在因果图中,用特定的符号标明这些约束。
如图2-2所示。
图2-2因果图约束.输入条件的约束有以下4类:①E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。
②I约束(或):a、b和c中至少有一个必须是1,即a、b 和c不能同时为0。
测试用例设计方法的介绍—因果图前言为什么需要测试用例 (2)1.测试用例设计的方法分类 (2)1.1.黑盒测试 (2)1.2.白盒测试 (2)1.3.灰盒测试 (3)2.因果图的具体介绍 (3)2.1.为什么么需要因果图 (3)2.2.因果图概念介绍 (4)2.2.1.布尔逻辑运算符 (4)2.2.2.因果图的约束关系表示法 (6)2.3.使用因果图设计测试用例的步骤 (8)2.3.1.分析需求 (8)2.3.2.确定原因和结果 (8)2.3.3.确定逻辑关系 (8)2.3.4.确定约束关系 (8)2.3.5.把因果图转换为决策表 (8)2.3.6.根据原因给出结果 (9)2.3.7.设计测试用例 (9)2.4.举例说明 (9)2.4.1.例子1 (9)2.4.2.例子2 (12)3.使用因果图的好处 (14)4...................................................................................................... 错误!未定义书签。
前言为什么需要测试用例测试的目的是在有限的资源下,尽可能多的找出系统的缺陷。
这就要求在测试中,尽可能完全的走完系统的所有流程,保证所有的分支都经过测试。
而测试过程是由人来执行的,不可能避免的会遗漏一些应该测试内容,这样就很容易出现测试不全面的问题。
再者,现有的软件开发大多都是迭代式进行的,需要对同一个功能反复测试多遍。
很有可能第一轮测试得比较全面,当进行第二轮的时候,可能也会遗漏某些点。
这种情况下,测试过程是由人控制的,具有盲目性,是不可控制的。
而测试用例就是把软件测试行为做一个科学化的组织和归纳,用来指导测试行为。
一般需求入基线后,测试人员开始介入项目,对需求进行分析,并根据自己对需求的理解设计出详细的测试用例。
这样在测试执行时,按照设计好的过程去执行,避免由于人为的原因使测试不全面。
测试⽤例--因果图、判定表法因果图、判定表法⼀、应⽤场合 在界⾯中有多个控件,控件之间有组合或限制关系,不同的输⼊组合会对应不同的输出结果,如果想弄清楚不同的输⼊组合到底对应哪些输出结果,可以使⽤因果图/判定表法。
(因果图/判定表法⽐较适合测试组合数量较少的情况,⼀般少于20种)⼆、因果图 因(原因):输⼊条件 果(结果):输出结果 因果图:就是通过画图的⽅式来表⽰输⼊条件(因)和输出结果(果)之间的关系。
三、因果图中的图形符号 1、基本图形符号 表⽰的是因与果之间的关系 恒等 如果a=1 ,那么b=1 如果a=0,那么b=0 与 与的含义:只有所有条件都为1时,结果为1,有任何⼀个条件为0(或者所有条件为0)那么结果为0. 简化:全1为1,有0为0 分析过程如下图: 与的图形符号: 或 或的含义:只有所有条件都为0时,结果为0,有任何1个条件为1(或者所有条件为1)时,结果为1 简化:全0为0,有1为1 或的关系图形符号: ⾮:取反 如果a=1,那么b=0 如果a=0,那么b=1 2、限制关系图形符号 限制关系图形要么在因(输⼊条件)之间,要么在果(输出结果)之间。
互斥(E-exclude) 含义:可以不选,如果选只能选1个 唯⼀(O-Only) 含义:有且只有1个(必须要选,⽽且只能选1个) 唯⼀和互斥的区别: 互斥可以不选 唯⼀必须要选1个 包含(I-include) 含义:⾄少选1个(可以多选,不能不选,最少得选1个) 要求(R-required) 含义:如果a=1 那么要求b必须是1,反之如果a=0,那么b值⽆所谓 屏蔽(M-masked) 含义:当a=1时,b=0 当a=0,b的值有可能是1,也有可能是0四、测试步骤 被测程序:交通⼀卡通充值模拟系统 步骤1:了解需求,找出所有的输⼊条件(因) 投币50元 投币100元 充值50元 充值100元 步骤2:找出所有的输出结果(果) 成功充值并退卡 找零 错误提⽰并退卡 将因和果填⼊《判定表》中 步骤3:找出输⼊条件之间的组合和限制关系。
测试⽤例设计--因果图1、为什么采⽤因果图测试⽤例的测试⽅法?判定表设计法在设计测试⽤例的过程中,考虑了输⼊与输⼊存在约束约束关系,没有考虑到输⼊与输出之间的约束关系。
简单的业务逻辑可以⽤判定表解决,复杂的约束关系就不太适合了。
2、什么是因果图设计法?因果图在软件测试⽤例的设计过程中,⽤于描述输⼊与输⼊、输⼊与输出之间存在的约束关系。
针对需求规格,将原因和影响分为2组4类:输⼊与输出、输⼊与输⼊。
输⼊与输出的关系主要有:恒等、⾮、与、或恒等:若输⼊条件发⽣,则⼀定会产⽣对应的输出,若输⼊条件不发⽣,则⼀定不会产⽣对应的输出⾮:若输⼊条件发⽣,则⼀定不会产⽣对应的输出,若输⼊条件不发⽣,⼀定会产⽣对应的输出与:多个输⼊条件,只有所有输⼊条件发⽣时,才会产⽣对应的输出或:在多个输⼊条件中,只要有⼀个发⽣,则会产⽣对应输出。
输⼊与输⼊之间同样存在异、或、唯⼀、要求等4种关系异(所有输⼊条件中⾄多有⼀个发⽣,可以⼀个条件条件也不发⽣)或(所有输⼊条件⾄少有⼀个输⼊条件发⽣,也可以多个条件共存)唯⼀(所有输⼊条件有且只有⼀个发⽣)要求(所有输⼊条件中只要有⼀个条件发⽣,其他的输⼊也会发⽣)3、因果图设计测试⽤例步骤?⼀、根据需求确定原因(输⼊)和结果(输出)⼆、根据需求中输⼊与输出的关系,输⼊与输⼊之间的关系,画出因果图三、画出判定表,根据因果图,得到最终的最终判定表四、根据判定表得到⽤例规则,在结合等价类和边界值⽤例设计⽅法细化测试⽤例4、因果图设计测试⽤例的优缺点?优点:能够帮助测试⽤例设计者快速了解需求,理解业务逻辑,然后快速设计判定表,从⽽得到所需的测试⽤例,在因果关系复杂的系统中,可采⽤该⽅法缺点:在使⽤规则的过程中注意规则的规模5、因果图设计测试⽤例⽰例?第⼀步:根据需求找出输⼊(原因)和输出(结果)输⼊(原因):第⼀列是A(C1)第⼀列是B(C2)第⼆列是数字(C3)中间结点:第⼀列为A或者B(C12)输出(果):输出M(E1),修改⽂件(E2),输出L(E3)第⼆步:把相同类型的原因放在⼀起,类似原因的中间节点连好线,对应的结果放在对⾯。