null软件功能性测试软件功能性测试概览概览在本章中,我们将学习:
功能性测试概述
功能分解
等价类划分
边界值
因果图法
其他测试法
目标目标完成此课程之后,学员将具备以下能力:
理解功能性测试的含义
使用等价类划分的方法
测试用例
使用边界值分析的方法设计测试用例
使用因果图的方法设计测试用例
对具体项目进行功能测试 课程目录课程目录功能性测试概述
功能分解
等价类划分
边界值分析
因果图法
其他测试方法功能性测试概述功能性测试概述任何程序都可以看作是将从输入定义域取值映射到输出值域的函数
将系统看成黒盒,又称为黒盒测试
黒盒的实现是不需要了解的,只需要知道输入和预期输出功能性测试模型功能性测试模型输入输出黒盒内部实现不可见功能性测试的优点功能性测试的优点功能性测试与软件如何实现无关,如果实现发生变化,功能性测试用例仍然可用
测试用例开发可以与软件开发同时进行,可节省软件开发时间,通过软件的用例(use case)就可以设计出大部分功能性测试用例功能性测试的缺点功能性测试的缺点测试用例数量较大
测试用例可能产生很多冗余
功能性测试的覆盖范围不可能达到100%功能性测试的方法功能性测试的方法功能分解
等价类划分
边界值分析
因果图法
其他测试方法课程目录课程目录功能性测试概述
功能分解
等价类划分
边界值分析
因果图法
其他测试方法功能分解功能分解含义
把软件分解为相对独立的功能单元
目的
通过功能分解可以明确软件功能性测试的内容
使软件功能性测试可度量,有利于测试监督和管理功能分解功能分解功能分解应把握好度
不能分解得过粗
不能分解得过细
可提高软件功能性测试度量的准确性课程目录课程目录功能性测试概述
功能分解
等价类划分
边界值分析
因果图法
其他测试方法等价类划分等价类划分等价类划分是将程序的输入域或输出域的不同区间划分为不同的数据类,以便导出测试用例
每个等价类所揭示的程序错误都是等价的
此方法的测试用例能各自发现一类错误,从而减少必须开发的测试用例数 等价类分类等价类分类有效等价类
对于程序的需求说明来说是合理的,有意义的输入数据所构成的集合
利用它可以检验程序是否实现了预期的功能和性能
无效等价类
对于程序的需求说明来说是不合理的,没有意义的输入数据所构成的集合
利用它可以检验程序对于无效数据的处理能力等价类划分等价类划分数学含义
A<=x<=B
C<=y<=D确立等价类的原则 确立等价类的原则 如果输入条件规定了取值范围,或者值的个数,则可以确立一个有效等价类和两个无效等价类,例如:
数据范围是1~50
有效等价类为“>=1&&<=50”
两个无效等价类为“<1”和“>50” 确立等价类的原则确立等价类的原则如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类
如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时要对每一个规定的输入值确立一个有效等价类,而对于这组值之外的所有值确立一个无效等价类 确立等价类的原则确立等价类的原则如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据),例如:
测试密码域,要求密码必须是数字或字母
有效等价类为“密码是数字和字母的组合”
无效等价类为“密码包括中文”、“密码包括其它符号”等
如果确知已划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类 等价类测试用例设计等价类测试用例设计分析输入输出
划分有效等价类、无效等价类
设计测试用例,使其尽可能多的覆盖有效等价类
设计测试用例,使其尽可能多的覆盖无效等价类 举例(保险费率计算)举例(保险费率计算)某保险公司承担人寿保险,该公司保费计算方式为:保费=投保额*保险率,保险率依点数不同而有别,10点以上(含10点)费率为0.6%,10点以下费率为0.1%
点数的计算是年龄、性别、婚姻、抚养人数所得的点数的总和
输入:年龄、性别、婚姻、抚养人数
输出:保险率
查看程序输入数据说明 输入数据说明 等价类划分等价类划分等价类划分等价类划分设计测试用例设计测试用例课程目录课程目录功能性测试概述
功能分解
等价类划分
边界值分析
因果图法
其他测试方法边界值分析边界值分析缺陷往往遗漏在角落里,聚集在边界上
选取输入条件的边界区域作为测试数据比中间的数据更加容易发现错误
边界值分析法是一种补充等价类划分的测试用例设计技术
不是对某个等价类随便挑一个数据做测试数据,而是选一个或多个边界数据,使得该等价类的每个边界都被测试到
不仅考虑输入数据,而且考虑输出数据边界值分析边界值分析数学含义
A<=x<=B
C<=y<=D确立边界值的原则确立边界值的原则如果输入条件或输出条件规定了值的范围并且有效条件包括了值的边界,可分别对边界和略超出边界取值,例如:
数据范围是1<=x<=50正整数
边界值取为:1、50、0、51
如果输入条件或输出条件规定了值的范围并且有效条件不包括了值的边界,可分别对边界和略处于边界内取值,例如:
数据范围是1
表格#等),应注意选取有序集的第一个和最后一个元素以及集合外但靠近集合的元素作为边界 ,例如:
输入文件名介于file0101~file0120之间
边界值取为file0100,file0101,file0120,file0121举例(找零钱最佳组合 )举例(找零钱最佳组合 )假设商店商品价格[X]皆不大于100元(整数),若顾客买一件商品,付款[Y]在100元内,求找给顾客的最少货币张数?
货币面值:
50元[R50]
20元[R20]
10元[R10]
5元[R5]
2元[R2]
1元[R1]分析输入分析输入X > 100
0 < X < = 100
X <= 0
Y > 100
X<= Y <= 100
Y < X 分析输出分析输出0 <= R50 <= 1
0 <= R20 <= 2
0 <= R10 <= 1
0 <= R5 <= 1
0 <= R2 <= 2
0 <= R1 <= 1分析边界分析边界无效边界
X > 100
X <= 0
Y > 100
Y < X分析边界分析边界有效边界
设找部分钱后剩余的金额为S
S >= 50 找R50
20 <= S < 50 找R20
10 <= S < 20 找R10
5 <= S < 10 找R5
2 <= S < 5 找R2
1 <= S < 2 找R1分析后无效情形 分析后无效情形 X > 100
X <= 0
0 < X <= 100, Y > 100
0 < X <= 100, Y < X分析后有效情形分析后有效情形S = 50
S = 49
S = 20
S = 19
S = 10
S = 9
S = 5
S = 4
S = 2
S = 1
S = 0
设计测试用例设计测试用例设计测试用例设计测试用例简化测试用例简化测试用例删除用例10
删除用例12
等价类划分与边界值分析的结合等价类划分与边界值分析的结合回到等价类划分的例子课程目录课程目录功能性测试概述
功能分解
等价类划分
边界值分析
因果图法
其他测试方法因果图法介绍因果图法介绍考虑输入条件之间的相互联系、相互组合
因果图法最终生成的是判定表,它适用于检查程序输入条件的各种组合情况判定表介绍判定表介绍在一些数据处理问题中,某些操作依赖多个逻辑条件的取值。处理这类问题的一个非常有力的分析和表达工具是判定表
一些软件的功能需求可用判定表表达得非常清楚,在检验程序的功能时判定表也就成为一个非常有力的工具判定表介绍判定表介绍判定表由四个部分组成:
条件桩(Condition Stub)
动作桩(Action Stub)
条件项(Condition Entry)
动作项(Action Entry)判定表介绍判定表介绍判定表图示判定表图示因果图法步骤 因果图法步骤 分析软件规格说明描述中的因果关系(输入与输出的因果关系)
找出原因与结果、原因与原因之间的对应关系,画出因果图
在因果图上标记约束或限制条件
把因果图转化为判定表
将判定表中的每一列拿出来设计测试用例 因果图法的优点 因果图法的优点 测试用例数目较少
测试用例数目随数据数目的增加而线形的增加
因果图介绍因果图介绍因果图的四种符号:“恒等”因果图介绍因果图介绍因果图的四种符号:“非”
因果图介绍因果图介绍因果图的四种符号:“或”
因果图介绍因果图介绍因果图的四种符号:“与”
因果图介绍因果图介绍因果图的四种符号说明:
c i 表示原因,通常置于图的左部;e i 表示结果,通常在图的右部。c i 和e i 均可取值0或1,0表示某状态不出现,1表示某状态出现。因果图介绍因果图介绍在实际问题中,输入状态相互之间还可能存在某些依赖关系,称之为“约束”。比如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。因果图介绍因果图介绍 因果图介绍因果图介绍 因果图介绍因果图介绍说明:对于输入条件的约束有四种以下4类:
E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。
I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0。
O约束(唯一): a和b必须有且仅有一个为1。
R约束(要求):a是1时,b必须为1,即不可能a是1时b是0。因果图介绍因果图介绍 输出结果只有M约束(强制):若结果a是1时,则b的结果强制为0。因果图法案例 因果图法案例 第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。因果分析因果分析原因:
1——第一列字符是A
2——第一列字符是B
3——第二列字符是一数字
11 ——第一列字符是A或是B
结果:
21——修改文件
22——给出信息L
23——给出信息M因果图因果图因果图因果图由因果图建立的判定表由因果图建立的判定表课程目录课程目录功能性测试概述
功能分解
等价类划分
边界值分析
因果图法
其他测试方法随机测试随机测试使用随机数生成器选取测试用例值
避免测试偏见(只选取边界值)
存在问题:测试用例是否充分错误推测法 错误推测法 错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例错误推测法基本思想错误推测法基本思想列举出程序中所有可能有的错误和容易发生错误的特殊情况来设计测试用例
例如:
以前测试时曾出现过错误的地方,包括单元测试、集成测试、系统测试、前几次回归测试
输入数据的问题,如是否可为空,是否可以有特殊字符,是否可以小于0、等于0等等
一些问题的范围或边界本课总结本课总结功能性测试方法主要有三种:等价类划分、边界值分析、因果图法
三种方法各有优势,应灵活使用Thanks!Thanks!