等价类
等价类划分法是把所有可能的输入数据,即程序的输入划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例
相关概念
等价
- 具有相同属性或者方法的事物的集合
- 这个集合中某个个体所表现的特征与其他个体完全一致
对于某个被测对象的测试输入而言,某个个体能够被接受或被拒绝,则该个体所在集合中的任意个体都应该被接受或被拒绝
等价划分
有效等价类:针对被测对象而言,合理的、有意义的、系统接受的输入
- 无效等价类:针对被测对象而言,不合理的、无意义的,系统不能接受的输入
设计测试用例的步骤
- 需求规定了输入域的取值个数或确定了某个范围时,则可确定一个有效等价类及两个无效等价类。比如“用户名长度在[6,18]”,可以得到一个有效等价类“[6,18]”和两个无效等价类“[-∞,6]”、“[18,+∞]”。
- 需求规定了某个输入域的集合,或者必须如何的情况下,可以确定一个有效等价类及一个无效等价类。比如“用户名以字母开头”,可以得到一个有效等价类“用户名以字母开头”和一个无效等价类“用户名以非字母开头”。
- 需求规定了某个输入域是真假值时,可以确定一个有效等价类和一个无效等价类。比如“用户是否注册”,可以得到一个有效等价类“用户已注册”和一个无效等价“用户未注册”。
- 需求规定了输入域是一组值,则可以确定若干个有效等价类及一个无效等价类。比如“用户有白金会员、黄金会员、黑金会员”,可以确定三个有效等价类“白金会员、黄金会员、黑金会员” 和一个无效等价类“非会员”。
- 需求规定必须遵守某种规则时,可确定一个有效等价类及若干个从不同角度违反规则的无效等价类。比如“以字母开头”,可以得到一个有效等价类“以字母开头”,无效等价类“以数字开头、以汉字开头、以特殊符号开头等”。
用例转化
设计用例尽可能地覆盖有效等价类,而无效等价类均单独设计用例覆盖
边界值
对程序输入或输出的边界值进行分析和测试,是对等价类划分法的一种补充。
相关概念
边界值三点
- 需求规定了取值范围或规定了取值个数时,可以利用该范围的边界内及边界附近的数据进行测试。比如“[6,18]”,可以得到测试点“6、18、5、19、10”。
- 需求规定了取值个数,则少于个数一个或者多于个数一个的值进行测试。比如“邀请3人送礼品”,可以得到测试点“2、3、4”。
- 需求规定了一个有序集合的时候,可使用该集合的第一个和最后一个值进行测试。比如,“下拉框有5个城市可选择”,可得到测试点“第一个、最后一个城市”。
- 如果程序中使用了一个内部数据结构的话,则可以考虑该数据结构的存储边界。比如,Java的Int类型(最大数值为:2^31-1;最小数值为:-2^31),可以得到一个取值范围“[-2^31,2^31-1]”,再根据范围的边界规则得到测试点。
用例转化
边界内的点为有效等价类,边界外的点为无效等价类;上点、离点、内点均单独设计用例覆盖
判定表
分析和表述若干输入条件下,被测对象针对这些输入作出的响应一种工具。在遇到复杂业务逻辑时,可以利用该表,理清业务逻辑关系。
相关概念
- 条件-条件桩:需求定义的所有条件。
- 条件-条件项:针对它左列条件的取值。
- 动作-动作桩:需求定义的可能采取的操作。
- 动作-动作项:在条件项的各种取值情况下应该采取的动作。
- 规则:动作项和条件项组合在一起,形成的业务逻辑处理规则。在判定表中贯穿条件项和动作项的一列就是一条规则。判定表中列出多少组条件取值,也就有多少条规则。
设计测试用例的步骤
- 理解需求,确定条件桩、动作桩
- 设计和优化判定表
- 填写动作项
- 根据判定表中输出结果的表现,进行判定表的合并(非必须)
- 合并条件(简化判定表):如果输出相同,在其对应输入中,有且只有一个条件的取值对动作不产生任何影响则可合并(合并存在一定风险,可能会造成漏测)
- 抽取测试用例
用例转化
确定判定表无误后,将判定表的横纵交叉点为一个场景,设计用例覆盖。
因果图
因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。
相关概念
输入与输入关系
- 异:所有输入条件中最多有一个产生,也可以一个没有。
- 或:所有输入条件中,最多有一个产生、或者多个、或者所有。
- 唯一:所有输入条件中,有且只有一个条件产生。
-
输入与输出关系
恒等:当输入条件发生时,结果一定会出现。
- 非:当输入条件发生时,结果一定不会发生。
- 与:当做个输入条件中,只有所有输入条件都发生,结果才会出现。
- 或:当多个输入条件中,只要有一个发生,结果就会出现。
设计测试用例的步骤
正交试验
正交试验法常见于页面组合设置用例设计和兼容性组合用例设计。用最少的实验覆盖最多的操作,测试用例设计很少,效率高。
相关概念
Ln(mk)
L: 表示正交表
n: 实验行数 且 n = (m-1)*k + 1
k: 因素数 (输入 或 控件数量)
m: 水平数 (输入的取值 或者 每个控件的下拉选项数量)
标准正交表的每个因素的水平数相同。
设计测试用例的步骤
- 确定因子(变量)
- 确定水平(变量的取值)
- 选择一个合适的正交表
- 把变量的值映射到表中
用例转化
把每一行的各因素水平的组合作为一个测试用例,加上你认为可疑且没有在表中出现的用例组合。辅助工具
可以使用allpairs 生成正交表组合结果
状态迁移
关注被测对象的状态变化,在需求定义中是否有不可到达和非法的状态,是否产生非法的状态转移。
相关概念
设计测试用例的步骤
- 根据需求明确状态节点
- 绘制状态迁移图
- 绘制状态迁移树
- 抽取测试用例
流程分析法(场景设计法)
场景法是一种通过使用“场景”对软件系统的功能点或业务流程进行描述,即针对需求模拟出不同的场景进行所有功能点及业务流程的覆盖,从而提高测试效率并达到良好效果的方法。
相关概念
- 基本流:通过业务流程输入都为正确的,能够最后达到目标的流程
- 备选流:通过实现业务流程时,因错误操作或异常输入,导致流程存在反复,但最终能够完成期望业务的流程
- 异常流:通过实现页面流程时,因错误操作或异常输入,导致业务没有正确完成
设计测试用例的步骤
- 理解需求,确认业务流程(基本流、备选流、异常流)
- 绘制流程图,再次明确流程路径
- 根据业务流程图,抽取测试路径,每次路径需包含一个从未走过的路径
- 细化路径设计测试用例