📖 前言:在软件测试中,设计测试用例是确保软件质量的关键步骤。本文将介绍几种常用的测试用例设计方法,包括基于需求的设计方法、等价类、边界值、因果图、正交排列、场景设计法和错误猜测法。通过这些方法,可以全面覆盖软件的功能和性能,确保测试的有效性和全面性。


🕒 1. 设计测试用例概述

1、设计测试用例不仅需要方法,还需要尽可能地考虑所有潜在的情况

2、设计测试用例的原则:用例设计应覆盖其应实现的功能,同时也要考虑其未实现且不应实现的功能

3、测试用例设计得越多是否越好?

  • 在工作中,测试用例越多越能全面覆盖项目测试,这是最理想的。
  • 在面试中,设计更多的测试用例更佳,因为这考验了测试用例设计能力和思维的广度。

🕒 2. 设计测试用例的具体方法

设计测试用例的具体方法:
1)基于需求的设计方法:根据万能公式来设计
2)等价类
3)边界值
4)因果图(判定表法)
5)正交排列
6)场景设计法
7)错误猜测法

🕘 2.1 基于需求的设计方法

设计测试用例的万能公式:

功能测试 + 界面测试 + 易用性测试 + 兼容性测试 + 性能测试 + 安全测试 + 网络测试 + 中断测试

  • 功能测试:这可能基于需求文档,也可能基于生活经验。
  • 界面测试:颜色、形状、大小、材质(对于实物);文字、输入框、图片、下拉框等所有可见元素(对于网页)
    【工作中是根据设计图来设计界面测试用例的】
  • 易用性测试:检查软件是否易于上手,例如是否有引导、提示性文字等。
  • 兼容性测试:包括浏览器兼容性、版本兼容性、系统兼容性以及数据兼容性等。
  • 性能测试:即使功能正常,也不意味着性能就一定优秀。性能通常表现在极端条件下,例如高并发量、快速响应时间等。
  • 安全测试:检查隐私数据是否加密处理,如用户界面密码显示和数据库中的隐私数据加密,防止被SQL注入和权限越界(垂直/水平)。

垂直越权指的是在权限等级不同的用户之间的权限越界,例如在教务系统中,教师有布置作业的权限而学生没有。如果学生能够布置作业,这就构成了垂直越权。
水平越权则发生在权限等级相同的用户之间,如都是学生的张三和李四,张三不应该能够访问并操作李四的账户界面。如果张三能够操作李四的界面,那便是水平越权。

  • 网络测试:WIFI/5G/4G/3G/2G,弱网,无网
  • 中断测试:使用中切回桌面,来电/闹钟切断

🕘 2.2 等价类

  1. 概念:根据需求,将输入(在特殊情况下也会考虑输出)分为若干个等价类。从每个等价类中选取一个测试用例,若该用例通过测试,则认为该用例所代表的等价类通过测试。这种方法可以用较少的测试用例来实现更广泛的功能覆盖,从而解决了无法穷举测试的问题。

  2. 等价类实际上是一种分区/分块的方法。

  3. 等价类的划分:
    1)有效等价类:根据需求文档,是有意义的集合。
    2)无效等价类:根据需求文档,是无意义的集合。

  4. 步骤:
    1)确定有效等价类和无效等价类。
    2)编写测试用例。

  5. 例子:
    假设输入密码的正确范围是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元,则该订单是优惠订单,否则是不优惠订单。

  1. 确认输入条件和输出条件:
    ① 输入条件:红包(A)、订单大于300元(B)、提交订单(C)
    ② 输出条件:优惠订单1、无优惠订单2

  2. 找出输入条件和输出条件之间的关系

输入条件 A B C AB AC BC ABC 非ABC(null)
输出条件 2 2 2 2 1 1 1 2
  1. 画判定表(Excel)
组合/用例 1 2 3 4 5 6 7 8
红包
金额大于300元
订单提交
优惠订单
无优惠订单
  1. 根据判定表编写测试用例

①有红包,金额不大于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、例子:
注册页面:姓名、电子邮箱、密码、确认密码、验证码。(即:因素)
每个因素对应的水平数都是:填写、不填写

  1. 找出因素数和水平数:
    ① 因素:姓名、电子邮箱、密码、确认密码、验证码
    ② 水平:填写、不填写

  2. 使用allpairs生成正交表:

①在excel中创建因素和水平,并进行复制

姓名 电子邮箱 密码 确认密码 验证码
填写 填写 填写 填写 填写
不填写 不填写 不填写 不填写 不填写

②打开pairs的文件夹,创建一个txt文件,并将刚刚的复制粘贴并保存
③然后使用cmd打开pairs所在的路径,然后 allpairs.exe 刚刚的文件 > 生成正交表的文件(不用手动创建,自己会生成)

D:\pairs>allpairs.exe register.txt > result.txt

④ 正交表
在这里插入图片描述

注:~表示此时取值可以是填写也可以是不填写。

利用allpairs生成的正交表跟实际的正交表可能有出入,但是仍然不影响我们使用allpairs生成正交表。

  1. 根据正交表编写测试用例

①填写姓名、电子邮箱、密码、确认密码、验证码。
②填写姓名,不填写电子邮箱、密码、确认密码、验证码。
③填写电子邮箱、确认密码,不填写项目、密码、验证码。
④填写密码、验证码,不填写姓名、电子邮箱、确认密码。
⑤填写姓名、电子邮箱、密码,不填写确认密码、验证码。
⑥填写确认密码、验证码,不填写姓名、电子邮箱、密码。

  1. 补充可能存在遗漏但是非常重要的测试用例

⑦ 全部都不填写姓名、电子邮箱、密码、确认密码、验证码。

🕘 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
博客链接:🔎 作者博客主页

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐