测试基础--Day02--测试用例设计方法
今日目标
能够使用常见的测试用例设计方法设计测试用例(等价类、边界值、流程图、判定表)
一、等价类划分法
适用场景 : 解决测试(批量)多数据无法穷举应用
学习目标
1、会用等价类划分法设计测试用例


1.1、使用步骤
-
明确需求
-
测试目的:测试/验证什么?
-
测试条件:每个条件还可以按照
长度、类型、规则拆分
-
-
划分等价类
-
有效:满足需求
-
无效:不满足需求
-
-
提取数据编写用例
-
注意事项
-
有效功能是所有有效条件同时满足,单个条件中最大有效数就是总有效数
-
无效功能是所有条件中只要有一组条件(项)不满足需求即可
-
1.2、案例:验证某城市电话号码正确性
要求:
1. 区号:空或者是三位自然数
2. 电话:七位自然数

过程分析:
注意:两个不满足的不考虑,因为只要有一项不满足就已经不满足是无效了,不需要再考虑两个不满足了
长度满足,类型不满足;类型满足长度不满足;【长度和类型都不满足没有意义的,所以不考虑】

单个有效中的最大有效数量,就是总的有效数-----------有效用例数
每一个无效的一行就是一个无效-----------无效用例数
总的用例数 = 有效用例数 + 无效用例数
【有效:看单个条件的最大有效数;无效:看每个条件的所有无效数】
使用AI输出测试用例

以下是根据您的需求生成的Excel模板内容(以文本形式展示,可直接复制到Excel中):
Sheet1: 测试用例模板
| 用例编号 | 用例标题 | 所属模块 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
|---|---|---|---|---|---|---|---|
| TC-001 | 验证空区号输入 | 验证码模块 | 高 | 用户进入验证码输入页面 | 1. 不输入区号 2. 输入7位电话号码 | 区号:空 电话:2456871 | 提示“区号不能为空” |
| TC-002 | 验证3位有效区号输入 | 验证码模块 | 高 | 用户进入验证码输入页面 | 1. 输入3位区号 2. 输入7位电话号码 | 区号:123 电话:2456871 | 验证码生成成功 |
| TC-003 | 验证区号大于3位 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入4位区号 2. 输入7位电话号码 | 区号:1234 电话:2456871 | 提示“区号长度不能超过3位” |
| TC-004 | 验证区号小于3位 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入2位区号 2. 输入7位电话号码 | 区号:12 电话:2456871 | 提示“区号长度不足3位” |
| TC-005 | 验证区号非自然数 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入非数字区号 2. 输入7位电话号码 | 区号:12a 电话:2456871 | 提示“区号必须为数字” |
| TC-006 | 验证区号含前导零 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入前导零区号 2. 输入7位电话号码 | 区号:010 电话:2456871 | 验证码生成成功(或提示“区号格式错误”,根据实际需求) |
| TC-007 | 验证7位有效电话号码 | 验证码模块 | 高 | 用户进入验证码输入页面 | 1. 输入3位区号 2. 输入7位电话号码 | 区号:123 电话:2456871 | 验证码生成成功 |
| TC-008 | 验证电话号码大于7位 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入3位区号 2. 输入8位电话号码 | 区号:123 电话:32456871 | 提示“电话号码长度不能超过7位” |
| TC-009 | 验证电话号码小于7位 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入3位区号 2. 输入6位电话号码 | 区号:123 电话:456871 | 提示“电话号码长度不足7位” |
| TC-010 | 验证电话号码非自然数 | 验证码模块 | 中 | 用户进入验证码输入页面 | 1. 输入3位区号 2. 输入含非数字电话号码 | 区号:123 电话:245687# | 提示“电话号码必须为数字” |
| TC-011 | 验证空电话号码 | 验证码模块 | 高 | 用户进入验证码输入页面 | 1. 输入3位区号 2. 不输入电话号码 | 区号:123 电话:空 | 提示“电话号码不能为空” |
1.3、案例:完成百度登录功能测试设计

过程分析:

使用AI生成测试用例

以下是根据您提供的模板和测试用例8要素(用例编号、用例标题、所属模块、优先级、前置条件、测试步骤、测试数据、预期结果)编写的电子版测试用例,以验证手机号登录时的各种情况:
测试用例表
| 用例编号 | 用例标题 | 所属模块 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
|---|---|---|---|---|---|---|---|
| TC-001 | 验证空手机号输入 | 登录模块 | 高 | 用户进入登录页面 | 1. 不输入手机号 2. 输入密码 | 手机号:空 密码:123456 | 提示“手机号不能为空” |
| TC-002 | 验证11位有效手机号输入(第一位是1,第二位大于2,已注册) | 登录模块 | 高 | 用户进入登录页面 | 1. 输入有效手机号 2. 输入正确密码 | 手机号:13912345678 密码:123456 | 登录成功,进入主页 |
| TC-003 | 验证手机号小于11位 | 登录模块 | 中 | 用户进入登录页面 | 1. 输入小于11位手机号 2. 输入密码 | 手机号:13912345 密码:123456 | 提示“手机号长度不足11位” |
| TC-004 | 验证手机号大于11位 | 登录模块 | 中 | 用户进入登录页面 | 1. 输入大于11位手机号 2. 输入密码 | 手机号:139123456789 密码:123456 | 提示“手机号长度不能超过11位” |
| TC-005 | 验证手机号第一位非1 | 登录模块 | 中 | 用户进入登录页面 | 1. 输入第一位非1的手机号 2. 输入密码 | 手机号:23912345678 密码:123456 | 提示“手机号格式不正确” |
| TC-006 | 验证手机号第二位小于等于2 | 登录模块 | 中 | 用户进入登录页面 | 1. 输入第二位小于等于2的手机号 2. 输入密码 | 手机号:11912345678 密码:123456 | 提示“手机号格式不正确”或根据业务逻辑处理(如未注册提示) |
| TC-007 | 验证手机号未注册 | 登录模块 | 高 | 用户进入登录页面 | 1. 输入未注册的手机号 2. 输入密码 | 手机号:13987654321(假设未注册) 密码:123456 | 提示“手机号未注册”或“用户名或密码错误” |
| TC-008 | 验证空密码输入 | 登录模块 | 高 | 用户进入登录页面 | 1. 输入手机号 2. 不输入密码 | 手机号:13912345678 密码:空 | 提示“密码不能为空” |
| TC-009 | 验证错误密码输入 | 登录模块 | 高 | 用户进入登录页面 | 1. 输入手机号 2. 输入错误密码 | 手机号:13912345678 密码:wrongpass | 提示“用户名或密码错误” |
继续使用AI生成,补全所有的用例

以下是根据您提供的模板和要求,完成的剩余测试用例,以全面覆盖手机号登录的各种情况:
测试用例表
| 用例编号 | 用例标题 | 所属模块 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
|---|---|---|---|---|---|---|---|
| TC-010 | 验证正确手机号和正确密码输入(已注册) | 登录模块 | 高 | 用户进入登录页面,且手机号已注册 | 1. 输入已注册的手机号 2. 输入正确的密码 | 手机号:13912345678 密码:correctpass | 登录成功,进入主页 |
| TC-011 | 验证手机号包含非数字字符 | 登录模块 | 中 | 用户进入登录页面 | 1. 输入包含非数字字符的手机号 2. 输入密码 | 手机号:139a1234567 密码:123456 | 提示“手机号格式不正确” |
| TC-012 | 验证手机号全为特殊字符 | 登录模块 | 低 | 用户进入登录页面 | 1. 输入全为特殊字符的手机号 2. 输入密码 | 手机号:!@#$%^&*() 密码:123456 | 提示“手机号格式不正确” |
| TC-013 | 验证密码为空且手机号有效 | 登录模块 | 高 | 用户进入登录页面,手机号已注册 | 1. 输入已注册的手机号 2. 不输入密码 | 手机号:13912345678 密码:空 | 提示“密码不能为空” |
| TC-014 | 验证密码包含特殊字符 | 登录模块 | 中 | 用户进入登录页面,手机号已注册 | 1. 输入已注册的手机号 2. 输入包含特殊字符的密码 | 手机号:13912345678 密码:pass@123 | 根据系统安全策略,可能登录成功或提示密码符合要求(若系统允许特殊字符) |
| TC-015 | 验证密码长度过短 | 登录模块 | 中 | 用户进入登录页面,手机号已注册 | 1. 输入已注册的手机号 2. 输入长度过短的密码 | 手机号:13912345678 密码:123 | 提示“密码长度不足,请重新输入” |
| TC-016 | 验证密码长度过长 | 登录模块 | 中 | 用户进入登录页面,手机号已注册 | 1. 输入已注册的手机号 2. 输入长度过长的密码 | 手机号:13912345678 密码:thisisaverylongpassword12345 | 根据系统限制,可能提示“密码长度不能超过XX位”或截断处理 |
| TC-017 | 验证多次错误密码输入后锁定账号 | 登录模块 | 高 | 用户进入登录页面,手机号已注册,且系统有密码错误锁定机制 | 1. 连续多次输入错误的密码 | 手机号:13912345678 密码:多次输入错误密码 | 提示“账号已被锁定,请稍后再试”或类似信息 |
| TC-018 | 验证找回密码功能(通过手机号) | 密码找回模块 | 高 | 用户进入密码找回页面,且手机号已注册 | 1. 输入已注册的手机号 2. 按照系统提示完成密码找回流程 | 手机号:13912345678 | 收到密码重置链接或验证码,能够成功重置密码 |
| TC-019 | 验证登录后保持会话状态 | 登录模块/会话管理 | 高 | 用户成功登录系统 | 1. 登录成功后,进行其他操作或刷新页面 | 无需额外输入 | 用户保持登录状态,无需重新登录 |
| TC-020 | 验证注销登录功能 | 登录模块/会话管理 | 中 | 用户已登录系统 | 1. 执行注销登录操作 | 无需额外输入 | 用户成功注销,返回登录页面或主页(根据系统设计) |
1.4、案例:微信注册的测试

过程分析:

用例可以自行使用AI生成:
【在进行密码各种组合的时候,需求中没有明令禁止的默认是允许的】
总结:
1、适用场景
批量数据无法穷举测试时使用
表单类页面元素测试使用(输入框、单选框、下拉列表等)。
2、适用步骤
①明确需求 ---> 测试目的和测试条件
②划分等价类 ---> 有效 和 无效
③提取数据编写用例 ---> 测试用例模版(8要素)
3、注意事项
有效:满足所有条件项(长度、类型、规则同时符合)
无效:只要有其一(条件某项)不满足即可
等价类的划分:需要按照每个条件划分有效和无效
1.5、作业:某理财系统注册功能测试用例设计
http://121.43.169.97:8081/common/member/reg
该题目难度较大,可以小组内沟通,设计出分析过程
密码提示:密码规则支持字母、数字、特殊符号
验证码提示:正确、错误、过期、空
短信验证码:666666

分析过程:


二、边界值分析法
目的 :有边界范围的数据的验证




备注:有区间范围的测试点,一定能用到边界值分析法
2.1、方法介绍
-
确定范围
-
上点:刚好等于边界上的点
-
离点:距离上点最近的点(不止一个)
-
内点:区间范围内的所有点
-
例如区间范围为:-99<x<99

-
-
方法使用步骤🏴
-
明确需求:搞清楚需求中要求及测试目的
-
划分等价类:根据需求划分(有效、无效)
-
确定边界值:根据需求确定上点、离点、内点
-
提取数据编写用例:根据不同的等价类(包含补充的三种类型点)分别提取数据编写用例
-
2.2、案例:验证QQ登录功能
要求:通过边界值进行完善补充
1、账号:6~10位自然数且已注册(非空)
2、密码:正确/错误/空


分析过程:

按照第一天的使用AI生成用例即可
2.3、案例:微信注册的测试

要求:使用边界值进行完善用例
1、手机号合法且未注册,不能为空
2、密码8-16位英文字母、数字、特殊符号组合,不能是纯数字
3、暂不考虑昵称和协议
分析过程:

按照第一天的使用AI生成用例即可
总结:
1、适用场景
有边界范围的批量数据无法穷举测试时使用
有边界范围的测试数据输入场景时使用
2、使用步骤
①明确需求 ---> 测试目的和测试条件
②划分等价类 ---> 有效 和 无效
③确定边界值 ---> 上点、离点、内点(和步骤2合并)
④提取数据编写用例 ---> 测试用例模版(8要素)
3、注意事项
边界值分析法重在边界,可以对等价类补充
2.4、边界值分析法--范围优化【扩展】

只要取跟上点的那个取值相反的离点取上即可;【上点有效,离点选无效,上点无效,离点选有效】

2.4.1、边界离点优化
也叫7条数据变5条数据
-
上点:必选(不考虑开闭区间,选择一组数据即可)
-
内点:必选(不考虑开闭区间,一般选择中间位置的数据)
-
离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点)

2.4.2、适用场景
-
针对有边界范围的批量测试数据输入的场景(重点在于边界)
-
典型代表:常见有边界范围的输入框测试
针对以上案例进行范围优化:
QQ登录:

微信注册:

三、判定表法
问题:等价类、边界值解决的单条件的判断,没有考虑条件组合
目的:针对条件比较多,条件之间有组合关系,条件和结果之间有因果关系的场景


灰色区域:条件桩,一般在前面加上判定词:是否
黄色区域:条件项,每一个条件进行组合
绿色区域:动作桩,既是操作
蓝色区域:动作项,既是通过上面的条件项推导得到的结果是什么
备注:一个规则,既是一条用例,写一条
备注:优先确定条件数量是几个,然后把条件的结果固定成两个值【是、否】,最后2的N次方就是用例数量,N就是条件数量


3.1、判定表介绍
-
构成
-
条件桩:列表需求中的所有条件 ---> 灰色区域
-
动作桩:列表需求中的采取的操作(动作)---> 绿色区域
-
条件项:每种条件所有情况下的真假值(取值) ---> 黄色区域
-
动作项:根据条件项所采取的操作结果 ---> 蓝色区域
-
图例
-

-
规则
-
条件项和动作项构成的每一列,就是每一条测试用例
-
根据条件个数计算条件项的取值数量($2^n$),其中n表示条件个数
-
-
使用步骤
-
明确需求
-
测试目的:验证xxx是否/能否xxx
-
测试条件:分别列出
-
-
画判定表
-
根据需求列表条件桩和动作桩
-
根据需求对于条件取值进行全组合
-
根据条件项得到动作项
-
根据需求进行简化或合并
-
-
根据规则编写用例
-
3.2、适用场景
-
有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约/因果)关系
-
适用条件个数不宜过多(不超过4个,如果超过建议使用因果图法)
3.3、案例:订购单检查规则的验证
规则:
1)、如果金额大于500元,又未过期,则发出批准单和提货单;
2)、如果金额大于500元,但过期了,则不发批准单与提货单;
3)、如果金额小于等于500元,则不论是否过期都发出批准单和提货单;
4)、在过期的情况下不论金额大小还需要发出通知单
分析过程:

测试用例生成:

3.4、案例:文件修改规则验证
规则:
1)、输入的第一列字符必须是A或B
2)、第二列字符必须是一个数字
3)、如果第一列字符不正确,则给出信息L
4)、如果第二列字符不正确,则给出信息M
5)、如果两列字符输入正确,则修改文件成功
分析过程:

3.5、作业:根据判定表设计测试用例

分析过程:

总结:
1、判定表适用场景
有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约/因果)关系
2、判定表使用步骤
①明确需求
②画出判定表
③根据规则编写用例
3、判定表注意事项
判定表适用条件不宜过多(不超过4个),否则可以借助因果图
四、场景法(流程图法)
目的:从用户角度/测试角度,除了验证单功能模块之外,还要测试模块的组合
注意:项目中一般先业务流程测试,再单功能测试
-
按照不同业务流程模拟用户不同使用过程(画图),也叫流程图
-
使用步骤
-
根据流程图找出路径(需要明确测试目的)
图:产品提供 、 测试自己画(不强制)
-
根据路径编写用例
-




4.1、适用场景
-
单功能测试完毕后,进行功能组合测试时使用
4.2、案例:ATM机取款流程 – 流程图

备注:当密码判断次数是2次第3次输入正确时,回到《进入主界面》下面的路线随便选择一个成功的即可,因为这些路线都已经覆盖到了,所以只需要选择一个路线把该业务结束即可。
分析过程:

只有6和7是成功,其他都是失败
用例中的前置条件就是流程中的菱形
用例中的测试步骤就是流程中的长方形

使用AI生成测试用例

以下是根据提供的流程图和测试用例8要素(用例编号、测试模块、测试标题、重要级别、预置条件、测试输入、操作步骤、预期结果)设计的完整测试用例电子表格内容:
| 用例编号 | 测试模块 | 测试标题 | 重要级别 | 预置条件 | 测试输入 | 操作步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|
| ATM_001 | ATM机取款 | 取款成功(所有条件都满足) | P0 | 1. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足 | 密码:123456,取款金额:100 | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款;5. 取钞并等待账户余额更新;6. 返回主界面 | 取款成功,账户余额正确更新,返回主界面 |
| ATM_002 | ATM机取款 | 插入无效银行卡 | P1 | 无 | 无效银行卡 | 1. 插入无效银行卡 | 提示“错误、退卡”,流程结束 |
| ATM_003 | ATM机取款 | 密码错误(第一次) | P1 | 银行卡有效 | 错误密码:000000 | 1. 插入银行卡;2. 输入错误密码 | 提示“密码错误”,允许重新输入 |
| ATM_004 | ATM机取款 | 密码错误(第三次) | P1 | 银行卡有效 | 错误密码:000000(第三次输入) | 1. 插入银行卡;2. 连续三次输入错误密码 | 提示“吞卡”,流程结束 |
| ATM_005 | ATM机取款 | 账户余额不足 | P1 | 银行卡有效,账户余额不足 | 密码:123456,取款金额:200(余额不足) | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额 | 提示“余额不足”,流程结束 |
| ATM_006 | ATM机取款 | ATM机余额不足 | P1 | 银行卡有效,账户余额足够,ATM机余额不足 | 密码:123456,取款金额:100(ATM机余额不足) | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额 | 提示“ATM机余额不足”,流程结束 |
继续使用AI生成后续的用例
以下继续按照测试用例的8要素,为你补充更多围绕ATM机取款功能的测试用例:
| 用例编号 | 测试模块 | 测试标题 | 重要级别 | 预置条件 | 测试输入 | 操作步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|
| ATM_007 | ATM机取款 | 取款金额超过单日限额 | P1 | 1. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足;4. 设置了单日取款限额 | 密码:123456,取款金额:超过单日限额的数值(如单日限额5000,取款6000) | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款 | 提示“超过单日取款限额”,流程结束,账户余额不变 |
| ATM_008 | ATM机取款 | 取款金额为非整数(ATM一般不支持) | P2 | 1. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足 | 密码:123456,取款金额:100.5 | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额 | 提示“输入金额无效”,返回输入金额界面,可重新输入 |
| ATM_009 | ATM机取款 | 取款金额为0 | P2 | 1. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足 | 密码:123456,取款金额:0 | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款 | 提示“取款金额不能为0”,返回输入金额界面,可重新输入 |
| ATM_010 | ATM机取款 | 取款过程中ATM机故障(如断网) | P1 | 1. 银行卡有效且可正常使用;2. 账户余额足够;3. 已输入正确密码进入取款金额输入界面,此时ATM机断网 | 密码:123456,已输入取款金额等待确认 | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 等待确认时ATM机断网 | 提示“交易失败,请取回银行卡”,银行卡退回,账户余额不变 |
| ATM_011 | ATM机取款 | 取款后ATM机未出钞但账户已扣款 | P0 | 1. 银行卡有效且可正常使用;2. 账户余额足够;3. 输入正确密码并输入取款金额,ATM机出现故障未出钞但系统已扣款 | 密码:123456,取款金额:100 | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款 | 提示“交易异常,请联系银行客服”,银行卡退回,后续通过银行查询处理,账户应恢复原余额 |
| ATM_012 | ATM机取款 | 多次取款后账户余额更新正确性验证 | P1 | 1. 银行卡有效且可正常使用;2. 账户初始余额充足;3. ATM机余额充足 | 密码:123456,多次取款金额(如第一次100,第二次200) | 1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入第一次金额,完成取款;4. 再次选择取款并输入第二次金额,完成取款 | 每次取款成功后账户余额正确更新,最终余额为初始余额减去两次取款金额总和 |
| ATM_013 | ATM机取款 | 取款时银行卡被挂失 | P0 | 1. 银行卡已挂失;2. 尝试使用该卡取款 | 无(卡已挂失状态) | 1. 插入已挂失的银行卡;2. 输入密码(若有) | 提示“此卡已挂失,请联系发卡行”,银行卡退回,流程结束 |
4.3、作业:根据业务流程图设计用例

分析过程:


4.4、扩展:流程图


【网页版工具:https://processon.com/】

总结:
1、场景法使用场景
根据用户正常使用的各种业务场景(功能组合),验证产品是否满足需求的过程
2、场景法设计用例步骤
①根据流程图找出路径
②根据路径编写用例(每条路径对应一条用例)
3、场景法注意事项
流程图谁提供?一般是产品
什么时候测业务流程?一般是开发提测后 (冒烟测试)
用例标题看目的;步骤看矩形,预置条件看菱形
五、错误推测法(了解即可)



时间宽裕:可以再原有模块【重点出问题模块】上细化编写用例
时间紧迫:可以不写用例【重点出问题模块】,列出测试点【整理测试思路】
-
方法介绍:根据经验推测系统可能出现的问题
-
适用思想:有经验的人员根据出现问题的模块再次列举问题清单
-
适用场景:
-
时间宽裕:常规测试完毕后,再次验证容易出问题的模块
-
时间紧迫:根据问题清单,进行重点功能的测试
-
总结:
1、错误推测法使用场景
时间紧迫/宽裕时,基于2/8原则测试易错模块
2、错误推测法注意事项
需要有经验的人使用(非常规方法)
时间紧迫时,可以不写用例
其他用例设计方法:
-
因果图---> 判定表
-
正交表法 ---> 简化用例用
-
观察法 ---> 界面显示【是否和原型图一致】
六、今日总结

更多推荐

所有评论(0)