测试用例就得这么设计

Posted 满眼*星辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试用例就得这么设计相关的知识,希望对你有一定的参考价值。

测试用例的基本要素

向测试系统发起的一组集合,测试平台,测试数据,测试步骤,预期结果等。
(测试方式,标题,重要性,优先级,功能模块等)

测试用例的设计方法

基于需求的设计

根据需求去设计测试用例

验证需求的正确性;
分析需求,细化需求,从需求中提炼功能模块,划分子功能,根据每一个子功能去写测试用例

用户需求测试

题目:购买3000块钱以内的华为只能手机

价格:3000以内(小于等于),测试3000,2999,3001
手机类型:智能手机
品牌:华为
手机基本功能测试:打电话,发短信,APP的安装使用,连网等。

软件需求测试

题目:若用户未收到激活邮件,可在登录界面录入电子邮件的密码后,再次发送激活邮件

用户收到激活邮件
在登录界面输入电子,密码,不会发送激活邮件,并且提示用户,激活邮件已发送
用户没有收到激活邮件
在登录页面输入电子邮件,密码,可以重新发送激活邮件
邮件:内容,激活链接,排版,字体

每次发送激活邮件,仅在发送邮件后24消失之内有效,超过24消失后需要重新发送激活邮件
(1)激活邮件发送,24小时之内(包括24小时整)可以激活系统
(2)激活邮件发送,24小时之后激活链接失效,无法激活系统
(3)24小时之内激活系统,超过24小时之后再次点激活链接,系统提示:该用户已经激活系统
(4)24小时之内激活系统,24小时之内再次点击激活链接,提示:该用户已经激活系统
邮件内容的测试:

具体的设计方法

等价类

把输入(特殊情况下考虑输出)划分成若干等价类,从每一个等价类当中选一个测试用例进行测试,如果这个测试用例通过,那我们就说明这个测试用例代表等价类通过。

if(a < 99) {
	System.out.println("a小于99");
} else if(a >= 99 && a <= 1999) {
	System.out.println("a在99和1999之间");
} else {
	System.out.println("");
}

我们对于小于99的数据,比如55,66,77就相当于等价类,等价类测一次就好了

有效等价类:根据需求规格说明,有意义的输入数据集合,称为有效等价类;
无效等价类:根据需求规格说明,不符合需求的集合

作用:为了解决测试用例太多,输入没有办法穷举的情况

|用户名 | 必填,录入用户名 | 6至15 | 字符类型A-Z,不区分大小写|

6-15 根据长度划分等价类:
有效等价类:6-15位
无效等价类:小于6位,大于15位

字符类型 根据字符类型划分等价类:
有效等价类:A-Z,a-z,大小写混合
无效等价类:汉字,特殊字符,标点符号,空格,A-Z或者a-z和其他字符混合

边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界

6至15:需要测试5,6,15,16

等价类和边界值法一般结合起来进行测试用例的设计

因果图

因果图时一种逻辑图

当输入有很多,不同输入的组合对应不同的输出,用因果图来分析不同输入组合和不同输出之间的关系

在这里插入图片描述

用因果图法设计测试用例的步骤

  1. 分析所有的输入输出
  2. 找出输入输出之间的逻辑关系
  3. 根据输入输出之间的关系画因果图
  4. 根据因果图画判定表
  5. 根据判定表设计测试用例

练习:
“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进入优惠”

(1)分析输入输出
输入:金额大于300,金额小于等于300,有红包,没红包,订单已提交,订单未提交
输出:有优惠,没有优惠

(2)输入输出的逻辑关系
订单提交,金额大于300,有红包–》优惠
订单提交,金额大于300,无红包–》优惠
订单提交,金额小于等于300–》优惠
订单提交,金额小于等于300–》不优惠
订单未提交–》不优惠

(3)画因果图
在这里插入图片描述
(4)画判定表
在这里插入图片描述
(5)写测试用例
订单已提交,金额大于300,有红包–》有优惠
订单已提交,金额大于300,没有红包00》有优惠
订单已提交,金额小于等于300,有红包–》有优惠
订单已提交,金额小于等于300,没红包–》无优惠
订单未提交,金额大于300,有红包–》无优惠
订单未提交,金额大于300,没有红包00》无优惠
订单未提交,金额小于等于300,有红包–》无优惠
订单未提交,金额小于等于300,没红包–》无优惠

正交法

研究多因素多水平的一种实验(测试)方法。根据正交性,从输入组合当中选取最优的组合进行测验,分析结果,通过这些最优组合得出的实验结果来分析这个实验结果

  • 因素:输入的变量
  • 水平:变量的取值
  • 正交表的构成:
  • 列:因素数,变量的个数
  • 水平数:每个变量的最大值个数
  • 行:l(正交表的行)= (水平书 - 1)* 因素数 + 1

(注意:只适用于水平数星等的情况,如果水平数不相等,可以用工具或者直接查正交表)

正交表的性质:

  1. 每一列不同数据出现的次数一致
  2. 任意 两列 各个数据的组合出现的次数一样
    在这里插入图片描述

正交表设计测试用例的步骤

  1. 确定所有的输入(变量)
  2. 确定每一个变量的取值的个数
  3. 确定因素数(正交表的列),水平数(正交表的行)
  4. 根据正交表的性质,把变量的值映射到正交表中
  5. 写测试用例,正交表的每一行就是一个测试用例
  6. 补充正交表种没有的但是你认为可能出现的测试用例

练习
姓名、邮箱、密码、确认密码、验证码
只考虑每一项输入不输入两种情况

  1. 确定所有的输入:姓名、邮箱、密码、确认密码、验证码

  2. 确定每一个变量的取值的个数:填写、不填写 --》2

  3. 确定因素数:5,水平数:2
    正交表的列 = 因素数 = 5
    正交表的行 = (水平数-1)* 因素数 + 1 = 1 * 5 + 1 = 6

  4. 根据正交表的性质,把变量的值映射到正交表中
    在这里插入图片描述

  5. 写测试用例
    姓名填写,邮箱不填写,密码填写,确认密码不填写,验证码填写
    姓名不填写,邮箱填写,密码不填写,确认密码填写,验证码不填写
    姓名不填写,邮箱不填写,密码填写,确认密码不填写,验证码不填写
    姓名填写,邮箱填写,密码不填写,确认密码不填写,验证码填写
    姓名填写,邮箱填写,密码填写,确认密码填写,验证码不填写
    姓名不填写,邮箱不填写,密码不填写,确认密码填写,验证码填写

场景法

ATM取款流程
插卡——输入密码——输入金额——取钱——退卡

ATM取款场景(流程)

异常:

  1. 插卡:
    卡插反了,卡消磁了,插入其他卡(公交卡,会员卡等),挂失卡,注销卡,卡被吞,账户冻结
  2. 输入密码:
    密码连续三次输错,账户被锁定;
    密码前两次输错或者第一次输错,接下来一次输对
    忘记密码,手机上重置密码
  3. 输入金额:
    金额大于银行卡余额;
    ATM机本身余额不足;
    输入金额低于ATM机要求的金额;
    输入零钱(ATM不允许);
    超过每日最大可以取款的金额;
  4. 取钱
    长时间未取(看ATM机器的处理);
    遗忘了部分钱没有取
  5. 其他:
    ATM网络异常;
    断电了;
    机器故障

根据异常点写测试用例:

  1. 卡插反了:提示“插卡错误”;
  2. 卡消磁:取款失败,提示“无效卡”;
  3. 插入其他卡:取款失败,提示“无效卡”;
  4. 挂失卡:取款失败,提示“无效卡”;
    。。。。。。

根据场景法设计测试用例:
把场景中的每一个功能点提出来,考虑从功能点可能的不同的情况,根据这些情况取设计测试用例

错误猜错法

根据测试人员的知识、经验,直觉去判断哪一个模块会出现问题,专门针对这个模块进行测试用例的编写

作为一种补充的设计测试用例的方法

面试题:黑盒测试设计测试用例的方法有哪些?
等价类,边界值,因果图,正交法,场景法,错误猜错法

习题练习

1. 等价类、边界值

1.根据等价类和边界值进行测试用例的设计
在这里插入图片描述
程序的需求为:
(1)姓名:1----20个字符,不能包含数组,不能为空
(2)年龄:18----60之间的整数,不能为空

姓名:
有效等价类:1–20个字符
无效等价类:输入为空、超i过20个字符、1–20个数字、1–20个数字+字符混合、1–20个空格+数字、1–20个空格+字符、混合
边界值:输入为空(啥都不输入)[空格是字符]

年龄:
有效等价类:18–60之间的整数
无效等价类:空格、小数、汉字、大小写字母、小于18的整数、大于60的整数、特殊字符
边界值:17、18、19、59、60、61

2. 因果图、场景法

产品说明书,有一个处理单价为1.5元的盒装饮料的自动售货机软件,若投入1元5角硬币,按下“可乐”、“雪碧”、或“红茶”按钮,相应的饮料就送出来,若投入的是2元硬币,在送出饮料的同时退还5角硬币

(1)输入和输出:
输入:输入1.5硬币,输入2元硬币,按“可乐”、按“雪碧”、按“红茶”
输出:可乐,雪碧,红茶,输出5角硬币

(2)分析输入和输出之间的关闭
输入1.5元硬币,按“可乐”,输出“可乐”;
输入1.5元硬币,按“雪碧”,输出“雪碧”;
输入1.5元硬币,按“红茶”,输出“红茶”;
输入2元硬币,按“可乐”,输出“可乐”,输出5角硬币;
输入2元硬币,按“雪碧”,输出“雪碧”,输出5角硬币;
输入2元硬币,按“红茶”,输出“红茶”,输出5角硬币;

(3)画因果图

在这里插入图片描述

(4)根据因果图画判定表
在这里插入图片描述

(5) 根据判定表写测试用例
输入1.5元硬币,按“可乐”,输出“可乐”;
输入1.5元硬币,按“雪碧”,输出“雪碧”;
输入1.5元硬币,按“红茶”,输出“红茶”;
输入2元硬币,按“可乐”,输出“可乐”,输出5角硬币;
输入2元硬币,按“雪碧”,输出“雪碧”,输出5角硬币;
输入2元硬币,按“红茶”,输出“红茶”,输出5角硬币;
输入2元硬币,不安任何饮料按键,不出饮料,超时会提示“请按相应的饮料按键”
输入1.5元硬币,不安任何饮料按键,不出饮料,超时会提示“请按相应的饮料按键”
不输入硬币,不按任何饮料键,不出饮料
不输入硬币,按任何饮料键,不出饮料
先投入2元硬币,再投入1.5元硬币,自动售卖机会提示“不允许多次投入等于或者超过饮料价钱的硬币,请联系工作人员“

场景法用例:

  1. 自动售卖机要有防盗警报
  2. 自动售卖机网络中断
  3. 自动售卖机断电
  4. 输入1.5硬币后,自动售卖机断电了或者断网了,提示”请联系工作人员处理“
  5. 输入钱了,相应的饮料没有了,提示”请联系工作人员“
  6. 输入假币,提示”请输入正常的货币“
  7. 输入游戏币,提示”请输入正常的货币“

以上是关于测试用例就得这么设计的主要内容,如果未能解决你的问题,请参考以下文章

测试用例设计——如何提高测试覆盖率

如何让maven跳过某些指定的Test用例?

软件用例写作与缺陷管理

黑盒测试用例设计总结

Go语言 斐波那契数列的解法

单元测试运行原理探究