📖 前言:在软件测试中,设计测试用例是确保软件质量的关键步骤。本文将介绍几种常用的测试用例设计方法,包括基于需求的设计方法、等价类、边界值、因果图、正交排列、场景设计法和错误猜测法。通过这些方法,可以全面覆盖软件的功能和性能,确保测试的有效性和全面性。
目录
🕒 1. 设计测试用例概述
1、设计测试用例不仅需要方法,还需要尽可能地考虑所有潜在的情况。
2、设计测试用例的原则:用例设计应覆盖其应实现的功能,同时也要考虑其未实现且不应实现的功能。
3、测试用例设计得越多是否越好?
- 在工作中,测试用例越多越能全面覆盖项目测试,这是最理想的。
- 在面试中,设计更多的测试用例更佳,因为这考验了测试用例设计能力和思维的广度。
🕒 2. 设计测试用例的具体方法
设计测试用例的具体方法:
1)基于需求的设计方法:根据万能公式来设计
2)等价类
3)边界值
4)因果图(判定表法)
5)正交排列
6)场景设计法
7)错误猜测法
🕘 2.1 基于需求的设计方法
设计测试用例的万能公式:
功能测试 + 界面测试 + 易用性测试 + 兼容性测试 + 性能测试 + 安全测试 + 网络测试 + 中断测试
- 功能测试:这可能基于需求文档,也可能基于生活经验。
- 界面测试:颜色、形状、大小、材质(对于实物);文字、输入框、图片、下拉框等所有可见元素(对于网页)
【工作中是根据设计图来设计界面测试用例的】 - 易用性测试:检查软件是否易于上手,例如是否有引导、提示性文字等。
- 兼容性测试:包括浏览器兼容性、版本兼容性、系统兼容性以及数据兼容性等。
- 性能测试:即使功能正常,也不意味着性能就一定优秀。性能通常表现在极端条件下,例如高并发量、快速响应时间等。
- 安全测试:检查隐私数据是否加密处理,如用户界面密码显示和数据库中的隐私数据加密,防止被SQL注入和权限越界(垂直/水平)。
垂直越权指的是在权限等级不同的用户之间的权限越界,例如在教务系统中,教师有布置作业的权限而学生没有。如果学生能够布置作业,这就构成了垂直越权。
水平越权则发生在权限等级相同的用户之间,如都是学生的张三和李四,张三不应该能够访问并操作李四的账户界面。如果张三能够操作李四的界面,那便是水平越权。
- 网络测试:WIFI/5G/4G/3G/2G,弱网,无网
- 中断测试:使用中切回桌面,来电/闹钟切断
🕘 2.2 等价类
-
概念:根据需求,将输入(在特殊情况下也会考虑输出)分为若干个等价类。从每个等价类中选取一个测试用例,若该用例通过测试,则认为该用例所代表的等价类通过测试。这种方法可以用较少的测试用例来实现更广泛的功能覆盖,从而解决了无法穷举测试的问题。
-
等价类实际上是一种分区/分块的方法。
-
等价类的划分:
1)有效等价类:根据需求文档,是有意义的集合。
2)无效等价类:根据需求文档,是无意义的集合。 -
步骤:
1)确定有效等价类和无效等价类。
2)编写测试用例。 -
例子:
假设输入密码的正确范围是6~18位,那么编写的测试用例(具体到测试数据)包括:
① 输入长度为6~18位的密码,具体为10位。
② 输入长度小于6位的密码,具体为2位。
③ 输入长度大于18位的密码,具体为20位。
补充:如果给出的是具体的需求而非范围,则所有针对这些需求的类都是有效等价类,其他的则是无效等价类(从无效等价类中挑选一些进行测试即可)。
🕘 2.3 边界值与边界点
1、边界值是指:有效边界+无效边界/次边界值
2、边界点:
- 上点:边界上的点
- 内点:边界内的点
- 离点:边界值附近的一个点(闭区间区间外距离上点最近的点,开区间区间内距离上点最近的点)
离点举例:[6,15] 和 (6,15]
前者:5、16;后者7、16
3、例子:
输入密码正确是6~18位,则边界值:
① 有效边界值:6、18
② 无效边界值:5、19
4、【面试题】假如浮点型的范围是[6,10],那么它的有效边界和无效边界是?
有效边界:6、10
无效边界:单精度:5.99999999、10.00000001;双精度:5.9999999999999999、10.0000000000000001
①单精度:4字节,有效位数8位
②双精度:8字节,有效位数16位
③所以:单精度:±0.00000001 ; 双精度:±0.0000000000000001
🕘 2.4 因果图(判定表法)
使用场景是:输入条件的组合对应不同的结果。
判定表设计测试用例的步骤:
1)确认输入条件和输出条件
2)找出输入条件和输出条件之间的关系
3)画判定表
4)根据判定表编写测试用例
例子:
当订单使用了红包或者订单金额大于300元,则该订单是优惠订单,否则是不优惠订单。
-
确认输入条件和输出条件:
① 输入条件:红包(A)、订单大于300元(B)、提交订单(C)
② 输出条件:优惠订单1、无优惠订单2 -
找出输入条件和输出条件之间的关系
输入条件 | A | B | C | AB | AC | BC | ABC | 非ABC(null) |
---|---|---|---|---|---|---|---|---|
输出条件 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 2 |
- 画判定表(Excel)
组合/用例 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
红包 | ✓ | ✓ | ✓ | ✓ | ||||
金额大于300元 | ✓ | ✓ | ✓ | ✓ | ||||
订单提交 | ✓ | ✓ | ✓ | ✓ | ||||
优惠订单 | ✓ | ✓ | ✓ | |||||
无优惠订单 | ✓ | ✓ | ✓ | ✓ | ✓ |
- 根据判定表编写测试用例
①有红包,金额不大于300元且订单没有提交,则是无优惠订单。
②没有红包,金额大于300元且订单没有提交,则是无优惠订单。
③没有有红包,金额不大于300元,订单提交,则是无优惠订单。
④有红包,金额大于300元,订单没有提交,则是无优惠订单。
⑤有红包,金额不大于300元,订单提交,则是优惠订单。
⑥没有红包,金额大于300元,订单提交,则是优惠订单。
⑦有红包,金额大于300元且订单提交,则是优惠订单。
⑧没有红包,金额不大于300元且订单没有提交,则是无优惠订单。
判定表法和因果图法的步骤实际上相似,区别在于因果图法在制作判定表前多了绘制因果图这一步。因为绘制因果图较为复杂且没有统一的方法,目前研究它的必要性不大。
🕘 2.5 正交排列
1、正交试验设计法是指从大量的试验中挑选出适量的、有代表性的点,根据“正交表”从而合理地设计出测试用例。
2、了解“正交表”
1)正交表的表示,如:L4(23),其中:“L”代表正交表;L 下角的数字“4”表示有 4 横行,即要做四次试验;括号内的指数“3”表示有3 纵列,即最多允许安排的因素是3 个;括号内的数“2”表示表的主要部分只有2 种数字,即因素有两种水平1与2。正交表的特点是其安排的试验方法具有均衡搭配特性。
序号 | 因子 A | 因子 B | 因子 C |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
2)正交表特点:
① 每一列中,不同的数字出现的次数相同。(也就是水平数出现次数相同,但是各列之间的数字可以不同)
② 任意两列中数字的排列方式齐全且均衡。(每个组合出现的次数相同)
3、根据正交表设计测试用例的步骤:
1)找出因素数和水平数
2)生成正交表,需要借助生成正交表的工具allpairs
3)根据正交表来编写测试用例
4)补充可能存在遗漏但是非常重要的测试用例
4、例子:
注册页面:姓名、电子邮箱、密码、确认密码、验证码。(即:因素)
每个因素对应的水平数都是:填写、不填写
-
找出因素数和水平数:
① 因素:姓名、电子邮箱、密码、确认密码、验证码
② 水平:填写、不填写 -
使用allpairs生成正交表:
①在excel中创建因素和水平,并进行复制
姓名 | 电子邮箱 | 密码 | 确认密码 | 验证码 |
---|---|---|---|---|
填写 | 填写 | 填写 | 填写 | 填写 |
不填写 | 不填写 | 不填写 | 不填写 | 不填写 |
②打开pairs的文件夹,创建一个txt文件,并将刚刚的复制粘贴并保存
③然后使用cmd打开pairs所在的路径,然后 allpairs.exe 刚刚的文件 > 生成正交表的文件
(不用手动创建,自己会生成)
D:\pairs>allpairs.exe register.txt > result.txt
④ 正交表
注:~
表示此时取值可以是填写也可以是不填写。
利用allpairs生成的正交表跟实际的正交表可能有出入,但是仍然不影响我们使用allpairs生成正交表。
- 根据正交表编写测试用例
①填写姓名、电子邮箱、密码、确认密码、验证码。
②填写姓名,不填写电子邮箱、密码、确认密码、验证码。
③填写电子邮箱、确认密码,不填写项目、密码、验证码。
④填写密码、验证码,不填写姓名、电子邮箱、确认密码。
⑤填写姓名、电子邮箱、密码,不填写确认密码、验证码。
⑥填写确认密码、验证码,不填写姓名、电子邮箱、密码。
- 补充可能存在遗漏但是非常重要的测试用例
⑦ 全部都不填写姓名、电子邮箱、密码、确认密码、验证码。
🕘 2.6 场景设计法
1、这仅仅是一个思维引导。它提醒我们不能完全依赖需求文档中的基本流程,而应尽可能多地考虑实际操作中可能出现的意外情况。
2、概念:当前的软件几乎都采用事件触发机制来控制流程,事件触发的具体情境构成了场景,而同一事件在不同触发顺序和处理结果下形成了事件流。这种方法能生动地描述事件触发的情境,有助于测试设计者制定测试用例,使测试用例更易于理解和执行。
3、相关概念:基本事件流(事件完成的正确顺序流程)和备选事件流(正常流程中各阶段可能出现的其他情况)
【基本事件流是最简短的,因为备选事件流在基本事件流的基础上增加了额外的情况】
4、ATM取款例子:
基本事件流:插卡 → 输入密码 → 选择“取款”功能 → 输入金额 → 取钞 → 退卡
备选事件流:卡插不进去 → 密码输入错误,吞卡 → 选择的是其他功能 → 输入金额不符合要求 → 吐钞失败,钱未取走 → 卡被卡住
(在基本事件流上有额外情况,流程更长了)
编写测试用例
1)基本事件流:先插卡,然后输入密码,… ,最后退卡
2)备选事件流:
① 插入卡之后,卡被ATM卡住,… ,最后退卡
② 插入卡之后,输入密码错误,… ,最后退卡
🕘 2.7 错误猜测法
概念:错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
🕒 3. 设计测试用例案例
设计水杯的测试用例:
对登录页面设计测试用例:
对朋友圈设计测试用例:
【面试题】某手机软件有用TF卡导出数据的功能,请写出测试此功能点的思路
考虑方向 | 检查点 | 测试思路描述 |
---|---|---|
正向 | 导出数据正确性 | 导出数据,验证数据正确性 |
逆向 | 导出数据有效性 | 无数据时,导出功能是否正确 |
边界容量 | TF卡空间不足 | 只能容纳部分数据 |
边界容量 | TF卡容量已满 | |
容错 | TF卡写保护 | |
容错 | TF卡无法识别 | |
容错 | 人为中断 | 导出时拔掉TF卡 |
容错 | 导出时断电、关机等 | 再开机后检查能否正确导出 |
性能 | 连续多次导出 | 脚本实现,大量导出,查看数据是否正确 |
性能 | 检查导出速度 | |
兼容性 | 不同品牌和容量 | |
兼容性 | 不同分区格式FAT、FAT32、NTFS | 不使用手机自带的TF卡格式化功能 |
OK,以上就是本期知识点“用例篇”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页