功能测试常用分析方法图谱
2022-03-05 09:20:31 0 举报
AI智能生成
等价类,边界值,场景法,判定表
作者其他创作
大纲/内容
黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试
测试人员把被测程序当作一个黑盒子。
什么是黑盒测试?
不正确或遗漏的功能
接口、界面错误
性能错误
数据结构或外部数据访问错误
初始化或终止条件错误等等
黑盒测试主要测试的错误类型有
如何测试功能的有效性?
何种类型的输入会产生好的测试用例?
系统是否对特定的输入值尤其敏感?
如何分隔数据类的边界?
系统能够承受何种数据率和数据量?
特定类型的数据组合会对系统产生何种影响?
黑盒测试用于回答以下问题
所设计的测试用例能够减少达到合理测试所需的附加测试用例数
所设计的测试用例能够告知某些类型错误的存在或不存在,而不是仅仅与特定测试相关的错误
运用黑盒测试方法,可以导出满足以下标准的测试用例集
但这是不可能的,因为穷举测试数量太大,无法完成。
用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出
黑盒测试的概念M1
测试计划阶段
依据程序需求规格说明书或用户手册,按照一定规范化的方法进行软件功能划分和设计测试用例
测试设计阶段
按照设计的测试用例执行测试
自由测试(作为测试用例测试的补充)
测试执行阶段
测试总结阶段
黑盒测试的实施过程M2
M30 ={ 4月,6月,9月,11月}
集合与成员
列出集合元素 如M30
如 Y={年| 1900<年<2199}
给出集合元素判定规则
集合的定义
Φ
Φ = {年:2012≤年≤1812}
Φ, {φ} 是不同的
空集的表示
A 是 B 的 子集 A Í B
A 是 B 的 真子集 A Ì B
A 和 B 是 相等集合A=B
集合的关系
A1∪A2∪…∪An=A 且Ai ∩Aj…= Φ (i != j)
集合的划分
完备性
无冗余性
测试
集合论
1-1函数
多对1函数
任何程序都可以看成将其输出与输入关联起来的函数,因此函数是开发测试的核心概念
这对测试很重要(多对一测试可选代表等价类1对1,功能相似也可分等价类)
程序实现的功能大多数是多对一的函数
函数
黑盒测试的数学知识 M3
有效等价类
无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合
无效等价类
划分等价类
完备测试、避免冗余
完备性
并是整个集合
保证一种形式的无冗余性
子集互不相交
划分等价类重要的是
同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”
划分等价类的标准
六条确定等价类的原则
划分等价类的方法
为每一个等价类规定一个唯一的编号
划分出的等价类中按以下三个原则设计测试用例
设计测试用例
例1:某程序规定:“输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … ”。用等价类划分方法为该程序进行测试用例设计
(1)整数 (2)三个数 (3)非零数(4)正数 (5)两边之和大于第三边 (6)等腰 (7)等边
分析题目中给出和隐含的对输入条件的要求
如果不满足条件(5),则程序输出为 “ 非三角形 ”
如果三条边相等即满足条件(7),则程序输出为 “ 等边三角形 ”
如果只有两条边相等、即满足条件(6),则程序输出为 “ 等腰三角形 ”
如果三条边都不相等,则程序输出为 “ 一般三角形 ”
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一
举例
month
day
year
NextDate 函数包含三个变量
1≤month≤12
1≤day≤31
1920≤year≤2050
要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
有效等价类为
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
无效等价类为
NextDate 函数等价类测试用例
等价类划分方法
边界值分析方法的考虑
将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值
基于边界值分析方法选择测试用例的原则
边界值分析方法是对等价类划分方法的补充
边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件
边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
与等价划分的区别
边界值分析法
错误推测法:
错误推测方法的基本思想:
程序是否把空格作为回答
在回答记录中混有标准答案记录
除了标题记录外,还有一些的记录最后一个字符即不是2也不是3
有两个学生的学号相同
试题数是负数
例如,针对例3,采用错误推测法还可补充设计一些测试用例
输入的线性表为空表
表中只含有一个元素
输入表中所有元素已排好序
输入表已按逆序排好
输入表中部分或全部元素相同
测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况
错误推测法
采用因果图方法能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题
把因果图转换为判定表
利用因果图生成测试用例的基本步骤
因果图方法 :
恒等
与
或
非
4种符号分别表示了规格说明中向4种因果关系
因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)
Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现
因果图介绍
恒等:若ci是1,则ei也是1;否则ei为0
与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入
或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入
非:若ci是1,则ei是0;否则ei是1
关系
输入状态相互之间还可能存在某些依赖关系,称为约束
某些输入条件本身不可能同时出现。输出状态之间也往往存在约束
约束
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,即不可能a是1时b是0
输入条件的约束有以下4类
输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0
输出条件约束类型
因果图概念
因果图方法是一个非常有效的黑盒测试方法,它能够生成没有重复性的且发现错误能力强的测试用例,而且对输入、输出同时进行了分析
如果哪个开发项目在设计阶段就采用了判定表,也就不必再画因果图,而是可以直接利用判定表设计测试用例了
因果图方法小结
因果图方法
列出了问题的所有条件,通常认为列出得条件的次序无关紧要
条件桩
列出了问题规定可能采取的操作,这些操作的排列顺序没有约束
动作桩
列出针对它左列条件的取值,在所有可能情况下的真假值
条件项
列出在条件项的各种取值情况下应该采取的动作
动作项
判定表通常由四个部分组成
判定表组成
任何一个条件组合的特定取值及其相应要执行的操作称为规则
在判定表中贯穿条件项和动作项的一列就是一条规则
规则
就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系
化简
规则及规则合并
列出所有的条件桩和动作桩
填入条件项
填入动作项。等到初始判定表
简化.合并相似规则(相同动作)
判定表的建立步骤
M1={月份, 每月有30天}
M2={月份, 每月有31天}
M3={月份, 2月}
D1={日期,1~28}
D2={日期,29}
D3={日期,30}
D4={日期,31}
Y1 ={年:年是闰年}
Y2 ={年:年不是闰年}
NextData函数的精简决策表
M1={月份: 每月有30天}
M2={月份: 每月有31天, 12月除外}
M4={月份:12月}
M3={月份: 2月}
D1={日期:1<=日期<=27}
D2={日期:28}
D3={日期:29}
D4={日期:30}
D5={日期:31}
改进为
一些软件的功能需求可用判定表表达得非常清楚,在检验程序的功能时判定表也就成为一个不错的工具
它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏
优点
不能表达重复执行的动作,例如循环结构
缺点
判定表的优点和缺点
条件的排列顺序不会也不影响执行哪些操作
规则的排列顺序不会也不影响执行哪些操作
B. Beizer 指出了适合使用判定表设计测试用例的条件
判定表在功能测试中的应用
在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出测试用例发现程序错误的能力最强
必要时用等价类划分方法补充一些测试用例
用错误推测法再追加一些测试用例
对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法
Myers提出了使用各种测试方法的综合策略
Myers测试方法选择的综合策略
一是所讨论的输入域的复杂性
二是确定闰年的规则,并要增加 “ 额外天( 2 月 29 日) ”
NextDate 函数中有两种复杂性的输入来源
判定表驱动测试方法
测试用例设计技术 M4
黑盒(功能)测试基本方法
0 条评论
下一页