今日目标

  • 能够使用常见的测试用例设计方法设计测试用例(等价类、边界值、流程图、判定表)

一、等价类划分法

适用场景 : 解决测试(批量)多数据无法穷举应用

学习目标

        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_001ATM机取款取款成功(所有条件都满足)P01. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足密码:123456,取款金额:1001. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款;5. 取钞并等待账户余额更新;6. 返回主界面取款成功,账户余额正确更新,返回主界面
ATM_002ATM机取款插入无效银行卡P1无无效银行卡1. 插入无效银行卡提示“错误、退卡”,流程结束
ATM_003ATM机取款密码错误(第一次)P1银行卡有效错误密码:0000001. 插入银行卡;2. 输入错误密码提示“密码错误”,允许重新输入
ATM_004ATM机取款密码错误(第三次)P1银行卡有效错误密码:000000(第三次输入)1. 插入银行卡;2. 连续三次输入错误密码提示“吞卡”,流程结束
ATM_005ATM机取款账户余额不足P1银行卡有效,账户余额不足密码:123456,取款金额:200(余额不足)1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额提示“余额不足”,流程结束
ATM_006ATM机取款ATM机余额不足P1银行卡有效,账户余额足够,ATM机余额不足密码:123456,取款金额:100(ATM机余额不足)1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额提示“ATM机余额不足”,流程结束

继续使用AI生成后续的用例

以下继续按照测试用例的8要素,为你补充更多围绕ATM机取款功能的测试用例:

用例编号测试模块测试标题重要级别预置条件测试输入操作步骤预期结果
ATM_007ATM机取款取款金额超过单日限额P11. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足;4. 设置了单日取款限额密码:123456,取款金额:超过单日限额的数值(如单日限额5000,取款6000)1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款提示“超过单日取款限额”,流程结束,账户余额不变
ATM_008ATM机取款取款金额为非整数(ATM一般不支持)P21. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足密码:123456,取款金额:100.51. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额提示“输入金额无效”,返回输入金额界面,可重新输入
ATM_009ATM机取款取款金额为0P21. 银行卡有效且可正常使用;2. 账户余额足够;3. ATM机余额充足密码:123456,取款金额:01. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款提示“取款金额不能为0”,返回输入金额界面,可重新输入
ATM_010ATM机取款取款过程中ATM机故障(如断网)P11. 银行卡有效且可正常使用;2. 账户余额足够;3. 已输入正确密码进入取款金额输入界面,此时ATM机断网密码:123456,已输入取款金额等待确认1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 等待确认时ATM机断网提示“交易失败,请取回银行卡”,银行卡退回,账户余额不变
ATM_011ATM机取款取款后ATM机未出钞但账户已扣款P01. 银行卡有效且可正常使用;2. 账户余额足够;3. 输入正确密码并输入取款金额,ATM机出现故障未出钞但系统已扣款密码:123456,取款金额:1001. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入金额;4. 确认取款提示“交易异常,请联系银行客服”,银行卡退回,后续通过银行查询处理,账户应恢复原余额
ATM_012ATM机取款多次取款后账户余额更新正确性验证P11. 银行卡有效且可正常使用;2. 账户初始余额充足;3. ATM机余额充足密码:123456,多次取款金额(如第一次100,第二次200)1. 插入银行卡;2. 输入密码;3. 进入主页,选择取款并输入第一次金额,完成取款;4. 再次选择取款并输入第二次金额,完成取款每次取款成功后账户余额正确更新,最终余额为初始余额减去两次取款金额总和
ATM_013ATM机取款取款时银行卡被挂失P01. 银行卡已挂失;2. 尝试使用该卡取款无(卡已挂失状态)1. 插入已挂失的银行卡;2. 输入密码(若有)提示“此卡已挂失,请联系发卡行”,银行卡退回,流程结束

4.3、作业:根据业务流程图设计用例

分析过程:

4.4、扩展:流程图

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

总结:

        1、场景法使用场景

                根据用户正常使用的各种业务场景(功能组合),验证产品是否满足需求的过程

        2、场景法设计用例步骤

                ①根据流程图找出路径

                ②根据路径编写用例(每条路径对应一条用例)

        3、场景法注意事项

                流程图谁提供?一般是产品

                什么时候测业务流程?一般是开发提测后 (冒烟测试)

                用例标题看目的;步骤看矩形,预置条件看菱形

五、错误推测法(了解即可)

时间宽裕:可以再原有模块【重点出问题模块】上细化编写用例

时间紧迫:可以不写用例【重点出问题模块】,列出测试点【整理测试思路】

  • 方法介绍:根据经验推测系统可能出现的问题

  • 适用思想:有经验的人员根据出现问题的模块再次列举问题清单

  • 适用场景:

    • 时间宽裕:常规测试完毕后,再次验证容易出问题的模块

    • 时间紧迫:根据问题清单,进行重点功能的测试

总结:

        1、错误推测法使用场景

                时间紧迫/宽裕时,基于2/8原则测试易错模块

        2、错误推测法注意事项

                需要有经验的人使用(非常规方法)

                时间紧迫时,可以不写用例

其他用例设计方法:

  • 因果图---> 判定表

  • 正交表法 ---> 简化用例用

  • 观察法 ---> 界面显示【是否和原型图一致】

六、今日总结

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐