目录
测试用例解决的问题:
- 1,对穷举场景设计测试点(等价类划分法)
- 2,对限定边界规则设计测试点(边界值分析法)
- 3,对多条件依赖关系进行设计测试点(判定表法)
- 4,对于项目业务进行设计测试点(场景法)
一、等价类划分法
案例
1,QQ号
步骤: | |||
---|---|---|---|
1、明确需求 | 要求:账号为6~10位自然数 | ||
长度 | 6-10位 | ||
类型 | 自然数 | ||
2、划分有效等价和无效等价 | 有效 | 无效 | |
8位自然数 | 3位自然数、12位自然数 | ||
8位非自然数、为空 | |||
3、设计数据编写用例 | 12345678 | 123、123456789123 | |
123456li、为空 |
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
QQ_001 | QQ合法(8位自然数) | QQ账号 | P0 | 打开验证QQ程序 | 1、输入QQ号 2、点击验证 |
账号:12345678 | QQ合法 |
QQ_002 | QQ不合法(3位自然数) | QQ账号 | P1 | 打开验证QQ程序 | 1、输入QQ号 2、点击验证 |
账号:123 | QQ不合法 |
QQ_003 | QQ不合法(12位自然数) | QQ账号 | P1 | 打开验证QQ程序 | 1、输入QQ号 2、点击验证 |
账号:123456789123 | QQ不合法 |
QQ_004 | QQ不合法(8位非自然数) | QQ账号 | P1 | 打开验证QQ程序 | 1、输入QQ号 2、点击验证 |
账号:123456li | QQ不合法 |
QQ_005 | QQ不合法(为空) | QQ账号 | P1 | 打开验证QQ程序 | 1、输入QQ号 2、点击验证 |
账号:空 | QQ不合法 |
2,电话号
1、明确需求 | "要求: 1,区号:空或者是三位数字 2,前缀码:非“0”且非“1”开头的三位数字 3,后缀码:四位数字" |
|||||
---|---|---|---|---|---|---|
2、划分有效等价和无效等价 | ||||||
参数 | 说明 | 有效 | 有效数据 | 无效 | 无效数据 | |
区号 | 长度 | 空、3位 | 1、空 2、123 |
非3位 | 12 | |
前缀码 | 3位 | 234 | 非3位 | 23 | ||
后缀码 | 4位 | 1234 | 非4位 | 123 | ||
区号 | 类型 | 数字 | / | 非数字 | 12a | |
前缀码 | 数字 | / | 非数字 | 56g | ||
后缀码 | 数字 | / | 非数字 | u374 | ||
区号 | 规则 | / | / | / | / | |
前缀码 | 非0且非1开头 | / | 1、"0"开头 2、"1"开头 |
012 123 |
||
后缀码 | / | / | / | / | ||
2 | 8 | |||||
3、设计数据编写用例 |
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
tel_001 | 合法(区号为空+其他正确) | 电话 | P0 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:234 3、后缀:1234 |
合法 |
tel_002 | 合法(区号为3位数字+其他正确) | 电话 | P0 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:123 2、前缀:234 3、后缀:1234 |
合法 |
tel_003 | 不合法(区号为2位数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:12 2、前缀:234 3、后缀:1234 |
不合法 |
tel_004 | 不合法(前缀码为非“0”且非“1”开头的2位数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:23 3、后缀:1234 |
不合法 |
tel_005 | 不合法(后缀码为3位数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:234 3、后缀:123 |
不合法 |
tel_006 | 不合法(区号为3位非数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:12a 2、前缀:234 3、后缀:1234 |
不合法 |
tel_007 | 不合法(前缀码为非“0”且非“1”开头的3位非数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:56g 3、后缀:1234 |
不合法 |
tel_008 | 不合法(后缀码为4位非数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:234 3、后缀:u374 |
不合法 |
tel_009 | 不合法(前缀码为“0”开头的3位数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:012 3、后缀:1234 |
不合法 |
tel_010 | 不合法(前缀码为“1”开头的3位数字+其他正确) | 电话 | P1 | 打开验证电话程序 | 1、输入区号 2、输入前缀 3、输入后缀 4、点击验证 |
1、区号:空 2、前缀:123 3、后缀:1234 |
不合法 |
1、正向用例:一条尽可能覆盖多条
2、逆向用例:每一条数据,都是一条单独用例
适用场景
- 针对:需要有大量数据测试输入,但是没法穷举测试的地方。
输入框
下拉列表
单选复选框
- 典型代表:页面的输入框类测试
完整的用例应该是等价类和边界值
二、边界值分析法
(一)边界范围节点
- 选取正好等于、刚好大于、刚好小于边界的值作为测试数据
上点:边界上的点(正好等于)
离点:距离上点最近的点(刚好大于、刚好小于)
内点:范围内的点(区间)
(二)步骤
1、明确需求
2、确定有效和无效等价
3、确定边界范围
4、提取数据编写用例
练习
1、明确需求 | 需求:通过边界值法验证标题长度的合法性 | ||
要求:标题长度大于0,小于等于30个字符 | |||
2、确定有效和无效等价(类型) | 有效等价 | 无效等价 | |
长度大于0小于等于30的字符 | 长度大于0小于等于30的数字 | ||
3、确定边界范围 | 上点 | 离点 | 内点 |
0位,30位 | 1位,29位,31位,(-1位舍弃) | 15位 | |
4、提取数据编写用例 |
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
title_001 | 不合法(标题为15位非字符) | 标题 | P1 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:15位数字 | 不合法 |
title_002 | 不合法(标题为空) | 标题 | P1 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:空 | 不合法 |
title_003 | 合法(标题为30位字符) | 标题 | P0 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:30位字符 | 合法 |
title_004 | 合法(标题为1位字符) | 标题 | P0 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:1位字符 | 合法 |
title_005 | 合法(标题为29位字符) | 标题 | P0 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:29位字符 | 合法 |
title_006 | 不合法(标题为31位字符) | 标题 | P1 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:31位字符 | 不合法 |
title_007 | 不合法(标题为15位字符) | 标题 | P0 | 打开标题验证程序 | 1、输入标题 2、点击验证 |
标题:15位字符 | 合法 |
1、明确需求 | 需求:通过边界值法验证QQ号码的合法性 | ||
要求:6-10位自然数 | |||
2、确定有效和无效等价(类型) | 有效等价 | 无效等价 | |
自然数 | 非自然数 | ||
3、确定边界范围 | 上点 | 离点 | 内点 |
6位、10位 | 5位、7位、9位、11位 | 8位 | |
4、提取数据编写用例 |
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
QQ_001 | 不合法(8位非自然数) | P1 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
123456li | 不合法 | |
QQ_002 | 合法(6位自然数) | P0 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
123456 | 合法 | |
QQ_003 | 合法(10位自然数) | P0 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
1234567890 | 合法 | |
QQ_004 | 不合法(5位自然数) | P1 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
12345 | 不合法 | |
QQ_005 | 合法(7位自然数) | P0 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
1234567 | 合法 | |
QQ_006 | 合法(9位自然数) | P0 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
123456789 | 合法 | |
QQ_007 | 不合法(11位自然数) | P1 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
12345678910 | 不合法 | |
QQ_008 | 合法(8位自然数) | P0 | 打开QQ验证程序 | 1、输入QQ 2、点击验证 |
12345678 | 合法 |
(三)优化
- 上点:必选(不必考虑区间开闭)
- 内点:必选(建议选择中间范围)
- 离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点)
开区间:不包含边界上的点(没有等号)
闭区间:包含边界上的点(有等号)
(四)使用场景
- 在等价类的基础上针对有边界范围的测试数据输入的地方(重点关注边界)
- 常见词语描述:大小、尺寸、重量、最大、最小、至多、至少等修饰词语
- 典型代表:有边界范围的输入框类测试
单个输入框常用边界值+等价类
三、判定表法
(一)判定表法的引入
案例:验证“若用户欠费或者关机,则不允许被呼叫”功能的测试
- 等价类边界值分析法主要关注单个输入类条件的测试
- 并未考虑输入条件之间的各种组合、输入条件与输出结果之间有相互制约关系的测试
(二)判定表定义及组成部分
定义:是一种以表格形式表达多条件逻辑判断的工具
组成:
- 条件桩:列出问题中所有条件,列出条件的次序无关紧要
- 动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束
- 条件项:列出条件对应的取值,所有可能情况下的真假值
- 动作项:列出条件项的、各种取值情况下应该采取的动作结果
条件 | 是否欠费 | 是 | 是 | 否 | 否 |
是否关机 | 是 | 否 | 是 | 否 | |
操作 | 是否允许被呼叫 | 否 | 否 | 否 | 是 |
规则:
判定表中贯穿条件项和动作项的一列就是一条规则
假设有n个条件,每个条件的取值有两个(0,1),全组合有2n种规则
(三)判定表法设计用例步骤
1、明确需求
2、画出判定表
- 1、列出条件状和动作桩
- 2、填写条件项,对条件项进行全组合
- 3、根据条件项的组合确定动作项
- 4、简化、合并相似规则(有相同的动作)
3、根据规则编写测试用例
案例
1、明确需求 | 规则: | 1、如果金额大于500元,又未过期,则发出批准单和提货单; | |||
2、如果金额大于500元,但过期了,则不发批准单与提货单; | |||||
3、如果金额小于等于500元,则不论是否过期都发出批准单与提货单; | |||||
4、在过期的情况下不论金额大小还需要发出通知单。 | |||||
2、画判定表 | 是否大于500 | 是 | 是 | 否 | 否 |
是否过期 | 是 | 否 | 是 | 否 | |
批准单 | × | √ | √ | √ | |
提货单 | × | √ | √ | √ | |
通知单 | √ | × | √ | × | |
3、提取数据编写用例 |
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
order_001 | 发通知单(大于500,过期) | 订单 | P0 | 打开订单验证程序 | 1、输入金额 2、输入是否过期 3、点击验证按钮 |
金额:600 是否过期:过期 |
发通知单,不发批准单、提货单 |
order_002 | 发批准单和提货单(大于500,未过期) | 订单 | P0 | 打开订单验证程序 | 1、输入金额 2、输入是否过期 3、点击验证按钮 |
金额:600 是否过期:未过期 |
发批准单、提货单,不发通知单 |
order_003 | 发批准单、提货单和通知单(小于等于500,过期) | 订单 | P0 | 打开订单验证程序 | 1、输入金额 2、输入是否过期 3、点击验证按钮 |
金额:500 是否过期:过期 |
发批准单、提货单和通知单 |
order_004 | 发批准单、提货单(小于等于500,未过期) | 订单 | P0 | 打开订单验证程序 | 1、输入金额 2、输入是否过期 3、点击验证按钮 |
金额:500 是否过期:未过期 |
发批准单、提货单,不发通知单 |
1、明确需求 | 规则: | 1、输入的第一列字符必须是A或B; | |||
2、第二列字符必须是一个数字; | |||||
3、如果第一列字符不正确,则给出信息L; | |||||
4、如果第二列字符不正确,则给出信息M; | |||||
5、如果两列字符输入正确,则修改文件成功。 | |||||
2、画判定表 | 第一列是A或B | 是 | 是 | 否 | 否 |
第二列是数字 | 是 | 否 | 是 | 否 | |
输出L | × | × | √ | √ | |
输出M | × | √ | × | √ | |
文件修改成功 | √ | × | × | × | |
3、提取数据编写用例 |
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
file_001 | 文件修改成功(第一列是A或B,第二列是数字) | 文件 | P0 | 打开文件修改工具 | 1、输入第一列 2、输入第二列 3、点击验证按钮 |
第一列:A 第二列:1 |
文件修改成功 |
file_002 | 输出M(第一列是A或B,第二列不是数字) | 文件 | P1 | 打开文件修改工具 | 1、输入第一列 2、输入第二列 3、点击验证按钮 |
第一列:A 第二列:a |
输出M |
file_003 | 输出L(第一列不是A或B,第二列是数字) | 文件 | P1 | 打开文件修改工具 | 1、输入第一列 2、输入第二列 3、点击验证按钮 |
第一列:C 第二列:1 |
输出L |
file_004 | 输出L、M(第一列不是A或B,第二列不是数字) | 文件 | P1 | 打开文件修改工具 | 1、输入第一列 2、输入第二列 3、点击验证按钮 |
第一列:C 第二列:a |
输出L、M |
(四)使用场景
- 有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约)关系
- 判定表一般适用于条件组合数量较少的情况(比如4个条件以下,超过4个应采用正交法解决)
四、场景法
先测业务,再测单功能、单模块
扩展:流程图
- 使用标准图形和箭头来表达程序或业务的走向
1、能够看懂流程图,设计业务用例
2、当需求文档信息不全时,能够根据需求,梳理出流程
场景法也叫流程图法,用流程图描述用户的使用场景,通过覆盖流程路径来设计测试用例。
意义:
- 用户使用角度:用户平时使用的不是单个功能,而是多个功能组合起来进行使用
- 测试人员角度:平时测试的都是单个功能点进行测试,容易忽略多个功能的组合测试
适用场景:
- 根据实际的应用场景,来测试业务用例,可以使用场景法
1、开始→验证银行卡不成功→结束
2、开始→验证银行卡成功→密码错误3次→结束
3、开始→验证银行卡成功→密码验证成功→账户余额不足→结束
4、开始→验证银行卡成功→密码验证成功→账户余额验证成功→取款金额不正确→结束
5、开始→验证银行卡成功→密码验证成功→账户余额验证成功→取款金额正确→ATM机余额不足→结束
6、开始→验证银行卡成功→密码验证成功→账户余额验证成功→取款金额正确→ATM机余额充足→取款成功→结束
用例编号 | 用例标题 | 模块/项目 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
---|---|---|---|---|---|---|---|
ATM_001 | 取款失败(非银行卡) | ATM | P1 | 打开ATM验证程序 | 1、插入卡 | 卡:会员卡 | 取款失败,提示非银行卡,退卡 |
ATM_002 | 取款失败(密码错误3次) | ATM | P1 | 打开ATM验证程序 | 1、插入卡 2、输入密码 |
卡:银行卡 密码:错误密码 |
取款失败,提示密码错误达3次,吞卡 |
ATM_003 | 取款失败(账户余额不足) | ATM | P1 | 1、打开ATM验证程序 2、卡余额200 |
1、插入卡 2、输入密码 3、输入取款金额 |
卡:银行卡 密码:正确密码 取款金额:300 |
取款失败,提示余额不足,退卡 |
ATM_004 | 取款失败(取款金额不正确) | ATM | P1 | 1、打开ATM验证程序 2、卡余额10000 |
1、插入卡 2、输入密码 3、输入取款金额 |
卡:银行卡 密码:正确密码 取款金额:864 |
取款失败,提示不是正确金额,只能取100或100的倍数,退卡 |
ATM_005 | 取款失败(ATM余额不足) | ATM | P1 | 1、打开ATM验证程序 2、卡余额10000 3、ATM余额为100 |
1、插入卡 2、输入密码 3、输入取款金额 |
卡:银行卡 密码:正确密码 取款金额:300 |
取款失败,提示故障,退卡 |
ATM_006 | 取款成功(取款业务) | ATM | P0 | 1、打开ATM验证程序 2、卡余额10000 3、ATM余额为20000 |
1、插入卡 2、输入密码 3、输入取款金额 |
卡:银行卡 密码:正确密码 取款金额:500 |
取款成功,打印凭证,退卡 |
五、错误推测法
定义:通过经验推测系统可能出现的问题
思想:根据经验列举出可能出现问题的清单,根据清单分析问题可能原因,推测发现缺陷
场景:
1、时间紧任务量大时,根据之前项目类似经验找出易出错的模块重点测试
2、时间宽裕,通过该方法列出之前出现问题较多的模块再次测试