初学者功能性测试用例编写方法
常用功能性测试方法
A .1 边界值测试 A .1.1 定义
边界值测试是对输入或输出的边界值进行测试的一种黑盒测试方法。 注:通常边界值分析法是作为等价类测试法的补充。
A .1.2 适用范围
a) 分类:
1) 一般边界值测试; 2) 健壮性测试; 3) 最坏情况测试; 4) 特殊性测试。
A .1.3 测试过程
a) 用例格式定义:测试对象、测试用例唯一编号、输入数据、预期输出数据。 b) 测试步骤:
1) 分析测试规格说明书,确定测试对象的边界值; 2) 根据测试对象的边界值按要求生成测试用例; 3) 根据2) 所在的测试用例完成测试; 4) 根据测试结果填写缺陷报告。
A .1.4 应用实例
实践经验表明,程序往往在处理边界情况时发生错误。边界情况值输入等价类和输出等价类边界的情况。因此检查边界情况的测试用例比较高校的,可以查出更多错误。 例如,在做三角形设计时,要输入三角形的三个边长:A 、B 和C 。这三个数值应当满足A>0,B>0,C>0,A+B>C,A+C>B,B+C>A,才能都成三角形。但如果把六个不等式的中任何一个“>”错写成“≥”,那样不能构成三角形的问题恰出现在容易被疏忽的边界附近。 使用边界值方法设计测试用例时一般与等价类划分结合起来。但它不是从一个等价类中选择一个例子作为代表,而是将测试边界情况作为重点目标,选取正好=、刚刚>或刚刚
1) 如果输入条件规定了值得范围,可以选择正好等于边界值得数据作为合理的测试用
例。同时还要选择刚好越过边界值得数据作为不合理的测试用例。如输入位数的范
围是(0,8),可以取0、8、9等位数的值作为测试用例数据。
2) 对每个输入条件指出了输入数据的个数,则按最大个数、最小个数、比最小个数少
1、比最大个数多1等情况分别设计测试用例。如一个输入文件可包括1-255个记录,则分别设计有1个记录、255个记录,以及0个记录和256个记录的输入文件的测试用例。
3) 对每个输出文件分别按照以上原则(1)或(2)确定输出的边界情况。假如某社区
卫生综合管理统计规定,只能查询入园日期为1995-2004年的孩子信息,可以设计测试用例,使得查询范围内的某一年后的孩子的信息,还需设计查询1995年、2005年孩子信息的测试用例(不合理输出等价类)
由于,输出值的边界不与输入值得边界相对应,所以要检查输出值得边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。
4) 如果程序的规格说明给出输入或输出域是有序集合(如顺序文件、线性表、链表等),
则应选取集合的第一个元素和最后一个元素作为测试用例。 “报表日期”边界值分析法测试用例
A .2 等价类测试 A .2.1 定义
等价类测试是把所有可能的输入数据(即程序的输入域)划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种常用的黑盒测试用例设计方法。
A .2.2 适用范围
a) 分类
1) 弱一般等价类测试; 2) 强一般等价类测试; 3) 弱健壮等价类测试; 4) 强健壮等价类测试; b) 划分等价类的标准
1) 完备测试、避免冗余;
2) 划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并
是整个集合;
3) 并是整个集合:完备性;
4) 子集互不相交:保证一种形式的无冗余性;
5) 同一类中标识(选择)一个测试用例,同一个等价类中,往往处理相同,相同
处理映射到“相同的执行路劲”。
c) 划分等价类方法
1) 在输入条件规定了一个取之范围或值的个数的情况下,则可以确定一个有效等
价类和两个无效等价类;
例如,输入值是儿童的编号位数,取值范围为“08”。
2) 在输入条件规定了输入值得集合或者规定了“必须如何”的条件的情况下,可
以确立一个有效等价类和一个无效等价类;
例如,输入条件上说明教师的职称可为助教、讲师、副教授、教授四种职称之一,则分别取这4个值作为4个合理等价类,另外把4个职称以外的任何职称作为不合理等价类。
3) 在输入条件是一个布尔量的情况下,可以确定一个有效等价类和一个无效等价
类;
4) 在规定了输入数据的一组值(假定n 个),并且程序要对每一个值分别处理的
情况下,可确定n 歌有效等价类和一个无效等价类; 5) 在规定输入数据必须遵守的规则的情况下,可确定一个有效等价类(符合规则)
和若干个无效等价类(从不同角度违反规则);
6) 在确知划分的等价类中各个元素在程序处理中的方式不同的情况下,则应再将
等价类进一步的划分为更小的等价类。
A .2.3 测试过程
a) 用例格式定义:在确立的等价类后,可建立等价类表,列出说有划分的等价类输入条件,有效等价类、无效等价类,然后划分出等价类中以下的三个原则设计测试用例。
1) 为每一个等价类规定一个唯一的编号; 2) 设计一个新的测试用例,使其可能多地覆盖尚未被覆盖的有效的等价类,重复
这一步,直到所有的有效等价类都被覆盖为止; 3) 设计一个新的测试用例,使其仅覆盖一个尚未覆盖的无效等价类,重复这一步,
直到所有的无效等价类都被覆盖为止。
b) 测试步骤
1) 分析软件规格说明,确定测试对象的等价类划分; 2) 根据测试对象的边界值按要求生成测试用例; 3) 根据2) 所在的测试用例完成测试; 4) 根据测试结果,填写缺陷报告。
A .2.4 应用实例
例:某报表系统,要求用户输入报表的日期。假设日期限制在2000年1月至2008年12月,即系统只能对该段日期由年月的六位数字字符组成,前四位代表年,后两位代表月。 现用等价划分法设计测试用例,来测试程序的“日期检查功能”。 划分等价类标号。划分成三个有效等价类,七个无效的等价类如表所示:
1. 为合理等价类设计测试用例,对于表中编号1、5、8对应的三个合理等价类,用一
2.
3. 注意在7个不合理的测试用例中,不能出现相同的测试用例,否则相当于一个测试
用例覆盖了一个以上不合理等价类,使程序测试不完全。 4. 等价类划分方法比随机选择测试用例要好的多,但这个方法的缺点是没有选择某些
高的、能够发现更多错误的测试用例。
A .3 错误推测法
在测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性的编写检查这些错误的测试用例,这就是错误推测法。 错误推测法没有确定的步骤,凭经验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。
A .4 基于决策表测试 A .4.1 定义
依据测试需求,使用决策表生成测试用例的方法。
A .4.2 适用范围
a) 分析复杂逻辑关系的情况下使用; b)
1) 2) 3) 4) 5)
条件桩:列出了问题得所有条件。通常认为列出的条件的次序无关紧要; 动作桩:列出了问题规定可能采取的操作。这些操作的排列顺序没有约束; 条件项:列出针对它左列条件的取值。在所有可能的情况下的真假值; 动作项:列出在条件项的各个取值情况下应该采取的动作; 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然判定表中列出多少条件取值,就有多少条件规则,即条件项和动作项有多少列; 6) 化简:就是规则合并有两条或多条规则具有相同的工作,并且其条件项存
在着极为相似的关系。
A .4.3 测试过程
a) b) c) d)
分析软件规格说明,根据需求将测试对象的相关内容填入决策表; 根据决策表生成测试用例; 依据测试用例完成测试;
根据测试结果,填写缺陷报告。
A .5 因果图测试 A .5.1 定义
因果图测试是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。
A .5.2 适用范围
它适合用于检查程序输入条件的各种组合情况。 注:等价类分析法和边界值分析法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系
a) 4种符号分别表示了规格说明中间4种因果关系;
(a )恒等
(b )非
(C )或
(d )与
b) 因果图中使用了简单的逻辑符号,以直线连接左右结点。左结点表示输入状态(或
称原因),右结点表示输出状态(或称结果);
c) C1表示原因,通常置于图的左部:E1表示结果,通常置于图的右部。 C1和E1均
可取值0或1,0表示某状态下不出现,1表示某 状态下出现; d) 因果图概念
1) 关系
1. 恒等:若C1是1,则E1也是1;否则E1为0; 2. 非:若C1是1,则E1是哦0;否则E1是1;
3. 或:若C1或C2或C3是1,则E1是1;否则E1为0。“或”可有任意个
输入;
4. 与:若C1或C2都是1,则E1为1;否则E1为0。“与”也可以有任意个
输入;
2) 约束 输入状态相互之间还可能存在某些依赖关系,称为约束。例如,某些输入条件本身不可能同时出现。输出状态之间也存在约束。在因果图中,用特定的符号标明这些约束。
I (或)
(1 输入条件的约束有以下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;
(2 输出条件的约束类型
输出条件的约束只有M 约束(强制):若结果a 是1,则结果b 强制为0.
A .5.3 设计步骤
a) 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些
是结果(即输出条件),并给出每个原因和结果赋予一个标识符;
b) 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关
系,根据这些关系,画出因果图; c) 由于语法或环境限制,有些原因与原因之间,原因和结果之间的组合情况不可能出
现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件; d) 把因果图转换为判定表;
e) 把判定表的没一个列拿出来作为依据,设计测试用例。
A .5.4 测试过程
a) 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些
是结果(即输入条件),并给每个原因和结果赋予一个标识符; b) 分析软件规格说明描述中的语义,找出原因和结果之间,原因和原因之间对应的关
系,根据这些关系画出因果图; c) 由于语法或环境限制,有些原因和原因之间,原因和结果之间的组合情况不可能出
现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件; d) 把因果图转换为判定表;
e) 把判定表的每一列拿出来作为依据,设计测试用例。
A .6 控制流测试 A .6 .1适用范围
分类:语句复杂、判定复杂、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
1) 语句覆盖
为了提高发现错误的可能性,在测试时应该执行到程序的每一个语句。语句覆盖是指设计足够的测试用例,是被测试程序中的每个语句至少执行一次。 2) 判定覆盖
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也成为分支覆盖。 3) 条件覆盖
条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。 4) 判定/条件覆盖
判定/条件覆盖指设计足够的测试用例,使得判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。 5) 条件组合覆盖
条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例没事的每个判定表达式中条件的各种可能的值的组合都至少出现一次。 6) 路径覆盖
路径覆盖是指设计足够的测试用例,覆盖被测试程序中所有的可能的路径。
A .6 .2 测试过程
a) 用例格式定义:测试对象、测试用例唯一编号、输入数据、预期输出数据。 b) 测试步骤:
1) 分析软件规格说明,将程序绘制成程序控制流程图; 2) 根据需求选择覆盖测试方法;
3) 根据所选用的覆盖测试方法生成测试用例; 4) 依据测试用例完成测试;
5) 根据测试结果,填写缺陷报告。
A .7基本路径覆盖测试 A .7.1定义
基本路径覆盖测试法是在程序控制流图的的基础上,通过分析控制构造的环路复杂性,到处基本可执行路径集合,从而设计测试用例的方法。
A .7.1.1 测试过程
a) 程序的控制流程图:描述程序控制流的一种图示方法;
b) 程序圈复杂度:McCabe 负载性度量。从程序的环路复杂性可导出程序基本路径集
合中的独立路劲条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 确定圈复杂度方法:
V (G )=区域数;区域数:程序控制流程图中所划分区域的个数;
V (G )=e-n+2;e 表示程序控制流圈中的节点数;n :表示程序控制流圈中的边数;
V (G )=p+1;p :表示判断节点数。
c) 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果; d) 准备测试用例:确保基本路径集中的每一条路径的执行。
A .8 数据流测试 A .8.1 定义
数据流测试是用控制流程图对变量的定义和引用进行分析,查找出未定义的变量或定义了而未使用的变量。这些变量可能是拼错的变量、变量混淆或丢失了语句。
A .8.2 适用范围
数据流测试一般使用工具进行。 数据流测试通过一定的覆盖准则,检查程序中每个数据对象的每次定义、使用和消除情况。
A .8.3 测试过程
数据流测试步骤:
a) 将程序流程图转换成控制流图;
b) 在每个链路上标注对有关变量的数据操作的操作符号或符号序列; c) 选定数据流测试策略;
d) 根据测试策略得到测试路径;
e) 根据路径可以获得测试输入数据和测试用例; 动态数据流异常检查在程序运行时执行,获得的是数据对象的真实操作序列,克服了静态分析检查的局限,但动态方式检查是沿着与测试输入有关的一部分路径进行的,检查的全面性和程序结构覆盖有关。