测试用例的基本要素
测试用例是为了实施测试而向被测试的系统提供的一组集合。这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素。
测试用例的设计方法
一、总体设计方法
基于需求的设计
- 基于需求的测试是一种最根本的软件测试,重点关注以下两大关键问题。
- (1)验证需求是否正确、完整、无二义性、逻辑一致。
- (2)要从黑盒的角度,设计出充分并且准确的测试集合,以保证测试完全满足用户需求。
用户需求:
购买3000块钱以内的华为智能手机
测试用例:
1.价格<=3000元
2.品牌为华为
3.智能手机
4.手机功能验证:
4-1.打电话
4-2.接电话
4-3.发短信
4-4.收短信
…
二、具体的测试方法
1.等价类
- 等价类:把输入(特殊情况下才考虑输出)划分为若干个等价类,从每个等价类中选取一个测试用例来进行测试,如果这个测试用例通过,那就说明这个测试用例所代表的等价类测试通过。
为了解决测试用例太多,输入没有办法穷举的情况
。
(1)有效等价类:根据需求规格说明,有意义的输入的数据集合,成为有效等价类
(2)无效等价类:根据需求说明,不符合需求的
需求:
6~18个字符、字符类型
根据长度划分等价类:
有效等价类:6~18位
无效等价类:小于6位、大于18位
根据字符类型划分等价类:
有效等价类:A~Z、a ~z、大小写混用
无效等价类:汉字、特殊字符、标点符号、空格、A~Z或者a ~ z和其它字符混用
2.边界值
- 边界值:边界值分析法就是对输入或者输出的边界值进行测试的一种黑盒测试方法,通常边界值分析法是作为对
等价类划分方法的补充
,这种情况下,其测试用例来自等价类的边界
还是以注册网易邮箱为例:
当用户名长度为6、18个字符时,测试用例是否还可以通过
或者当用户名长度为5、7、17、19个字符时,测试又会出现什么情况
3.因果图
-
因果图:是一种简化的逻辑图(恒等、与、或、非)。能直观的表明程序输入条件(原因)和输出动作(结果)之间的相互关系。
-
恒等:如果原因为真,那么结果必为真
-
与:只有当原因都为真的时候结果才为真
-
或:只要有一个原因为真,那么结果就为真
-
非:只有原因为假,结果才为真
用因果图设计测试用例的步骤: -
(1)分析所有的输入、输出
-
(2)找出输入输出之间的逻辑关系
-
(3)根据输入输出之间的关系画因果图
-
(4)根据因果图画判定表
-
(5)根据判定表设计测试用例
淘宝双十一活动,订单已提交,订单合计金额大于300元或有红包,则进优惠。
(1)分析所有的输入、输出
输入: 金额大于300;金额小于等于300;有红包;没有红包;订单已提交;订到没有提交
输出:有优惠;没有优惠
(2)找出输入输出之间的逻辑关系:
订单提交,金额大于300,有红包 ---------- 有优惠
订单提交,金额大于300,没有红包---------有优惠
订单提交,金额小于等于300,有红包-------有优惠
订单提交,金额小于等于300,没有红包-----没有优惠
订单未提交-----没有优惠
(3)根据输入输出之间的关系画因果图:
(4)根据因果图画判定表:
(5)根据判定表设计测试用例:
订单提交,金额大于300,有红包 ----------有优惠
订单提交,金额大于300,没有红包---------有优惠
订单提交,金额小于等于300,有红包-------有优惠
订单提交,金额小于等于300,没有红包-----没有优惠
订单未提交,金额大于300,有红包---------没有优惠
订单未提交,金额大于300,没有红包-------没有优惠
订单未提交,金额小于等于300,有红包-----没有优惠
订单未提交,金额小于等于300,没有红包----没有优惠
4.正交排列
- 正交排列:研究多因素水平的一种测试方法。根据正交性,从输入组合当中选取最优的组合进行测试,分析结果。通过这些最优的组合得出来的实验结果来分析这个是实验结果。
解决因果图法因测试用例过多而导致的不足
。
因素:测试用例考虑到的变量
水平:测试用例考虑到的变量的取值
正交表的构成:
- 行数:正交表中的行的个数.用N表示。
- 因素数:正交表中列的个数.用C表示。
- 水平数:任何单个因素能够取得的值的最大个数.用T表示。
- 正交表的表示形式:L = 行数(水平数*因素数) L = N ( TC )
正交表的两个性质:
- 每一列中各数字出现的次数都一样多。
- 任何两列所构成的各有序数对出现的次数都一样多。
正交法设计测试用例的步骤:
- 1、确定所有的输入(变量)
- 2、确定每个变量的取值
- 3、选择一个合适的正交表
- 4、把变量的值映射到表中
- 5、写测试用例,正交表的每一行就是一个测试用例
- 6、加上你认为可能出现且没有在表中出现的用例组合
案例
以注册一个账号为例。
因素:姓名、邮箱、密码、确认密码、验证码
水平:填写、不填写
(1)确定所有的输入(变量):
因素数:5
水平数:2
(2)确定每个变量的取值:
正交表的列 = 因素数 = 5
正交表的行 = (水平数 - 1)* 因素数 + 1 = 6
(3、4)选择一个合适的正交表 + 把变量的值映射到表中:
(5)写测试用例:
①姓名填写, 邮箱不填写,密码填写, 确认密码不填写,验证码填写
②姓名不填写,邮箱填写, 密码不填写,确认密码填写, 验证码不填写
③姓名不填写,邮箱不填写,密码填写, 确认密码不填写,验证码不填写
④姓名填写, 邮箱填写, 密码不填写,确认密码不填写,验证码填写
⑤姓名填写, 邮箱填写, 密码填写, 确认密码填写, 验证码不填写
⑥姓名填写, 邮箱不填写,密码不填写,确认密码填写, 验证码填写
(6)加上你认为可能出现且没有在表中出现的用例组合:
想到就写
5.场景设计法
- 场景设计法:把使用场景中的每一个功能点提出来,考虑功能点可能不同的情况,根据这些情况去设计测试用例。
案例
以ATM取款为例
ATM取款正常流程:
插卡----输入密码----输入金额----取钱----退卡
异常情况:
(1)插卡:卡插反了、卡消磁了、插入其他卡(公交卡)卡丢失、卡注销、停留时间过长、卡被吞
(2)输入密码:密码连续三次输错,账户被锁定;密码连续输错,第三次输入正确;忘记密码。手机重置密码
(3)金额大于银行卡余额;ATM机本身月不足;输入的金额低于ATM机要求的金额;输入零钱(ATM不允许);超过每日最大金额
(4)长时间未取(看ATM机器的处理);遗忘了部分钱没有取
(5)其他:ATM网络异常,断电了,机器故障
6.错误猜测法
- 错误猜测法:根据测试人员的知识,经验直觉去判断哪一个模块会出现问题,专门针对这个模块进行测试用例的编写。
作为一种补充的设计测试用例的方法,适用于经验丰富的开发人员
。
案例
以注册为例
1、校验中特殊字符空格的处理?
2、密码校验中的大小写?
3、姓名中的特殊字符?
4、密码发送是否明文