测试用例 (一)
一、测试用例格式
二、用例设计方法 等价类
1、定义
等价类:等价定义→等价类划分→等价类划分规则→进行用例设计
无效等价类不做组合
等价 定义 |
具有相同属性或者方法的事物集合 |
||||
这个集合中某个个体所表现的特征与其他个体完全一致 |
|||||
对于某个被测对象的测试输入而言,某个个体能够被接受或被拒绝,则该个体在集合中的任意个体都应该被接受或被拒绝 |
|||||
等价类 划分 |
有效等价类 |
针对被测对象而言,合理的、有意义的、系统接受的输入 |
用户名长度在[6,18] |
||
无效等价类 |
针对被测对象而言,不合理的、无意义的、系统不能接受的输入 |
用户名长度大于18位,或者小于6位 |
|||
等价类 划分规则 |
如果需求规定了输入域的取值个数或确定了某个范围时,则可确定一个有效等价类及两个无效等价类 |
有效等价类 |
用户名长度在[6,18] |
||
无效等价类 |
用户名长度大于18位,或者小于6位 |
||||
如果需求规定了某个输入域的集合,或者必须如何的情况下,可确定一个有效等价类及一个无效等价类 |
有效等价类 |
以字母开头 |
|||
无效等价类 |
非字母开头 |
||||
如果需求规定了某个输入域是真假值时,可确定一个有效等价类和一个无效等价类 |
|||||
如果用户需求规定了输入域是一组值,则可确定若干个有效等价类及一个无效等价类 |
京东商城 |
砖石会员、金牌会员、铜牌会员和普通注册用户 |
|||
用户需求规定必须遵守某种规则时,可确定一个有效等价类及若干个从不同角度违反规则的无效等价类 |
以字母开头 |
有效等价类:以字母开头; 无效等价类:以数字、汉字或者特殊符号开头 |
|||
进行 用例设计 |
根据需求,划分有效及无效等价类,有效等价类同意编号,无效等价类统一编号 |
||||
设计一个新的测试用例,使其尽可能的覆盖所有尚未覆盖的有效等价类,直到所有有效等价类都被覆盖 |
|||||
设计一个新的测试用例,使其仅覆盖一个无效等价类,直到所有无效等价类都被覆盖 |
|||||
等价类四则运算法 |
加 |
不考虑需求其他子项,细致分解当前测试点及详细需求,做累加 |
|||
减 |
根据业务规则减少,排除相关不可能出现的规则,减少不可能出现的组合 |
||||
乘 |
如果有效等价类中具有互斥条件的需求时,可进行相乘得到用例个数 |
||||
除 |
排除所有具有重复特性的等价类,尽可能做到有效等价类之间的交集为空,无效等价类之间的交集也为空,有效及无效等价类的并集为整个输入域 |
2、使用场景
具有相同属性或者方法的事物集合、这个集合中某个个体所表现的特征与其他个体完全一致、对于某个被测对象的测试输入而言,某个个体能够被接受或被拒绝,则该个体在集合中的任意个体都应该被接受或被拒绝
例如 用户登录 ** 6~18个字符,包括数值、字母、下划线;** 字符开头,字母或数字结尾,不区分大小写
3、分析过程 (具体案例)
- 分析过程
- 测试计划
三、边界值
1、定义
例:用户名长度为6-18位
边界值 三点 |
上点 |
边界上的点 |
6 |
8 |
离点 |
离上点最近的点 |
5 |
19 |
|
根据上点的精度确定 |
|
|
||
内点 |
边界有效范围内的任一一点 |
10 |
|
|
如何确定离点 |
如果边界是闭区间,则离点在外 |
[6,18] |
上点:6,18 离点:5,19 内点:10 |
|
如果边界是开区间,则离点在内 |
(6,18) |
上点:6,18 离点:7,17 内点:10 |
||
边界值 方法应用步骤 |
根据等价类方法划分有效等价类和无效等价类,确定上点、离点及内点,每个点统一编号 |
|
|
|
设计一个新的用例,使其尽可能的覆盖所有尚未覆盖的有效等价类,直到所有有效等价类完全覆盖 |
|
|
||
设计一个新的测试用例,使其仅覆盖一个无效等价类,直到所有无效等价类完全覆盖 |
|
|
||
|
|
2、使用场景
边界值 应用场景
|
如果需求规定了取值范围或规定了取值个数时,可利用该范围的边界内及边界附近的数据进行测试 |
[6,18] |
6,18,5,19,10 |
如果需求规定了取值的个数,则少于个数一个或多于个数一个的值进行进行测试 |
购买5件商品则打8折 |
4或5或6件商品 |
|
如果需求规定了一个有序集合的时候,可使用该集合的第一个和最后一个值进行测试 |
下拉列表有4个城市名可供选择 |
第一个和最后一个城市 |
|
如果程序中使用一个内部数据结构的话,则应从该数据结构的边界进行考虑 |
Int型
|
在int长度范围内 |
3、分析过程 (具体案例)
四、判定表 (电商类)
1、定义
判定表定义 |
分析和表述若干输入条件下,被测对象针对这些输入做出的响应一种工具 |
||
|
在遇到复杂业务逻辑时,可以利用该表理清业务逻辑关系 |
||
重要概念
|
条件 |
条件桩 |
需求规格说明书定义的被测对象的所有输入 |
|
条件项 |
针对条件桩所有可能的输入数据的真假值 |
|
动作 |
动作桩 |
针对条件被测对象可能采取的所有操作 |
|
|
动作项 |
针对动作桩被测对象响应的可能取值 |
|
规则 |
|
动作项和条件项组合在一起,形成的业务逻辑处理规则 |
|
判定表 应用步骤
|
1、理解需求,确定条件桩、动作桩 |
||
2、设计和优化判定表 |
|||
3、填写动作项 |
|||
4、根据判定表中输出结果的表现,进行判定表的合并(非必须) 合并(即简化判定表)条件:如果输出相同,在其对应输入中,有且只有一个条件的取值对动作不产生任何影响则可合并(合并存在一定风险) |
|||
5、抽取测试用例 |
2、使用场景
条件 与 结果 之间的关系 考虑使用 判定表
3、分析过程 (具体案例)
案例一 :如果用户欠费或停机,则不允许主被叫
(1)、分析需求,得到 有效等价类 和无效等价类
(2)、根据 等价类 得到 判定表
** 其中 4 条用例 2^2得到(2个条件桩,每个条件桩2中状态)
(3)、根据判定表 编写测试用例
案例二 :订购单的检查
如果金额大于500元,又未过期,则发出批准单和提货单;
如果金额大于500元,但过期了,则不发批准单;
如果金额小于等于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。
(1)、分析需求,得到 有效等价类 和无效等价类
金额是否大于500;是否过期;批准单是否发出
(2)、根据 等价类 得到 判定表
(3)、根据判定表 编写测试用例
五、 因果图
1、定义
输入与输入 关系 |
异 |
所有输入条件中最多有一个产生,也可以一个没有 |
或(or) |
所有输入条件中,最少有一个产生、或者多个、或者所有 |
|
唯一 |
所有输入条件中,有且只有一个条件产生 |
|
要求 |
所有输入条件,只要有一个产生,其他跟着也会出现 |
|
输入与输出关系 |
恒等 |
当输入条件发生时,结果一定会出现 |
当输入条件不发生时,结果一定不会出现 |
||
非(not) |
当输入条件发生时,结果一定不会发生 |
|
当输入条件不发生时,结果一定会出现 |
||
与(and) |
当多个输入条件中,只有所有输入条件都发生,结果才会出现 |
|
或(or) |
当多个输入条件中,只要有一个发生,结果就会出现 |
2、使用场景
条件 与 条件 之间存在复杂关系 考虑使用因果分析
3、分析过程 (具体案例)
案例1:有一个修改文件的功能性需求:如果第一列是A或B,第二列数字,则修改文件;如果第一列不正确,则给出M,第二列不正确则给出L。
(1)、根据需求 分析出因果
(2)、画出因果节点图
(3)、根据 因果图 得到因果表
(4)、编写出 测试用例
六、 正交试验
1、定义
t因子c水平的正交表通过查表可得 (t因子,代表 ;c水平,代表)
名词 |
因子 |
所有参与试验的影响试验结果的条件称为因子 |
水平 |
影响试验因子的取值或输入称为水平 |
|
特点 |
整齐可比 |
在同一张正交表中,每个因子每个水平出现的次数完全相同,试验中,每个因子的每个水平与其他因子的水平参与试验的机率完全相同 |
均匀分撒 |
同一张正交表中,任意两列的水平搭配是完全相同的 |
|
设计流程 |
分析测试需求获取因子及水平 |
|
根据因子水平选择合适的正交表 |
||
替换因子水平,获取试验次数 |
||
根据经验或其他因素补充试验次数 |
||
细化输出获得测试用例 |
||
注意 |
选择正交表时,因子与水平恰好与正交表相同 |
|
被测对象因子与正交表中的因子数不同时,选择正交表中因子稍大于被测对象因子数,且试验次数最少的、多余的因子弃用 |
||
被测对象水平与正交表中的水平不同时,可根据实际情况进行合并,然后拆分 |
||
因子、水平都不相同时,则可选择因子、水平稍大于被测对象的,且试验次数最少的 |
缺点:没有办法考虑实际因子之间的关系问题。
2、使用场景
在复杂的 业务逻辑关系中,针对4 判定表方法,得出的测试用例 太多,可以考录使用正交法
3、分析过程 (具体案例)
案例一:采集用户的用户信息,用户名、联系电话、通讯地址
(1)、确定因子 和水平
因子:1、客户信息;2、联系电话、3、通信地址 (3因子)
水平:1、客户信息:a、输入;b、不输入 (2水平)
2、联系电话:a、输入;b、不输入 (2水平)
3、通讯地址:a、输入;b、不输入 (2水平)
(2)、得到正交试验图
** 搜索 “3因子2水平”,得到正交试验图 (数学知识)
(3)、编写测试用例
七、 状态迁移
1、定义
定义 |
关注被测对象的状态变化,在需求规格说明书中是否有不可达到的状态和非法的状态,是否产生非法的状态转移 |
状态 |
被测对象在特定输入条件下所保持的响应形式 |
方法流程 |
根据需求明确状态节点 |
绘制状态迁移图 |
|
绘制状态迁移树 |
|
抽取测试用例 |
2、使用场景
例如 商品选购,其中就有多种状态。(一个完整的流程中,要经过多种状态)
3、分析过程 (具体案例)
案例一:
(1)、分析案例中的状态,得到状态图节点图
(2)、根据 状态节点图 得到 状态流程图
(3)、得出一条条测试流程 (测试用例)
八、 流程分析
1、定义
场景设计-三个流程 |
基本流 |
通过业务流程输入都为正确的,能够最后达到目标的流程 |
ATM取款:插入银行卡,输入密码,输入取款金额,取款,取卡 |
备选流 |
通过实现业务流程时,因错误操作或异常输入,导致流程存在反复,但最终能够完成期望业务的流程 |
ATM取款:插入银行卡,输入密码(第一次输入错误,重新输入后完成剩余操作) |
|
异常流 |
通过实现业务流程时,因错误操作或异常输入,导致业务没有正确完成 |
ATM取款:插入银行卡,输入密码,错误3次,吞卡 |
|
使用方法 |
理解需求,确定业务流程(基本流、备选流、异常流) |
||
绘制流程图,再次明确流程路径 |
|||
根据业务流程图,抽取测试路径,每次路径需包含一个从未走过的路径 |
|||
细化路径设计测试用例 |
|||
注意点:需使用等价类、边界值、正交试验、判定表、因果图等方法保证单个功能的正确性 |
缺点:本身不校验单个功能节点的正确性,只关心流程能不能走通
2、使用场景
3、分析过程 (具体案例)
案例:
(1)、分析需求 画出流程图
(2)、根据 流程图 编写测试用例