测试用例的基本要素
测试用例是为了实施测试而向被测试系统提供的一组集合,这组集合包含测试环境,操作步骤,测试数据,预期结果等要素
评价测试用例的标准:
- 用例表达清楚,无二义性
- 用例可操作性强
- 用例的输入输出明确,一条用例只有一个预期结果
- 用例的可维护性好
- 用例对需求的覆盖率高
- 暴露程序bug的能力强
测试用例的设计方法
1. 基于需求设计测试用例
- 验证需求的正确性和合理性
- 细分需求,多细致的需求就设计多细致的测试用例
(从细分的需求里面,根据每一个功能点设计完整的测试用例)
案例:
用户需求:购买3000块钱以内的华为智能手机 (如何测试买来的手机符合用户需求?)
价格 牌子 智能手机 手机基本功能的验证
软件需求:
- 若用户未收到激活文件,可在登录页面录入电子邮件及密码后,再次发送激活邮件 (1)如果用户没有收到激活文件,可在登录页面录入电子邮件和密码之后再次发送激活文件;
(2)如果用户收到激活文件,在登陆页面输入邮件和密码之后,不会重新发送激活文件,并且提示激活邮件已发送- 每次发送激活邮件,仅在发送邮件后起24消失之内有效,超过24小时之后,需要重新发送激活邮件
(1)用户在24小时之内 (24小时之内是有效等价类) 点击激活邮件,可以激活系统
(2)用户未在超过24小时之后 (24小时之外是无效等价类) 点击激活邮件,提示失效,需要重新发送激活邮件z
(3)用户在24小时之内已经点击了激活邮件成功激活系统,超过24小时之后再次点击,提示系统已激活
2.具体的设计方法
(1) 等价类
当输入很多,没有办法穷举,把输入(特殊情况下考虑输出)划分成若干个等价类,从每一个等价类当中选出一个测试用例,如果这个测试用例测试通过,那么我们就说这个测试用例代表的等价类通过测试
- 有效等价类:对于输入偶意义的数据规格,称之为等价类
- 无效等价类
例如:
if(x > 2){ return 0; } else if(x >= -5 && x <= 2) { return 1;} else { return 2 } ``` 等价类划分: - 大于 2 - [-5 ,2] - 小于 -5 【注】等价类的边界需要专门测试一下(边界往往是最容易出错的)
(2)边界值法
针对输入输出的边界进行测试的方法
等价类划分: 边界值(只考虑整数)
- 大于 2 2 1 3
- [-5 ,2] -5 -4 -6 2 1 3
- 小于 -5 -5 -4 -6
(3)因果图法
当我们的输入有多种,不同的输入组合对应不同的输出,可以使用因果图法
因果图:
-
恒等 (如果原因为真,结果必为真)
-
与 (2个原因都为真,结果才为真)
-
或 (有一个为真,结果就为真)
-
非(原因为假,结果才为真)
如何根据因果图设计测试用例?
- 分析需求,找出所有的输入和输出
- 找出所有输入和输出之间的关系
- 画因果图
- 根据因果图判定表
- 根据判定表设计测试用例
案例:淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠
-
输入:订单提交/订单不提交、订单合计金额大于300/小于300、有红包/无红包
输出:有优惠、无优惠 -
找关系
(1)订单已经提交,金额大于300,有红包,进优惠
(2)订单已经提交,金额大于300,无红包,进优惠
(3) 订单已提交,金额小于300,有红包,进优惠
(4) 订单已提交,金额小于300,无红包,无优惠
(5)订单未提交,无优惠 -
画因果图
-
画判定表
-
写测试用例
(4)正交法
研究多因素多水平的一种实验方法,通过正交性找出实验中各因素的最优的水平组合,通过分析这些最优组合的试验结果,来分析整个试验的结果和情况
相关参数:
- 因素:待考察的变量
- 水平:待考察变量的值
- 因素数:待考察变量的个数,即正交表的列数 C
- 水平数:考察的每个变量的值的最多取值个数 T
- 正交表的行数:N = (水平数 - 1)* 因素数 + 1 (每一个因素的水平数相等)
【注】若是因素数水平数不同参考正交表,网址如下: http://support.sas.com/techsup/technote/ts723_Designs.txt
正交表的性质
- 每一列中不同的数据出现的次数一样多
- 任意两列各数据组合(组合中的数据不同)出现的次数一样多
正交法设计测试用例的步骤:
- 找出因素和水平
- 确认因素数和水平数
- 确认这个正交表(确认行、列)
- 根据正交表的性质去填充正交表的数据
- 正交表的每一行就是一个测试用例,根据正交表的每一行写测试用例
- 补充你认为可能但是正交表上没有的测试用例
例:某平台邮箱的注册,必填项有账户、邮箱、密码、确认密码、验证码5项,测试时考虑每一项是否输入对邮箱注册的影响
(5)场景设计法
把一个一个孤立的功能点组合(可能有一个的逻辑)起来,形成一个一个的场景(也可以叫业务场景)
例:ATM取款流程:插卡–输密码–输入取款金额–取钱–退卡
基本流程:插卡正确,密码输入正确,输入金额小于等于银行卡余额,按取钱按钮,取钱,退卡,顺利完成取款
异常流程:
- 取钱完成后忘记退卡,吞卡
- 取款中任一个操作超时,吞卡
- 密码连续输入错误三次,账户被锁定(锁定时间)
- 插错卡(非银行卡,卡插反)
- 卡消磁,无法取款
…
异常事件:操作超时、忘记退卡、密码错误(三次机会,超过锁定)、卡插反(重新插卡后可正常取款)、插错卡、卡消磁、输入金额大于银行卡余额、卡冻结,卡过期、ATM机余额不足、ATM机损坏、ATM网络异常、ATM功能(只存、只取、可存取)、ATM机吐出的钱与要取的钱相等、一个ATM取款金额上限、ATM取钱的面额、同一张卡取钱金额达到上限、插入的卡和ATM显示的信息不符合,取钱之后余额未更新或者数据不符合实际金额等
(6)错误猜测法(适用于补充的设计测试用例的方法)
根据测试人员的知识、经验,猜测软件哪一模块或者哪一功能点会出问题,专门针对这个功能点进行测试用例的设计