1等价类划分方法
1.1定义
是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
1.2 划分等价类:
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
1.3 划分等价类的标准:
完备测试、避免冗余;
划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
并是整个集合:完备性;
子集互不相交:保证一种形式的无冗余性;
同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。
1.4 划分等价类的方法
在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100.
在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类;
在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
1.5 设计测试用例
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:
为每一个等价类规定一个唯一的编号;
设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
2 边界值分析方法
2.1 定义
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2.2 与等价划分的区别
边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
2.3 边界值分析方法的考虑
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
2.4 常见的边界值
对16-bit 的整数而言32767 和-32768 是边界
屏幕上光标在最左上、最右下位置
报表的第一行和最后一行
数组元素的第一个和最后一个
循环的第0 次、第1 次和倒数第2 次、最后一次
3 错误推测方法
3.1 定义
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
3.2 基本思想
列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
4 因果图方法
4.1 定义
是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
4.2 因果图法产生的背景
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
4.3 因果图介绍
4种符号分别表示了规格说明中向4种因果关系。
因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。
Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。Ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。
4.4 因果图概念
1.关系
a.恒等:若ci是1,则ei也是1;否则ei为0。
b.非:若ci是1,则ei是0;否则ei是1。
c.或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。
d.与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。
2.约束:输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
输入条件的约束有以下4类
a.E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。
b.I约束(或):a、b和c中至少有一个必须是1,即a、b 和c不能同时为0。
c.O约束(唯一);a和b必须有一个,且仅有1个为1。
d.R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。
输出条件约束类型: 输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。
4.5 采用因果图法设计测试用例的步骤
1.分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。
2.分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。
3.由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
4.把因果图转换为判定表。
5.把判定表的每一列拿出来作为依据,设计测试用例。
5 判定表驱动分析方法
5.1 定义
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
5.2 判定表的优点
能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。
5.3 判定表的四个组成部分
1.条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
2.动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
3.条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
4.动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
5.4 规则及规则合并
规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列
化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。
6 测试用例设计综合策略
1.数字列表项目Myers提出了使用各种测试方法的综合策略:
a.在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强。
b.必要时用等价类划分方法补充一些测试用例。
c.用错误推测法再追加一些测试用例。
d.对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
e.如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。
2.测试用例的设计步骤
a.构造根据设计规格得出的基本功能测试用例;
b.边界值测试用例;
c.状态转换测试用例;
d.错误猜测测试用例;
e.异常测试用例;
f.性能测试用例;
g.压力测试用例。
3.优化测试用例的方法
a.利用前面介绍的几种方法不断的对测试用例进行分解与合并;
b.在测试时利用发散思维构造测试用例。