测试用例的基本要素
测试用例的概念:为了实施测试而向被测试系统提供的一组集合,包括测试环境,操作步骤,测试数据,预期结果等要素
评价测试用例的标准:
用例表达清楚,无二义性
用例可操作性强
用例输入输出明确,一条用例只有一个预期结果
用例的可维护性好
用例对需求的覆盖率高
暴露程序的Bug的能力强
测试用例的设计方法
测试用例的总体设计方法
基于需求的设计
RBT是基于需求的测试方法,会使测试更加有效,因为它使测试专注于质量问题产生的根源,即需求
基于需求的测试是一种最根本的软件测试,重点关注以下两大关键问题:
①验证需求是否正确,完整,无二义性,并且逻辑一致
②要从“黑盒”的角度,设计出充分并且必要的测试集,以保证设计和代码都能完全符合需求
具体的设计测试用例的方法
一.等价类
依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例通过,则认为所代表的等价类测试通过,这样可以用较少的测试用例达到尽量多的功能覆盖
有效等价类: 对于程序的规格说明书是合理的,有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能
无效等价类: 根据需求说明书,不满足需求的集合
例子:
登录所需的用户名,6-15位的字母,区分大小写
有效等价类:6-15位的A-Z;6-15位的a-z;6-15位的大小写组合
无效等价类:6-15位的数字;6-15位的特殊字符;6-15位的数字加特殊字符;长度小于6位的数字/字母/特殊字符;长度大于15的数字/字母/特殊字符
二.边界值
边界值分析法就是对输入输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充。
例子:
1.输入框长度为1-11:取边界值:0,1,2,10,11,12
2.运动员的参赛项目为1-3项:取边界值:0项,1项,2项,3项,4项
注册邮箱的软件需求为例子:
用户名要求长度为6-15位
边界值上的点:5,6,7,14,15,16
在实际的测试过程中,会将等价类和边界值结合起来使用,所以最终确认的用例设计为:5,6,7,10,14,15,16
三.因果图
因果图是一种简化了的逻辑图,能够直观的表明程序输入条件和输出动作之间的相互关系。因果图法是一种借助图形来设计测试用例的一种系统方法,适用于被测试程序具有多种输入条件,程序的输出又依赖于输入条件的各种情况
1.恒等关系
恒等关系:如果原因为真,那么结果必定为真
2.与
只有两个原因都为真,那么结果为真
3.或
2个原因中有一个为真时,结果就为真
4.非
只有原因为假,结果才为真
因果图设计测试用例的方法
①分析所有可能的输入和输出
②找出输入输出之间的对应关系
③画出因果图
④把因果图转化为判定表
⑤把判定表对应到每一个测试用例
案例分析:
假设业务单据的处理规则为:“某宝618活动,订单已提交,订单合计金额大于300元或者有红包,则优惠”
1.分析输入输出都有哪些
输入:订单已提交,金额大于300,有红包
输出:优惠,不优惠
2.找出输入输出之间的对应关系
①订单已提交,金额大于300,有优惠
②订单已提交,有红包,有优惠
③订单已提交,金额大于300并且有红包,有优惠
④订单已提交,金额小于等于300并且没有红包,无优惠
⑤订单未提交,无优惠
3.画因果图
4.画判定表
为了方便画出因果图和判定表,对条件进行编号
1:订单已提交
2:订单金额大于300
3.有红包
21:有优惠
22:无优惠
11:中间结果
有3个条件,2个输出,所以表的列数是222=8列
5.最终的测试用例
所以最终的测试用例为1,2,3,4,5(包含6,7,8)
因果法设计测试用例可以帮助测试人员理清2输入和输出的关系,但是对于比较复杂的输入和输出,会耗费大量时间
四.正交排列
正交法的目的就是为了减少用例数量,用尽量少的用例覆盖输入的两两组合
因素: 在一项实验中,凡是要考察的变量称为因素
水平: 在试验范围内,因素被考察的值称为水平
正交表的两条性质:
1.每一列各数字出现的次数一样多
2.任意两列所构成的各有序数对出现的次数一样多
正交表设计测试用例的步骤
1.有哪些因素(变量)
2.每个因素有哪几个水平
3.选择一个合适的正交表
4.把变量映射到表中
5.把每一行的各因素水平的组合作为一个测试用例
6.再加上自己认为可疑且没有在表中出现的用例组合
案例分析:
以用户用邮箱注册为例子
1.因素:姓名,邮箱,密码,确认密码,验证码
2.水平:填写,不填写
3.表中的因素数=5
表中每个因素的水平数=2(填写或不填写)
正交表的行数:((水平数-1)*因素数)+1
正交表的列数:因素数
4.生成正交表
5.增补测试用例
如还有五个因素都不填写的时候
当水平数不同的时候,可以用正交表设计测试用例吗?
可以的,将所有水平数找出来,找一个最大的水平书,然后去查正交表,比较麻烦
有一个工具PICT,可以输入因素数和水平数生成正交表,就不用自己设计了
五.场景设计法
现在软件几乎都是用事件触发来控制流程的,事件触发时候的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。
该种方法可以比较生动的描绘出事件触发时的情景,有利于测试设计者设计测试用例。
案例分析:
以注册为例(想象自己注册时的流程):
六.错误猜测法
经验丰富的测试人员喜欢的一种测试方法
基于经验和直觉,找出程序中可能出现的错误,有针对的设计测试用例
案例分析:
还是以注册为例子,重点关注
①姓名中的特殊字符
②密码校验中的大小写
③密码发送是否明文
测试用例的粒度
好的测试用例是一个不熟悉业务的人也能够依据用例来很快的进行测试
粒度:指测试用例编写的详细程度
1.如果测试用例写的过于复杂,会带来如下问题:①效率问题,以及维护成本大。另外测试用例过于详细留给测试人员的思考空间就会比较少,限制思维
2.如果测试用例写的过于简单,只是将需要测试的模块记录下来,它的作用仅仅是在测试过程中作为一个简单的测试计划,这样很容易在测试过程中遗漏掉一些重要的测试。
而大多数测试团队在编写测试用例时是介于两者之间的。也应该根据项目的实际情况,测试资源来决定测试用例的编写粒度