目录
测试用例设计方法:
- 等价类划分法
- 边界值分析法
- 判定表法
- 因果图法
- 状态迁移图法
- 流程分析法
- 正交实验法
- 输入/输出域测试法
- 异常分析法
- 错误猜测法
一、等价类划分法
1、定义
等价类:某个输入域的集合,在这个集合中每个输入条件都是等效的,如果其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不太可能发现错误。
- 有效等价类:有效等价类是程序规格说明有意义,合理的输入数据
- 无效等价类:无效等价类是程序规格说明无意义,不合理的输入数据
等价类的思想在于,用个别值来代表一类值。
2、等价类划分原则
- 如果输入条件规定了取值范围或值的个数,则可以确定一个有效等价类和两个无效等价类
例:某工厂的用工年龄要求在18岁以上35岁以下。
- 输入条件规定了输入值的集合,或是规定了必须如何的条件,则可以确定一个有效等价类和一个无效等价类
例:某公司只招聘大专以上硕士以下级别员工。
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
例:某输入框为必填框。
- 在规定了输入数据的一组值假定n个,并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
例:闹钟设置星期一 ~ 星期四
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
例:计算器要求只能输入正整数
说明:一个有效,多个无效,是最常接触的等价类划分原则
- 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步划分为更小的等价类
例:学生考试系统录入成绩0 ~ 100分。0 ~ 60分:不及格,60 ~ 70分:及格,70 ~ 80分:良好,80 ~ 100分:优秀。
3、等价类划分法用例设计步骤
第一步:划分等价类:
对每个输入或外部条件进行等价类划分,形成等价类表,为每一等价类规定一个唯一的编号;
第二步:为有效等价类设计测试用例;
设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;
第三步:为无效等价类设计测试用例。
设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到多有无效等价类均被覆盖。
二、边界值分析方法
边界值分析方法是一种黑河测试方法,是对等价类分析方法的一种补充。由长期测试工作经验得知,大量的错误发生在输入或输出的边界上。因此针对各种边界情况设计测试用例,可以查出更多的错误。
边界值分析使用条件:
- 输入条件明确了一个值的取值范围,或是规定了值的个数
- 输入条件明确了一个有序集合
1、边界值点定义
- 上点:边界上的点
- 离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内
- 内点:顾名思义,就是在域范围内的任意一个点
2、边界值分析的原则
- 如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例
举例:某工厂的用工年龄要求在18岁以上35岁以下。
- 如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试用例
举例:闹钟周一 ~ 周日
- 如果程序中使用了一个内部数据结构,则应该选择这个内部数据结构的边界上的值作为测试用例
举例:假设a的值的取值范围是[0,10],一个用a值来计算的代码为y = 10/a。
3、边界值分析法设计用例的步骤
- 分析输入参数的类型:从测试规格中分析得到输入参数类型
- 等价类划分(可选):对于输入等价类划分方法进行等价类的划分
- 确定边界:运用域测试分析方法确定域范围的边界(上点,离点与内点)
- 相关性分析(可选):如果存在多个输入域,则需要运用因果图、判定表方法对这些输入域边界值的组合情况进行进一步分析
- 形成测试项:选择这些上点、离点与内点或者这些点的组合形成测试项
三、判定表法
1:当输入的条件之间存在一定的制约关系时,例如:“或” | 等价类不合适 |
2:当条件与结果之间存在因果关系时,例如:“若......则......” |
判定表的概念:
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表的应用:
- 在所有的黑盒测试方法中,基于判定表(也称决策表)的测试是最为严格、最具逻辑性的测试方法。
- 在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组
合值,分别执行不同的操作。判定表很适合处理这类问题。
1、判定表法的组成
- 条件桩(Condition Stub)
- 动作桩(Action Stub)
- 条件项(Condition Entry)
- 动作项(Condition Entry)
- 规则

通常涉及到逻辑判断时,我们一般使用真、假两个值来代表事件成立、事件不成立。
一般我们使用数字1代表真,也就是事件成立。
数字0代表假,也就是事件不成立。
* 每一个条件的可选项个数相乘就是总的组合数
2、判定表法的合并
化简工作是以合并规则为目标的。如果表中有两条或多条规则具有相同的动作,并且其条件项之
间存在极为相似的关系,便可以将其合并。
合并从数学角度是可行的,但我们不了解程序的内部逻辑,合并可能导致漏测的现象。如果合并
不能带来太大的收益,不建议合并。
合并有风险,化简需谨慎!
3、判定表法的设计用例
- (1)列出所有的条件,根据条件确定规则的个数
如这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则 - (2)列出所有的条件桩和动作桩
- (3)填入条件项
- (4)填入动作项,得到初始决策表
- (5)简化决策表,合并相似规则(可选)
- (6)将每条规则转化为用例。每条规则可以有一条或多条用例
4、判定表总结
- 优点
它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免漏洞 - 缺点
基本用例数量大,且合并存在漏测的风险
5、判定表在功能测试中的应用
适合使用判定表设计测试用例的条件;
- ①规格说明以判定表形式给出,或很容易转换成判定表
- ②条件/规则的排列顺序不影响执行结果
- ③每条规则都相对独立,在编写用例时不收其他规则的影响
- ④一条规则可以转换成一条或多条用例,规则的用例数取决于转化的条件
6、练习
实际操作:https://download.youkuaiyun.com/download/Arno_007/13112401
实际操作:https://download.youkuaiyun.com/download/Arno_007/13112445
四、因果图
- 因果图(Cause-Effect Graphing)可以将需求转化为判定表。其中,因是表示输入条件,果是对输入执行的一系列操作后得到的输出。
- 因果图方法最终生成的就是判定表。
- 它适合于检查软件输入条件的各种组合情况。
1、因果图法设计用例的步骤
- ⑴ 找出哪些是原因,哪些是结果
- ⑵ 画出因果图,包括原因与结果的关系,以及条件之间的约束关系
- ⑶ 把因果图转换成判定表
- ⑷ 简化判定表(可选)
- ⑸ 用判定表中的每一项生成测试用例
2、例子
实际操作:https://download.youkuaiyun.com/download/Arno_007/13112482
五、正交实验法
正交实验法,是从大量的试验点中挑选出适量的、有代表性的点,
应用依据法国科学家 伽罗瓦理论导出的“正交表”,合理的安排试验的
一种科学的试验设计方法。
- 因子(因素):影响试验指标的条件
- 因子的状态(水平):因子可能的取值
1、正交试验法设计测试用例步骤
一、提取功能说明,构造因子 - 状态表
因子1 | 因子2 | 。。。 | 因子n | |
状态1 | ||||
状态2 | ||||
。。。 | ||||
状态n |
二、加权筛选,生成因素分析表
计算各因子和状态的权值,删去一部分权值较小,即重要性较小的因子和状态,使最后生成的测试用例集缩减到允许范围。
三、利用选择正交表,构造测试数据集
四、利用正交表每行数据构造测试用例
实际操作:https://download.youkuaiyun.com/download/Arno_007/13112548
常用正交表对照图:https://download.youkuaiyun.com/download/ydp1016/10223080
六、状态图迁移法
许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性
上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状
态变化,有没有不可达的状态和非法的状态,可能不可能产生非法的状态转移等。
- 通过构造能导致状态迁移的时间来测试状态之间的转换。
- 用这种方法也可以设计逆向的测试用例,如状态和事件的非法组合
1、状态迁移图法设计用例步骤
-
⑴ 画出状态迁移图
-
⑵ 列出状态 - 事件表
-
⑶ 画出状态转换树
-
⑷ 从状态转换树推导出测试路径
-
⑸ 根据测试路径编写合法测试用例
-
⑹ 编写非法测试用例
实际操作:https://download.youkuaiyun.com/download/Arno_007/13116703
2、状态迁移法总结
状态迁移图法实际上是测试了各种状态的转换,这些状态转换的测试在实际工作中
是最容易遗漏的。只要能将这些状态的转换测试到,是不是采用状态迁移图法并不重要,
因为状态迁移图法只不过是给出一种将多个状态的转换串起来进行测试的思路。
七、流程分析法
流程分析法是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。
根据流程的顺序依次进行组合,使得流程的各个分支都能走到。这是从白盒测试中路径覆
盖分析法中推广到黑盒测试中来的测试分析方法。
1、流程分析法设计用例步骤
- 画出业务流程图
- 设置基本流和备选流
- 确定测试路径
- 选取测试数据
- 构造测试用例
实际操作:https://download.youkuaiyun.com/download/Arno_007/13116713
流程图:https://download.youkuaiyun.com/download/Arno_007/13116746
2、流程分析法总结
流程分析法的重点在测试流程,因此,每个流程用一个测试用例验证即可,
流程测试没有问题并不能说明系统功能就没有问题了,还需要针对单步的功能
来测试,只有这两者都测试到了,才能算是比较充分的测试。
八、其他测试方法
1、输入域测试法
输入域测试法是一种综合的方法,综合了前面提到的等价类划分法、边界值
分析法等方法。这里提到的输入域就是指输入,针对输入会有各种各样的输入值。
输入域主要考虑三个方面:
- 极端测试(Extremal Testing),需要选择测试数据覆盖输入域的极端情况
- 中间范围测试(Midrange Testing),选择域内部的数据进行测试
- 特殊值测试(Special Value Testing),根据要计算的功能特性的基础来选择
测试数据。这个过程尤其适合于数学计算。所要计算功能的属性可以有助于
选择能够验证被计算方案正确的测试数据
如何使用输入域测试法:
输入域测试法实际上是在等价类划分法、边界值分析法的基础上考虑了特殊值
测试等其他情况,因此从步骤来讲,只需要在使用完等价类划分、边界值分析
的基础上在考虑“特殊值”和“长时间输入”。
2、输出域覆盖法
覆盖了输入域所有等价类和边界值的用例,并不一定能完全覆盖输出域的等价
类和边界值。分析各输出的等价类,通过选择那些会导致各个输出的等价类被达到
的输入点来执行测试,期望达到输出域等价类覆盖(Output Domain Coverage)
如何使用输出域分析法:
⑴ 针对输出域划分等价类;
⑵ 分析样点(上点、内点、离点)
⑶ 确定覆盖的输出点,反推应该输入的输入值
一般来讲,构造这种测试数据需要对被测系统的功能很了解,因此熟悉和了解软件的
内部实现和逻辑也很重要。
3、异常分析法
系统异常分析法就是针对系统可能存在的异常操作、软硬件缺陷引起的故障进行
分析,依此设计从测试用例。主要针对系统的容错能力,故障恢复能力进行测试。
如何使用异常分析法:
⑴ 针对系统罗列可能的故障
⑵ 针对每种可能故障设计测试用例
4、错误猜测法
- 错误猜测法就是根据经验猜想可能有什么问题并依此设计测试用例
如何使用错误猜测法:
⑴ 确定合适的错误猜测Checklist
⑵ 确定需要进行错误猜测的测试子项
⑶ 根据Checklist检查对应测试子项规格进行错误猜测
- 错误猜测法只能作为测试设计的补充(针对系统的薄弱环节进行的测试用例补充)
而不能单独用来设计测试用例,否则可能会造成测试的不充分
九、用例设计方法总结