测试用例设计方法
什么是测试用例: 简单地说,测试用例就是: 设计一个情况,软件程序在这种情况下,必须能够正常运行并 且达到程序所设计的预期结果
(1)等价类划分法
等价的定义
a.具有相同属性或方法的集合
b.这个集合中某个个体所表现的特征与其他个体完全一致
c.对于某个被测对象的测试输入而言,某个个体被接受或拒绝,那么这个个体所在集合的其他个体也都应该被接受或拒绝
等价类划分
a.有效等价类
针对被测对象而言,合理的,有意义的,被系统接受的输入,如用户名长度在6-18
b.无效等价类
针对被测对象而言,不合理,无意义的,不被系统接受的输入,如用户名长度<6或>18
等价类划分规则
a.如果需求规定了某个输入域的取值个数或确定了某个范围时,则可确定一个有效等价类及两个无效等价类
例如:有效等价类:用户名长度在6-18之间
无效等价类:用户名长度大于18
用户名长度小于6
b.如果需求规定了某个输入域的集合或必须输入满足某些条件的情况下,可确定一个有效等价类和一个无效等价类
例如:有效等价类:以字母开头
无效等价类:不以字母开头
c.如果需求规定了某个输入域是真假值时,可确定一个有效等价类和一个无效等价类
d.如果需求规定了某个输入域是一组值时,可确定若干个有效等价类和一个无效等价类
例如:打折扣的用户,有效等价类:砖石会员
金牌会员
无效等价类:普通用户
e.如果需求规定某个输入域必须遵守某种规则时,可确定一个等价有效类和若干个无效等价类
例如:有效等价类:用户名以字母开头
无效等价类:用户名以数字开头
用户名以特殊符号开头
用户名以汉字开头
进行用例设计
a.根据需求,划分有效及无效等价类,有效等价类统一编号,无效等价类统一编号
b.设计一个新的测试用例时,使其尽可能覆盖所有尚未覆盖的有效等价类,直到所有的有效等价类都被覆盖
c.设计一个新的测试用例时,使其仅覆盖一个无效等价类,直到所有的无效等价类都被覆盖
等价类四则运算法
加:不考虑需求其他子项,细致分解当前测试点及详细需求,减少不可能出现的组合
减:根据业务规则减少,排除相关不可能出现的规则,减少不可能出现的组合
乘:如果有效等价类中具有互斥条件的需求时,可进行相乘得到用例个数
除:排除所有具有重复特性的等价类,尽可能做到有效等价类之间交集为空,无效等价类之间交集也为空,有效及无效等价类的并集为整个输入域
(2)边界值分析法
边界值只是一个特定的数据。例如,文本框需要输入6到18位字符。边界值有:
1)6个字符
2)18个字符
次边界:边界附近的值,按照系统规定的单位或者计算方式,一个数据的差异。
(3)判定表
建立判定表的步骤
• 第一步:确定规则的个数 • 假如有n个条件,每个条件有两个取值(0,1),故有 2n 种规则
• 第二步:列出所有的条件桩和劢作桩 • 填入条件项 • 填入劢作项,制定初始判定表
• 第三步:简化,合并相似规则或者相同动作
(4)因果图
概述:因果图法是一种适合亍描述对亍多种输入条件组合 的测试方法
• 根据输入条件的组合、约束关系和输出条件的因果 关系,分析输入条件的各种组合情况,从而设计测 试用例的方法
• 它适合亍检查程序输入条件涉及的各种组合情况。
步骤:• 第一步:根据功能说明书中规定的原因和结果之间的关系画出因果图
• 第二步:根据功能说明在因果图中加上约束条件
• 其中互斥、包含、唯一、要求时对原因的约束,屏 蔽是对结果的约束。他们的含义如下
• 互斥:表示不同时为1,即a,b,c中至多只有一个1
• 包含:表示至少有一个1,即a,b,c中不同时为0
• 唯一:表示a,b,c中有且仅有一个1
• 要求:表示若a=1,则b必须为1。即不可能a=1且b=0
• 屏蔽:表示若a=1,则b必须为0
(5)正交实验法
用正交实验小工具来完成,一般不常用
(6)状态迁移图——功能图法
(7)场景法——流程分析
原理:
• 现在的软件几乎都是用事件触发来控制流程的。测试时,可 以生动地描绘出事件触发时的情景,有利亍设计测试用例, 同时使测试用例更容易理解和执行。
• 基本流:软件功能按照正确的事件流实现的一条正确流程。 通常一个业务仅存在一个基本流,且基本流仅有一个起点和 一个终点(软件功能正确实现的流程)
• 备选流:除了基本流之外的各支流,包含多种不同的情况。(基本功能流程之外的过程)
注意:
1、 场景中必须有基本流
2、 场景中必须有内容从用例的开始,到用例的结束。
• 场景列表: • 场景1 基本流
• 场景2 基本流备选流 1
• 场景3 基本流备选流 1备选流2
• 场景4 基本流备选流 3
设计用例的步骤 :
• 根据说明,描述出程序的基本流及各项备选流
• 根据基本流和各项备选流生成丌同的场景
• 对每一个场景生成相应的测试用例
• 对生成的所有测试用例重新复审,去掉多余的测试用例 • 测试用例确定后,对每一个测试用例确定测试数据值
• * 场景法适用亍解决业务流程清晰的系统戒功能
测试用例格式
1、 标识符(用例编号):一般编号规则:TestCase_项目名称_模块名称_功能名称_0001
2、 测试项。测试用例的测试目的。一般情况下,用一句话表明目的。例如:使用谷歌浏览器打开百度首页;在QQ登录界面输入正确的用户名密码能登陆上。(表明你的测试模块、测试对象、方式、事件。)(A:人名 B 人名 C 时间 D 地点 E 事件)
3、依赖用例:一般功能流程上,下游的功能测试依赖于上游的功能测试的用例。例如:增加了一个数据的测试用例,将会被删除该数据的测试用例依赖。
4、 测试步骤。用最朴实的语言,写出来软件的操作步骤。要尽量详细。例如,在用户名文本框输入:XXX;在省份下拉列表选择:北京 城市下拉列表选择:北京
5、 测试数据:单独整合测试数据。必须和测试步骤中的数据保持一致。
6、 预期结果。准确:对象的准确,内容的准确性。原则上每一个操作,都要有一个结果。在重要的步骤之后,设定预期结果。例如:页面跳转到XXX;程序弹出对话框,提示:用户名或密码错误,请重新输入!一般和测试目的密切相关。测试目的决定了测试步骤和预期结果。
7、 测试结果。要求在测试执行完成后添加。没有执行保持为空。测试结果只有两个:通过/失败;Pass/Failed。和预期结果一致即为通过;不一致即为失败。
8、 测试人。测试的执行人。可以和设计者相同,也可以不同。
9、 备注:为了测试用例正常执行而做的特殊准备。例如:专门制造网络不畅情况下,软件错误提示;
测试用例编写注意事项
• 不要设计“穷举测试用例”
• 在详细测试用例不有效测试时间中找到平衡点
• 好的测试用例应该多关注“反向测试问题”
• 测试用例库应该不断更新和维护
• 测试用例可以复用,但要注意数据有效性不环境变化
• 测试用例是设计出来的,不是写出来的
• 多去学习经验丰富的测试工程师所设计的测试用例
• 针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法