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