资源描述
测试分析方法简介 内部公开
黑盒测试分析方法简介
制定人: Dannycheng 日期:
审核人: Ivyxiang 日期:
批准人: Jeremywu 日期:
腾 讯 科 技
版权所有 侵权必究
修订记录
日期
修订
版本
修改
章节
修改描述
修订人
2009-07-30
1.0
新建
Danny
目 录
1 说 明 5
2 简 介 5
3 名词解释 5
4 测试分析前提 6
5 测试分析方法介绍 6
5.1 等价类 6
5.1.1 定义 6
5.1.2 使用场景 7
5.1.3 实例 7
5.2 边界值 8
5.2.1 定义 8
5.2.2 使用场景 8
5.2.3 实例 8
5.3 场景分析法 9
5.3.1 定义 9
5.3.2 使用场景 9
5.3.3 实例 10
5.4 因果图 11
5.4.1 定义 11
5.4.2 使用场景 11
5.4.3 相关术语 11
5.4.4 实例 13
5.5 判定表 14
5.5.1 定义 14
5.5.2 使用场景 15
5.5.3 实例 15
5.6 错误推断法 16
5.6.1 定义 16
5.6.2 使用场景 16
5.6.3 实例 17
5.7 正交实验设计 18
5.7.1 定义 18
5.7.2 使用场景 18
5.7.3 特点 18
5.7.4 相关术语 18
5.7.5 正交表选定规则 19
5.7.6 设计测试用例步骤 19
5.7.7 实例 20
5.7.8 特殊正交实验 22
5.8 功能图 22
5.8.1 定义 22
5.8.2 使用场景 23
5.8.3 相关知识 23
5.8.4 实例 23
6 分析方法小结 25
1 说 明
软件的生命周期,是一个过程,这个过程中包含产品的需求,开发,测试等步骤,每一步都对软件质量有极大的影响。测试是软件质量监控的最后一个步骤,测试也是一个过程,这个过程包括有:测试需求分析,测试计划,测试分析,测试方案,测试策略,测试设计,测试执行,测试总结,测试评估,等等过程,每个过程对测试质量都有非常大的影响,其中测试分析,和测试设计是测试质量的关键。测试分析更多体现测试人员的分析能力,体现测试人员对产品 架构,业务,功能,逻辑的掌握程度。测试分析方法是我们分析的依据和基础。掌握好了测试分析方法,测试才会更全面,更完善,产品质量才更有保证。
2 简 介
测试分析是一个非常大,非常复杂课题,本文主要是对业界通用的几种黑盒测试分析方法进行简介,希望起到抛砖引玉的效果,将通过实例介绍几种分析方法:
ü 等价类
ü 边界值
ü 场景分析
ü 因果图
ü 判定表
ü 错误推测
ü 正交实验设计
ü 功能图
3 名词解释
因子:我们把测试环境下,对测试对象影响的各种条件称为 影响因子,简称因子。
输入:测试用例中,输入特定数据以及对测试对象进行的操作 简称输入。
输出:测试用例中,预期结果输出 ,简称为输出。
上点::边界上的点,不管它是开区间还是闭区间,就是说,如果该点是封闭的,
上点就在域范围内,如果该点是开放的,那上点就在域范围外;
内点:在域范围内的任意一个点。
离点:离上点最近的一个点,如果边界是封闭的,那离点就是域范围外离上点最近的点,如果边界是开放的,那离点就是域范围内离上点最近的点
4 测试分析前提
在我们决定给测试对象使用什么测试分析方法之前,我们需要分析出测试对象的各种影响因子,有了影响因子后,才能决定使用什么分析方法,怎样分析因子,不是本文介绍的重点,本文不做详细描述,只是建议多从一下几个方面考虑。
n 需求分析,需求一般告诉我们最直接的各种因子(这个远远不够,很多隐含因子需要测试人员去挖掘,去分析)
n 用户场景(用户场景是非常好的分析方法,主要站在用户角度)
n 功能,逻辑(从功能程序本身考虑,多考虑程序异常)
n 底层接口(这里需要考虑 接口性能,压力,以及异常)
n 项目规范及相关业界标准(风格统一和用户习惯)
n 架构分析(要求测试人员对产品整体熟练掌握)
n 测试人员的各种猜想(主要是测试的发散思维)
5 测试分析方法介绍
5.1 等价类
5.1.1 定义
是把所有可能的输入数据,即功能的输入域划分成若干部分(因子),然后从每一个子集中选取少数具有代表性的数据作为测试用例数据。该方法是一种重要的,常用的黑盒测试方法。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
A.有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
B.无效等价类(这也是我们常说的异常用例)
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个
5.1.2 使用场景
等价类的使用场景在等价两个字上,即所需要输入数据可以分类,每类数据中的输出效果一样的,就可以选取比较典型的数据代替整个类进行测试。
5.1.3 实例
等价类其实我们经常在使用,有可能大家没有意识到我们在使用,下面举两个实例说明一下。
实例一:
产品需求:
校友注册姓名要求真实,需要判定用户姓名的正确姓,判定条件为“百家姓” 满足“百家姓”的用户认定姓名是真实的。
分析说明:
测试因子有1.浏览器 2.操作系统 3.文本框 4.百家姓 因子1,2需要进行兼容性测试,因子3需要进行 界面测试,安全性测试,因子4需要进行功能逻辑测试,这里不对需求分析做详细说明,本条需求包含了多种测试需求,有界面测试,功能逻辑测试,安全性测试,等等,每种测试需求对应一个测试点,这里只对功能逻辑进行说明,分析,影响因子(用户姓名), 这里的 有效等价类就是—百家姓,非等价类—非百家姓 百家姓类还可以继续再使用等价类划分两类:一个字的姓,两个字的姓。每类选取一个代表就可以形成百家姓测试用例,这样就不需要测试所有的百家姓了。
测试分析
测试点:校友注册百家姓
测试类型:功能逻辑测试
测试因子:用户姓(百家姓(一个字的姓,两个字的姓,其他),非百家姓)
输入: 输入注册用户姓名,注册
输出: 注册成功或提示不满足百家姓
测试设计(用例简单描述):
编号
类型
条件
输入
输出
结果
1
正常
….
输入“李自成“ ,注册
….
….
2
正常
….
输入“东方不败” ,注册
….
….
3
正常
…..
输入“王小二”, 注册
….
….
4
异常
…..
输入“哈哈哈哈”,注册
….
….
说明:很多情况我们分析出了 ,各种测试因子,使用适当的分析方法,很多逻辑异常用例就会自动分析出来。
5.2 边界值
5.2.1 定义
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充。
边界测试,我们的软件很多的错误错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
5.2.2 使用场景
边界值是我们最常见的测试分析方法了,使用场景就是在有测试对象有 范围的情况下使用。
边界值使用的一般规则
ü 如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据;
ü 如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1格、比最小个数少1个的数做为测试数据;
ü 根据规格说明的每一个输出条件,使用规则一;
ü 根据规格说明的每一个输出条件,使用规则二;
ü 如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例;
ü 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例;
ü 分析规格说明,找出其他可能的边界条件
对边界值的分析,我认为主要就是考虑两个上点,两个离点,一个内点,基本上就能全面覆盖功能了。
5.2.3 实例
产品需求:
校友班级名字防止恶意用户非法注册,特加了长度限制, 班级名字要求至少3个,最多12个汉字。
分析说明:
测试因子有1.输入内容(汉字,英文,数字,特殊符号,安全性脚本) 2.输入长度(3<=长度<=12),仅仅对因子2进行测试分析,需要进行的测试类型为功能逻辑测试。
测试分析
测试点:班级名字
测试类型:功能逻辑测试
测试因子:输入长度(上点:3,12 离点:2,13 内点:4)
输入: 输入班级名字,修改
输出: 修改成功或提示修改不成功
测试设计(用例就简单描述了):
编号
类型
条件
输入
输出
结果
1
异常
….
输入2个字的班级名字,修改
….
….
2
正常
….
输入 3个字的班级名字,修改
….
….
3
正常
…..
输入4个字的班级名字,修改
….
….
4
正常
…..
输入12个字的班级名字,修改
….
….
5
异常
输入13个字的班级名字,修改
说明:边界值测试,选取两个上点,两个离点,一个内点, 就可以对边界值进行很好的覆盖了。
5.3 场景分析法
5.3.1 定义
一般软件分析方法都是先分析功能,针对功能进行测试,而场景分析,主要是模拟用户创建或软件使用场景,来分析进行测试,可以说场景分析和其他功能分析是分析维度不一样,达到的效果相同,在很多时候场景分析更符合用户习惯,也更能发现问题。
5.3.2 使用场景
现在软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流,基本上大部分的功能都可以使用场景分析法进行用例分析。目前我们使用的一般都是用户场景分析,站在用户的角度,当我们的功能存在多种用户身份,每种用户身份能进行的操作和权限不一样,这样的情况使用场景分析比较适合。
5.3.3 实例
产品需求:
校友的班级功能,有三种身份, 班级创始人,班级管理员,班级同学。班级创建人的功能有:1.界面有管理入口,2.可以管理班级,3.可以解散班级 4.可以批准同学加入 5.可以维护班级成员 6.可以设置管理员 7.可以修改班级名称…. 班级管理员的功能有:1.界面有管理入口 2.可以管理班级 3.不可以解散班级,可以退出班级 4.可以批准同学加入 5.可以维护班级成员列表 6.不可以设置管理员 7.可以修改班级名称 班级同学的功能:1.界面没有管理入口,2.不可以管理班级,3.不可以解散班级,4.可以同意同学加入,5.不可以维护班级成员,6.不可以设置管理员 7.不可以修改班级名称。
分析说明:
本需求比较适合用户场景分析,我们的班级有三种用户,班级创始人,班级管理员,班级普通成员,我们就模拟用户的身份,分别模拟三种用户进入班级内进行相关操作。
测试分析
测试点:班级(这个测试点比较大)
测试类型:功能逻辑测试
测试因子:班级成员身份(班级创建人,班级管理员,班级成员)
输入: 进行上面分析的7种操作
输出: 满足需求描述,符合条件成功,不符合就不成功
测试设计(用例简单描述):
编号
类型
条件
输入
输出
结果
班级创建人的身份进入班级操作
1
正常
….
检查班级界面是否有“班级管理”入口
….
….
2
正常
….
管理班级(此用例可以细分)
….
….
3
正常
…..
解散班级(此用例可以细分)
….
….
4
正常
…..
批准同学加入(此用例可以细分)
….
….
5
正常
管理班级成员(此用例可以细分)
6
正常
设置管理员(此用例可以细分)
7
正常
修改班级名称(此用例可以细分)
班级创建人的身份进入班级操作
8
正常
….
检查班级界面是否有“班级管理”入口
….
….
9
正常
….
管理班级(此用例可以细分)
….
….
10
异常
…..
解散班级(此用例可以细分)
….
….
11
正常
…..
批准同学加入(此用例可以细分)
….
….
12
正常
管理班级成员(此用例可以细分)
13
异常
设置管理员(此用例可以细分)
14
正常
修改班级名称(此用例可以细分)
班级普通成员进入班级操作
15
正常
….
检查班级界面是否有“班级管理”入口
….
….
16
异常
….
管理班级(此用例可以细分)
….
….
17
异常
…..
解散班级(此用例可以细分)
….
….
18
正常
…..
批准同学加入(此用例可以细分)
….
….
19
异常
管理班级成员(此用例可以细分)
20
异常
设置管理员(此用例可以细分)
21
异常
修改班级名称(此用例可以细分)
说明:使用用户场景分析法,模拟了用户的所有操作,也可以让功能的覆盖率达到100%。
5.4 因果图
5.4.1 定义
是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
5.4.2 使用场景
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。在我们的测试中,经常有多个因子同时存在,切相互有影响,这个时候,如果我们就需要考虑因子间组合的问题了,
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图
5.4.3 相关术语
因果关系图基本符号:
图中左边的节点表示原因,右边的节点表示结果。恒等、非、或、与的含义:
恒等:若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。
画因果图时,原因在左,结果在右,由上而下排列,并根据功能说明书中规定的原因和结果之间的关系,用上述基本符号连接起来。在因果图中还可以引入一些中间节点。
根据功能说明在因果图中加上约束条件由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。因果图的约束条件如图所示:
.输入条件的约束有以下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,即不可能a是1时b是0
5.4.4 实例
产品需求:
QQ校友上传头像功能QQ校友头像上传,有两个条件:1.上传照片格式(JPG、JPEG、PNG、GIF) 2.上传大小(<=2M),上传格式不规范,提示用户头像只能是JPE,JPEG,PNG,GIF四种格式,上传大小不规范,提示用户上传最大不超过2M, 两者条件均满足提示用户上传头像成功。
分析说明:
本需求 是QQ校友上传头像功能,需求显示有两个因子,其实应该测试因子有4个的:1上传头像格式满足要求 2.上传头像格式不满足要求 提示上传头像格式规格 3.上传头像尺寸满足要求 4.上传头像支持不满足要求,提示上传头像尺寸规格. 当因子为1.3时,提示用户上传头像出成功, 本需要一共四个因子,三个结果.
测试分析
测试点:上传头像
测试类型:功能逻辑测试
分析方法::因果图
测试因子:照片类型规格(满足4中类型,不满足4中类型) 照片尺寸规格(小于等于2M,大于2M)
输入: 上传照片
输出: 三种提示中的一种
因果图:
因子:
1.------图片格式规范(JPG、JPEG、PNG、GIF)
2.------图片格式不规范(非 JPG、JPEG、PNG、GIF)
3.------图片尺寸规范(<=2M)
4.------图片尺寸不规范(>2M)
结果:
21.----上传成功
22……提示上传照片格式规范
23……提示上传照片尺寸规范
E
E
11
2
II
3
4
II
22
21
23
V
V
∧
因果图说明:
ü 因子1,因子2不能同时存在,因子3,4也不能同时存在,
ü II是中间过程
ü 因子1 ,2产生的结果有22
ü 因子3,4产生的结果有 23
ü 因子1,2和因子3,4间的组合产生结果 21
使用因果图测试的一般步骤:
ü 分析需求,分析出各种因子和输出结果,并给每个原因和结果赋予一个标识符。
ü 分析需求中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。
ü 把因果图转换为判定表。
ü 把判定表的每一列拿出来作为依据,设计测试用例。
总结过程:测试需求---因果图---判定表----测试用例。
5.5 判定表
5.5.1 定义
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。是指一个表格,用于显示条件和条件导致动作的集合。
5.5.2 使用场景
在我们一些数据处理问题当中,某些操作的实施依赖于多个逻辑因子的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。缺点:如果因子组合太多,会出现大量用例,导致效率低下。
5.5.3 实例
产品需求:
同5.4.4
分析说明:
5.4.4因果图里面已经将需求中的 各因子,各结果分析出来,并且已经编号。我们只要通过因果图转成判定表就可以了。
测试分析
测试点:上传头像
测试类型:功能逻辑测试
分析方法::判定表
测试因子:照片类型规格(满足4中类型,不满足4中类型) 照片尺寸规格(小于等于2M,大于2M)
输入: 上传照片
输出: 三种提示中的一种
判定表表格:
因子:
1.------图片格式规范(JPG、JPEG、PNG、GIF)
2.------图片格式不规范(非 JPG、JPEG、PNG、GIF)
3.------图片尺寸规范(<=2M)
4.------图片尺寸不规范(>2M)
结果:
21.----上传成功
22……提示上传照片格式规范
23……提示上传照片尺寸规范
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
因子
1
1
1
0
0
0
1
1
1
0
0
0
1
0
1
1
2
1
0
1
0
0
1
0
0
1
1
0
1
1
0
1
3
1
0
0
1
0
0
1
0
1
0
1
1
1
1
0
4
1
0
0
0
1
0
0
1
0
1
1
0
1
1
1
结果
不存在
不存在
不存在
不存在
不存在
不存在
21
23
22
2
3
不存在
不存在
不存在
不存在
不存在
测试用例
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
取测试用例为真(1)的因子和结果形成测试用例
测试设计(测试用例可以再细分)
编号
类型
条件
输入
输出
结果
1
正常
….
头像照片,格式规范,尺寸规范,上传
….
….
2
正常
….
头像照片,格式规范,尺寸不规范,上传
….
….
3
正常
…..
头像照片,格式不规范,尺寸规范,上传
….
….
4
正常
…..
头像照片,格式,尺寸均不规范,上传
….
….
说明:
说明:1---4这个用例 应该说不是最终的用例,里面还可以使用等价类再进行拆分,上面所说的用例表现主要是为了说明判定表的功能。一般情况下,我们的需求需要多少测试分析方法才能形成最终的测试用例。
5.6 错误推断法
5.6.1 定义
定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
5.6.2 使用场景
错误推断主要是日常习惯和经验来进行测试,适用各种测试情况。错误推断的基本思想:列举出程序中所有可能有的错误和容易放生的错误的特殊情况,根据他们选择测试用例,例如:在单元测试时曾列出的许多在模块中常见的错误,以前产品测试中增加发现的错误,这些就是经验的总结,还有,输入数据和输出数据为0的情况,输入表格为空格或输入表格只有一行,挖掘需求隐含或没有描述的情况,这些都是容易发生错误的可能的情况,可选择这些情况下的例子作为测试用例。
5.6.3 实例
产品需求:
校友删除日志功能,校友删除日志的时候,会连同评论以及空间日志一起删除。
分析说明:
日志A ,删除日志,功能逻辑测试 因子有1.日志类型(普通,私密,音乐,图文,flash…) 2.日志评论(有评论,无评论)
测试分析
测试点:删除日志
测试类型:功能逻辑测试
测试因子:日志类型,日志评论)
输入: 删除日志
输出: 删除成功
测试设计:
编号
类型
条件
输入
输出
结果
1
正常
….
删除普通日志
….
….
2
正常
….
删除私密日志
….
….
3
正常
…..
删除音乐日志
….
….
4
正常
…..
删除图文日志
….
….
5
正常
………..
6
正常
………..
7
正常
……….
等等,不一一描述了
以上测试分析,是我们的一些常规分析,但我们的经验告诉我们,这里还有接口,接口经常出现问题,还有空间因素,这里都是异常因素,还可以增加异常用例。
测试设计:
编号
类型
条件
输入
输出
结果
1
异常
….
日志接口异常,删除日志
….
….
2
异常
….
日志不存在(空间中先删除),删除此日志
….
….
3
异常
…..
日志存在相同ID,删除日志
….
….
4
异常
…..
Cache 删除成功,数据库不成功
….
….
5
…..
………..
6
…..
………..
7
…..
……….
说明:错误推断在一定程度上是经验,一定程度上也可以是测试人员的猜想,测试人员应该大胆猜想,发现更深层次的问题。
5.7 正交实验设计
5.7.1 定义
正交实验设计简称正交设计,它是利用正交表科学的安排与分析多因素实验的方法,是最常用的实验分析方法之一,正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。正交试验设计(Orthogonal experimental design)是研究多因素多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是分式析因设计的主要方法。是一种高效率、快速、经济的实验设计方法。日本著名的统计学家田口玄一将正交试验选择的水平组合列成表格,称为正交表。例如作一个三因素三水平的实验,按全面实验要求,须进行3^3=27种组合的实验,且尚未考虑每一组合的重复数。若按L9(3)^3正交表安排实验,只需作9次,按L18(3)^7正交表进行18次实验,显然大大减少了工作量。因而正交实验设计在很多领域的研究中已经得到广泛应用。
5.7.2 使用场景
当我们的测试对象存在大量的因子,所有因子参入组合,且每个因子还能取值非常多,这个时候利用因果图等前面的几种分析来设计用例时, 分析起来就非常困难,即便分析出来。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。正交实验会选取 一定代表性数据,进行测试,且能分布均匀,正交实验测试对数据的覆盖率不能达到100%,但所选数据非常有效,覆盖范围大。
5.7.3 特点
ü 完成实验要求所需要的次数少
ü 数据点发布很均匀
ü 可用采用工程方法对试验结果进行进一步的分析
5.7.4 相关术语
1.试验因素:影响考核指标取值的量称为试验因素(因子)。
一般记为:A,B,C, 等定量的因素 可控因素 定性的因素不可控因素
2.因素的位级(水平):指试验因素所处的状态。
3.行数(Runs):正交表中的行的个数,即试验的次数,也是我们通过正交实验法设计的测试用例的个数。
4.因素数(Factors) :正交表中列的个数,即我们要测试的功能点。
5.水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数” 。即要测试功能点的输入条件。
6.正交表的形式:L行数(水平数因素数) 如:L8(27) 表示 这里有两个因子,因子最大的水平数为7,我们要实验8次,也就是有8个用例。1、正交表的符号: 正交表是运用组合数学理论在正交拉丁名的基础上构造的一种规格化的表格。
符号:Ln(ji) 。
其中:L—正交表的符号 n—正交表的行数(试验次数,试验方案数) j—正交表中的数码(因素的位级数,又叫水平数) i—正交表的 列数(试验因素的个数,又叫因子数) N=ji—全部试验次数(完全因素位级组合数)
5.7.5 正交表选定规则
ü 正交表的列不能小于变量的个数;
ü 正交表的水平数不能小于因子的最大水平数
5.7.6 设计测试用例步骤
A. 提取功能说明,构造因子--状态表
把影响实验指标的条件称为因子.而影响实验因子的条件叫因子的状态.利用正交实验设计方法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把他们当作因子,而把各个因子的取值当作状态.对软件需求规格说明中的功能要求进行划分,把整体的概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的基本的功能要求.这样就可以把被测试软件中所有的因子都确定下来,并为确定个因子的权值提供参考的依据.确定因子与状态是设计测试用例的关键.因此要求尽可能全面的正确的确定取值,以确保测试用例的设计作到完整与有效。
B. 加权筛选,生成因素分析表
对因子与状态的选择可按其重要程度分别加权.可根据各个因子及状态的作用大小,出现频率的大小以及测试的需要,确定权值的大小。
C. 利用正交表构造测试数据集
正交表的推导依据Galois理论(这里省略,需要时可查数理统计方面的教材)。
利用正交实验设计方法设计测试用例,比使用等价类划分,边界值分析,因果图等方法有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的覆盖率。
5.7.7 实例
产品需求:
正交分析方法的需求,借用上次fred曾经写的实例:
例如:我们在进行flash相关功能测试的时候,需要做兼容性测试,这个时候我们需要考虑这几个条件的组合。操作系统(vista,xp,window7) 浏览器有(IE6,IE7,FF),flash版本(flash8.0,flash9.0,flash10.0)。如果每种组合都测试到,我们需要进行3*3*3 一共27种组合测试,这样会非常复杂和要大量的人力。
分析说明:
使用正交分析来分析上述需求。
因子有三个 操作系统,浏览器,flash版本
A---操作系统 B----浏览器 C---flash版本
A1----vista A2---xp A3---window7
B1----IE6 B2----IE7 B3---FF
C1----flash8.0 C2----flash9.0 C3---flash10
选择正交表:
考虑因素(变量)的个数
考虑因素水平(变量的取值)的个数
考虑正交表的行数
取行数最少的一个
Ln(ji)
j 水平数,值为3, 最大因子的值有三个,这个值就是3
I 因子数,值为3, 有三个因子
查看正交表链接地址:
要求正交表的 j>=3 i>=4 满足这个条件的 正交表为:L9(34)
选择正交表
L9(34)
因子一
因子二
因子三
因子四
1
0
0
0
0
2
0
1
1
2
3
0
2
2
1
4
1
0
1
1
5
1
1
2
0
6
1
2
0
2
7
2
0
2
2
8
2
1
0
1
9
2
2
1
0
由于我们只有三个因子,所以可以忽略掉第四个因子
因子一
因子二
因子三
1
0
0
0
2
0
1
1
3
0
2
2
4
1
0
1
5
1
1
2
6
1
2
0
7
2
0
2
8
2
1
0
9
2
2
1
将值代入下列符号中
A1----0 A2---1 A3---2
B1----0 B2----1 B3---2
C1----0 C2----1 C3---2
得到组合
因子一
因子二
因子三
1
Vista
IE6
FLASH8
2
Vista
IE7
FLASH9
3
Vista
FF
FLASH10
4
XP
IE6
FLASH9
5
XP
IE7
FLASH10
6
XP
FF
FLASH8
7
WIN7
IE6
FLASH10
8
WIN7
IE7
FLASH8
9
WIN7
FF
FLASH9
测试分析
测试点:兼容性分析
测试类型:正交分析
测试因子:操作系统,浏览器,flash版本
输入:
输出:
测试设计(省):
编号
类型
条件
输入
输出
结果
1
正常
….
2
正常
….
3
正常
…..
4
正常
…..
说明:无
5.7.8 特殊正交实验
正交分析的情况比较复杂,上述例子刚好,各因子,水平数刚好相同,如果各因子的水平数不相同呢,这个时候我们该怎样选择正交表呢,最简单方法选择 选择正交表因子数和水平数均大于所测试的对象的因子数和水平数,再像上面的例子一样剔除没有水平和因子,即可得出基本的测试用例,再补充相应的一些测试用例基本可以达到一定程度的覆盖,实例略。
5.8 功能图
5.8.1 定义
一个程序的功能说明通常由动态说明和静态说明组成.动态说明描述了输入数据的次序或转移的次序.静态说明描述了输入条件与输出条件之间的对应关系.对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的.必须用动态说明来补充功能说明.功能图方法是用功能图FD 形式化地表示程序的功能说明,并机械地生成功能图的测试用例. 功能图模型由状态迁移图和逻辑功能模型构成.状态迁移图用于表示输入数据序列以及相应的输出数据.在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态.逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系.逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定.测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成.功能图方法其实是是一种黑盒白盒混合用例设计方法。
(功能图方法中,要用到逻辑覆盖和路径测试的概念和方法,其属白盒测试方法中的内容.逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法.该方法要求测试人员对程序的逻辑结构有清楚的了解.由于覆盖测试的目标不同,逻辑覆盖可分为:语句覆盖,判定覆盖,判定-条件覆盖,条件组合覆盖及路径覆盖.下面我们指的逻辑覆盖和路径是功能或系统水平上的,以区别与白盒测试中的程序内部的.)
5.8.2 使用场景
功能图主要使用在测试对象有存在一系列路径或状态变更,等复杂情况。功能图试,主要是描述的一个功能,这个功能中可能有多个对象,多个测试点。功能图的使用原则就是使用白
展开阅读全文