黑盒测试方法: 从原理到实战

news2024/12/22 13:29:00

文章目录

  • 一. 如何设计测试用例
  • 二. 常用黑盒测试方法
    • 1. 基于需求设计的测试用例
    • 2. 等价类划分法
    • 3. 边界值
    • 4. 判定表分析法 (因果分析法)
    • 5. 正交排列
    • 6. 场景设计法
    • 7. 用例场景示例
    • 8. 错误猜测法
  • 三. 补充案例
    • Fiddler实现弱网测试
    • 水杯测试用例
    • 微信朋友圈测试用例
    • 淘宝购物车测试用例
    • 可视化压缩工具测试用例

一. 如何设计测试用例

这里简单说一下应该如何设计测试用例, 首先, 我们知道测试用例就是测试人员向被测试系统提供的一组测试数据, 它主要包含测试环境, 测试步骤, 测试数据, 预期结果等要素;

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

功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试

知道了这些, 我们就可以分析需求, 然后通过一些科学的设计测试用例的方法, 从需求中提取出测试项, 再去根据测试项进行进一步的细分, 提取出测试点, 编写测试用例.

通过下面的内容来进一步学习如何设计测试用例.

二. 常用黑盒测试方法

1. 基于需求设计的测试用例

需求是测试人员进行测试的依据, 基于需求去设计测试用例是最基本的方法, 当测试人员拿到需求之后, 需要分析需求, 验证需求的合理性与正确性; 随后, 从需求中提取出测试项, 再去根据测试项进行进一步的细分, 提取出测试点, 编写测试用例.

需求文档 -> 梳理需求 (掌握需求) -> 针对文档设计测试用例 (基于需求设计测试用例)

在分析测试需求时, 一般分为功能测试需求非功能测试需求:

功能测试需求通常包括以下几个方面:

  1. 系统各个功能界面的验证
  2. 借助业务把功能串起来进行测试
  3. 功能的一致性, 交互性 (多功能互操作) 的测试
  4. 系统的不同输入, 结果输出的业务数据测试
  5. 功能的错误操作, 异常操作的测试 (属于负面测试)
  6. 功能实现用到的算法验证, 有时需要用代码评审
  7. 用户操作的易用性, 用户体验, 往往结合功能测试同时验证

针对具体的需求, 可以根据业务分类, 用户角色(餐厅的会员系统)或者用户操作区域等将系统的功能, 分解成若干个功能模块, 然后按照功能模块分别进行测试需求分析; 按照功能模块划分, 业务模块划分是最常见的做法.

非功能测试需求主要涉及性能, 安全性, 可靠性, 兼容性, 易维护性和可移植性等.

①功能测试 (用户基本功能需求)

比如登录页的基本功能: 登录, 找回密码, 二维码登录, 记住账号和密码等.

②性能测试

对于非软件来说, 性能可以有耐寒性, 耐高温性, 耐腐蚀性, 保温性, 使用寿命, 抗压性, 耐摔性等; 对于软件来说, 需要经常考虑以下几个方面:

  1. 响应时间 (1s以内或者2s以内)
  2. 多个用户同时访问, 服务器是否响应, 或者响应时间等

③易用性测试 (考虑用户体验)

易用性主要是考虑用户的使用体验, 要方便用户去使用

如: 关键功能是否容易看到, 操作起来是否方便, 必要的功能是否会有提示, 是否有使用教程等

④兼容性测试

常见的兼容性有以下几个:

  1. 各个版本的操作系统是否兼容

  2. 能否在各个浏览器上面兼容

  3. 运行的环境: PC端, 小程序, 移动端

  4. 能否在各个版本的浏览器, 操作系统上面运行

  5. 能否在不同分辨率下兼容

如果是物体, 比如说水杯, 它的兼容性可以考虑, 水杯能否装一些饮料, 能否装一些其他液体…

⑤界面测试 (UI,外观)

对于物体来说就是外观, 比如形状, 颜色, 大小, 图案等方面

而对于我们软件来说主要有以下几个方面:

  1. 页面布局是否合理
  2. 页面是否有错别字, 病句
  3. 文本框/输入框大小形状颜色等是否合理
  4. 界面的设计是否符合页面的需求
  5. 密码等隐私信息是否支持密文等

⑥安全测试

对于物体而言是在使用过程中可能出现的安全隐患, 如爆炸, 发生化学反应, 高温, 有毒物质等

对于软件而言主要有以下几个方面:

  1. 是否存在SQL注入

  2. 是否存在XSS漏洞

  3. 是否存在脚本攻击

  4. 是否有权限设置, 用户信息认证, 人脸识别

  5. 接口安全, 私密信息以及参数是否进行加密

🎯这里以QQ登录为例, 进行具体的测试用例设计.

img

img

基于需求设计测试用例的这种方法是其实是比较单一的, 只使用这种方法进行测试用例的设计难免会有很多的地方考虑不周, 所以下面介绍的黑盒测试方法就是在基于需求的基础上, 更精细的进行弥补和设计.

2. 等价类划分法

等价类的概念是软件测试中的一个重要概念, 它是指输入域中的一组数据, 这组数据在被测软件的处理结果上具有等价性, 简单来说等价类就是将数据划分集合, 将输入划归为不同的等价类换, 等价类中包含的所有值在软件的响应上具有相同或相似的效果.

依据需求将输入 (特殊情况下会考虑输出) 划分为若干个等价类, 从等价类中选出一个测试用例, 如果这个测试用例测试通过, 则认为所代表的等价类测试通过, 这样就可以用较少的测试用例达到尽量多的功能覆盖, 解决了不能穷举测试的问题.

等价类的划分有两种情况:

  • 一是有效等价类: 满足用户需求输入集合
  • 二是无效等价类: 不满足用户输入集合

等价类思想设计测试用例步骤:
①充分理解需求
②划分有效等价类, 划分无效等价类
③从有效等价类抽取其中一个数据进行设计测试用例; 从无效等价类中抽取其中一个进行测试用例设计
🎯比如注册页面用户名限定长度 6~15 位, 那么 6 位以上, 15 及以下(包含 6 和 15 )的都为有效等价类, 其余的是无效等价类, 通俗点举例我们去超市买水果, 葡萄, 草莓, 西瓜这些就是有效等价类, 而白菜, 土豆, 大米就是无效等价类.

img

🎯三角形问题: 输入 3 个整数 a, b, c 分别作为三角形的 3 条边, 通过程序判断 3 条边构成三角形的类型为等边三角形, 等腰三角形, 一般三角形或者不构成三角形.

img

3. 边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法, 通常边界值分析法是作为对等价类划分法的补充, 这种情况下, 其测试用例来自等价类的边界

其主要的测试点是对 “输入” 或 “输出” 的 “边界” 值进行测试

这里有几个边界值的概念:

  1. 上点: 边界上的点 (不管区间的开闭)
  2. 内点: 边界内的点
  3. 离点: 离上点最近的点 (当上点为闭区间的点时, 离点在该点的外侧, 当上点为开区间的点, 离点在该点的内侧)

边界值设计测试用例方法:
①充分理解需求
②找边界点
③针对边界点设计测试用例

🎯还是以用户名限定长度 6~15 位为例:

img

img

4. 判定表分析法 (因果分析法)

判定表法是因果图法的简化, 只是省略了因果图法中的画图过程, 是黑盒测试中常用的一个方法, 它主要用于测试有多种输入, 并且结果会依赖于输入的情况而有所不同的场景.

判定表中存在以下 4 种关系:

  • 与: 所有的条件必须满足, 如果一个条件不满足, 此时结果为假
  • 或: 满足其中一个条件结果就为真, 如果条件全部为假, 结果就为假
  • 恒等: 条件为真, 结果一定为真
  • 非: 条件为假, 结果才为真

判定表分析法设计测试用例的步骤:
①分析所有可能的输入和可能的输出
②找出输入与输出之间的对应关系
③设计判定表
④把判定表对应到每一个测试用例

🎯案例1:
假设业务单据的处理规则为: “淘宝618活动, 订单已提交, 订单合计金额大于300元或有红包, 则进优惠”.

  • 第一步

输入: 订单已提交, 订单金额大于300, 有红包
输出: 优惠, 不优惠

  • 第二步
  1. 订单已提交, 金额大于300, 有红包, 优惠
  2. 订单已提交, 金额大于300, 没有红包, 优惠
  3. 订单已提交, 金额小于300, 有红包, 优惠
  4. 订单已提交, 金额小于300, 没有红包, 不优惠
  5. 订单不提交, 金额大于300, 有红包, 不优惠
  6. 订单不提交, 金额大于300, 没有红包, 不优惠
  7. 订单不是交, 金额小于300, 有红包, 不优惠
  8. 订单不提交, 金额小于300, 没有红包, 不优惠
  • 第三步

img

  • 第四步

img

🎯案例2:

产品说明书: 有一个处理单价为1元5角的盒装饮料的自动售货机, 若投入1元5角, 按下 “可乐”, “雪碧”, 或 “红茶” 按钮, 相应的饮料就送出来; 若投入的是2元硬币, 在送出饮料的同时退还5角硬币.

  • 第一步

输入: 输入1.5元硬币, 输入2元硬币, 按"可乐", 按"雪碧", 按"红茶"
输出: 可乐, 雪碧, 红茶, 输出5角硬币

  • 第二步
  1. 输入1.5元硬币, 按 “可乐”, 输出 “可乐”
  2. 输入1.5元硬币, 按 “雪碧”, 输出 “雪碧”
  3. 输入1.5元硬币, 按 “红茶”, 输出 “红茶”
  4. 输入2元硬币, 按 “可乐”, 输出 “可乐”, 输出5角硬币
  5. 输入2元硬币, 按 “雪碧”, 输出 “雪碧”, 输出5角硬币
  6. 输入2元硬币, 按 “红茶”, 输出 “红茶”, 输出5角硬币
  • 第三步

img

  • 第四步

img

判断表分析法特别适用于需要考虑输入输出之间的组合关系, 不同的组合对应的输出结果不一致的情况;

不画因果图的原因: 因果图画判定表显得比较多余, 实际情况下在判定表中根据输入输出就可以得到测试用例了.

5. 正交排列

上面的判定表法存在用例数目比较多的情况, 而正交法的目的就是为了减少用例数目, 用尽量少的用例覆盖输入的两两组合; 正交排列是一种系统的, 有序的排列方式, 用于软件测试用例设计中, 可以保证测试用例的互相独立,减少重复测试, 提高测试效率.

正交法中必须要知道的就是正交表了, 正交表是一种用表格表示的正交数组, 用于测试用例的设计与管理; 它采用行列交叉的方式, 将被测系统的多个因素以及每个因素的取值组合成表格, 这样我们就可以在这个表格里系统地选择测试值, 组合成测试用例.

正交表由以下要素构成:

  1. 因素: 影响被测系统的输入变量
  2. 各因素的取值 (水平): 每个因素可取的值或值范围
  3. 行与列的表头: 行表头表示被固定的值,列表头表示变量值
  4. 单元格: 每个单元格代表一个测试值的组合,可映射为一条测试用例

正交表的两条性质:

  1. 每一列中各数字出现的次数都一样多
  2. 任何两列中的各有序数对出现的次数都一样多

通过正交表设计测试用例的步骤:

①充分理解需求

②确定因素, 确定水平

③画正交表

④补充正交表

⑥将正交表转换成测试用例

🎯这里以注册需求为例:

  • 第一步, 确定因素和确定水平

因素: 姓名, 邮箱, 密码, 确认密码, 验证码必须全部输入, 才能进行注册
水平: 填写 / 不填写

  • 第二步, 画正交表

这里需要借助一个工具来实现正交表

下载 allpairs: 可以直接去官网下载 https://www.satisfice.com/download/allpairs#

img

img

然后在 Excel 中填写因素和水平:

img

填写完成后在 allpairs 安装目录下新建一个 txt 文本文件:demo20230517.txt, 然后把 Excel 中数据复制进去并保存;

img

img

保存后打开 cmd 切换到 allpairs 所在的目录, 输入 allpairs.exe demo20230517.txt > 20230517result.txt
img

此时, 正交表就出现在 20230517result.txt 中了

img

打开看到红色框住的这些内容就是我们所需要的正交表了

img

这个正交表中~填写的意思是此处选项选填写或者不填写都行, 不影响测试结果.

使用 allpairs 生成的内容, 不一定完整; 还需要新增一些其他的测试用例; 比如这里还需要补充所有输入都不填写的情况.

  • 第三步, 将正交表转换成测试用例

img

6. 场景设计法

主要分为基本事件流和多个备用事件流.

基本事件流: 对于一个场景的最基本的事件流, 即软件功能按照正确的事件流, 中间无任何差错, 从开始直接执行到结束的一条正确流程.

备用事件流: 对于一个业务可能发生异常情况的场景进行测试, 软件功能在执行过程中, 除了基本流之外可能遇到的各种情况, 是包含可能存在问题的各支流.

img

场景测试法设计测试用例的步骤:

①充分理解需求

②确定主事件流

③确定次事件流

④每一个事件流就是一个测试用例

7. 用例场景示例

🎯用户登录到网站后, 进行书籍的选择, 当选好自己心仪的书籍后进行订购, 这时把所需图书放进购物车, 等进行结帐的时候, 用户需要登录自己注册的帐号, 登录成功后, 进行付款交易, 交易成功后, 生成订购单, 整个购物过程结束.

img

基本流:登录在线网站 -> 选择书籍, 放入购物车 -> 登录账号 -> 付款 -> 生成订单

备选流1: 用户不存在 -> 注册用户

备选流2: 密码不正确

备选流3: 账户余额不足 -> 充值

备选流 4 : 账户无金额 -> 充值

可以确定出已下场景:

场景 1 (成功购物): 基本流

场景 2 (账户不存在): 基本流 + 备选流1

场景 3 (账户密码错误): 基本流 + 备选流2

场景 4 (账户余额不足): 基本流 + 备选流 3

场景 5 (账户无金额): 流 + 备选流 4

设计出如下测试用例:

  1. 成功购物, 登录网站 -> 选择书籍, 放入购物车 -> 登录账号 -> 付款 -> 生成订单
  2. 账户不存在, 登录网站 -> 选择书籍, 放入购物车 -> 登录账号 -> 账号不存在, 注册用户 -> 登录账号 -> 付款 -> 生成订单
  3. 账户密码错误, 登录网站 -> 选择书籍, 放入购物车 -> 登录账号 -> 密码错误, 重新输入登录 -> 付款 -> 生成订单
  4. 账户余额不足, 登录网站 -> 选择书籍, 放入购物车 -> 登录账号 -> 付款 -> 余额不足, 充值 -> 付款 -> 生成订单
  5. 账户无金额, 登录网站 -> 选择书籍, 放入购物车 -> 登录账号 -> 付款 -> 账号无金额, 充值 -> 付款 -> 生成订单

8. 错误猜测法

错误猜测法是对被测试软件设计的理解, 过往经验以及个人直觉, 推测出软件可能存在的缺陷, 从而针对性地设计测试用例的方法.

这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握, 还有个人的经验和直觉.

错误推测法和目前流行的 “探索式测试方法” 的基本思想一致, 这类方法在敏捷开发模式下的投入产出比很高, 被广泛应运于测试.

这个方法的缺点是难以系统化, 并且过度依赖个人能力.

错误猜测法的基本步骤:

①分析程序逻辑和实现, 推测出最可能出现的错误类型, 常见的错误类型有: 变量未初始化, 数组下标越界, 参数传递错误, 逻辑运算错误等

②根据猜测出的错误类型和程序逻辑设计测试用例, 这些用例的测试数据应能够激发相应类型的错误

③执行设计的测试用例 ,验证实际输出结果是否与预期一致, 如果存在不一致,则发现了程序错误

④根据测试结果进行错误修复和重测试, 直至所有测试用例的结果均符合预期

三. 补充案例

Fiddler实现弱网测试

第一步, 打开Fiddler, Rules -> Performance -> 勾选 Simulate Modem Speeds, 勾选之后访问网站会发现网络慢了很多.

img

第二步, 设置弱网参数, 菜单 Rules -> Cutomize Rules

img

img

让我们来分析一下这几行代码:

if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = "300"; 
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = "150"; 
}
  • 首先来判断 m_SimulateModem 是否为 true (是否开启), 也就是是否设置了弱网模式.
  • oSession[“request-trickle-delay”] = "300";

Delay sends by 300ms per KB uploaded: 上传1KB内容需要 300ms, 转化一下上传速度: 1Kb/0.3s = 3.3KB/s, 也就是说网络上行速度只有 3.3KB.

  • oSession["response-trickle-delay"] = "150";

Delay receives by 150ms per KB downloaded: 下载1KB内容需要 150ms, 转化后的下载速度: 1KB/0.15s = 6.6KB/s, 也就是说网络下载速度只有6.6KB。

  • 如果你想设置下载的速度为50KB/s, 你则需要设置 Delay 时间为 20ms.
  • 也可以限制上传的速度, 调整 oSession["response-trickle-delay"] 的值即可.

第三步, 验证效果, 同样的接口, 开启弱网前后分别运行一次, 查看统计数据.

img

第四步, 恢复设置, 完成测试之后, 需要再次执行: 打开Fiddler, Rules -> Performance -> 取消勾选 Simulate Modem Speeds, 关闭弱网模拟.

水杯测试用例

img

微信朋友圈测试用例

img

淘宝购物车测试用例

img

可视化压缩工具测试用例

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP8266连接 TLink 云平台

1.硬件准备 (1)正点原子 ATK-ESP-01 WIFI 模块 (2)正点原子 STM32F103ZET6精英板子 (3)USB转TTL模块 2.烧录固件 (1)烧录软件和固件都可以在正点原子增值资料包找到。 (2…

网络安全基础--dns劫持及IP信息收集

0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:多个地点Ping服务器,网站测速 - 站长工具网站测速工具_超级ping…

创建python虚拟环境的两种方法

创建python虚拟环境的两种方法 一、anaconda环境下1、检查是否安装了anaconda2、创建虚拟环境3、激活虚拟环境4、其他命令 二、python纯净环境下1. 安装virtualenv2. 创建虚拟环境3. 激活虚拟环境 一、anaconda环境下 1、检查是否安装了anaconda 只有在anaconda环境下才能创建…

近百个最新免费chatgpt访问集合,包含国内直接访问和国外升级版本

近百个最新免费chatgpt访问集合,包含国内直接访问和国外升级版本。 ChatGPT是一个基于人工智能的聊天机器人,它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术,包括深度学习和神经网络,以便更好地理解用户的…

慎投,5月有4本SCIE期刊被剔除(附SCI/SSCI目录下载)

2023年5月SCI、SSCI期刊目录更新 2023年5月18日,科睿唯安更新了WOS期刊目录,继上次4月WOS期刊目录剔除8本SCIE&SSCI期刊之后,此次5月更新又有4本SCIE期刊发生变动,其中有1本期刊被踢出SCIE数据库,3本期刊更改了名…

pdf怎么转换成ppt文件,5种方法任你选

pdf怎么转换成ppt文件?想必这是我们办公过程中非常常见的问题吧。众所周知,PDF文件格式通常用于存储文档,其内容可能是图像、文字或表格,展示在一个页面上。PPT文件格式通常用于创建演示文稿,其中每个页面都是幻灯片&a…

探秘音乐疗法——基于音乐的喂养环境对小鼠肠道菌群影响的研究

音乐对身心的影响 近年来,环境和动物生理及心理的相关研究越来越多。环境因素的丰富性和多样性是改善动物生理和心理状态的重要研究参数。 环境因素指的是正常环境,在这种环境中,动物通过获得环境激励以做出有益的增强,使它们能够…

怎么把两个pdf合并成一个?三种合并方法任你选择

PDF 格式是一种常见的跨平台文件格式,因此在日常生活和工作中,我们可能需要处理或编辑多个 PDF 文件,并将它们合并为一个文件,以方便查阅和共享。因此,将两个PDF文件合并是非常重要的。首先,两个PDF合并成一…

2023年最新整理渗透测试面试题

1、include、include_once、require、 require_once区别 参考答案: 1、require()和require_once()函数: (1)require()函数引入文件不存在时,将立即退出程序,不再向下执行。 (2)…

AD16中如何创建新工作空间

1、双击“DXP.exe” 如果默认安装,DXP.exe文件位于“C:\Program Files (x86)\Altium\AD16”目录下。 2、打开AD后,我们会看到默认工作空间为“Workspace1.DsnWrk” 3、在“F盘”下创建一个文件夹。命名为“AD16学习”。 4、点击“File-Save Design Work…

Git宝典

版本管理工具介绍 现在比较流行的版本管理工具是git,但是实际上git是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,如svn 版本管理发展简史 SVN(SubVersion) 工作流程 SVN是集中式版本控…

ClickHouse介绍_安装_准备工作_单机安装---大数据之ClickHouse数据库002

首先要修改一下centos的一些限制,这里是文件数的限制,还有进程的限制 要关闭selinux要关闭防火墙 可以看到执行ulimit -a 可以看到linux系统的一些限制 我们要修改的是上面标注的两个配置,一个是文件数,一个是进程数 去编辑这个文件去修改配置 添加上,这些配置 * soft nofile…

京东商品详情API调用说明 京东商品库存销量接口

尊敬的开发人员: 感谢您选择使用京东API进行开发。下面为您提供一份简要的API调用说明,帮助您快速上手并实现所需功能。 1.注册京东开放平台账户并创建应用 首先,您需要在 https://o0b.cn/jennif/ 网站上注册一个京东开放平台的账户&#…

mybatis的一级二级缓存详解及源码解剖

文章目录 什么是一级缓存?什么是二级缓存?一级缓存二级缓存有什么不同?执行流程源码流程解剖一级缓存失效场景分析二级缓存结构及需要解决的问题二级缓存执行流程二级缓存获取和commit源码解剖总结 什么是一级缓存? 一级缓存是指…

如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总

苹果APP安装包ipa如何安装在手机上?很多人不知道怎么把ipa文件安装到手机上,这里就整理了苹果APP安装到iOS设备上的方式,仅供参考 苹果APP安装包ipa如何安装在手机上?使用过苹果手机的人应该深有感触,那就是苹果APP安…

opencv 裁剪超大 tif 图像制作深度学习数据集

文章目录 1. 尝试暴力裁剪(24 位)2. 带透明度读取 (32 位)3. 裁剪标签(8 位) 本文只是进行了简单的尝试,未单独处理最右侧、最下侧和右下角区域,且未设置重叠率 若使用 gdal 进行 ti…

【1】Numpy基础

1 N维数组对象(ndarray) 先理解如何通过numpy进行批次计算: 引入numpy,随机生成数组: import numpy as npdatanp.random.randn(2,3) print(data) print(data*10) print(datadata)[[ 0.88001557 -0.70682337 0.81193…

Linux网络编程——基于UDP协议的简易聊天室

0.关注博主有更多知识 操作系统入门知识合集 目录 1.UDP服务端 1.1消息转发的实现 2.UDP客户端 3.效果展示 1.UDP服务端 使用C、C混编的方式在Linux环境下实现一个简单的UDP服务端。那么我们先看代码,然后逐步分析: // udpServer.hpp #pragma o…

sql 性能优化基于explain调优(二)

文章目录 Explain问题描述解决方案 Explain 关于Explain具体怎么用以及有哪些优点,我就不过多的跟大家去讲解了,从我最初的文章: explain是什么?explain优缺点及如何使用explain优化SQL,大家可以点击这个链接看一下,对…

Midjourney基础教程

本教程收集于:AIGC从入门到精通教程 Midjourney基础教程 目录 新手快速入门知识汇总: