黑盒测试方法:原理+实战
目录
一、如何设计测试用例
二、黑盒测试常用方法
1、基于需求进行测试用例的设计
2、等价类
3、边界值
4、判定表分析法(因果分析法)
5、正交表
6、场景设计法
三、案例补充
1、使用Fiddler模拟弱网
2、针对一个接口该如何测试
一、如何设计测试用例
测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、测试步骤、测试数据、测试结果等要素。
设计测试用例的一个万能公式:
功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试
二、黑盒测试常用方法
1、基于需求进行测试用例的设计
基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就是要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计。
需求文档->梳理需求(掌握需求)->针对文档设计测试用例(基于需求设计测试用例)
在分析测试需求一般可以分为功能测试需求和非功能测试需求
功能测试需求通常包括以下几个方面:
- 系统各个功能界面的验证
- 借助业务把功能串起来进行测试
- 功能的一致性、交互性(多功能互操作)的测试
- 系统的不同输入,结果输出的业务数据测试
- 功能的错误操作,异常操作的测试(属于负面测试)
- 功能实现用到的算法验证,有时需要运用代码评审
- 用户操作的易用性、用户体验、往往结合功能测试同时验证
非功能测试需求包括:兼容、性能、安全、网络等。
针对具体的需求,可以根据业务分类,用户角色(餐厅的会员系统)或者用户操作区域等将系统的功能分解成若干个功能模块,然后按照功能模块分别进行测试需求分析。按照功能模块划分,业务模块划分是最常见的做法。


基于需求设计测试用例的这种方法其实时比较单一的,只使用这种方法进行测试用例的设计难免会有很多的地方考虑不周,所以下面介绍的黑盒测试方法就是在需求的基础上,更精细的进行弥补和设计。
2、等价类
依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为锁代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
等价类可以分为两种
- 有效等价类:满足用户需求的输入集合。
- 无效等价类:不满足用户需求的输入集合。
等价类思想设计测试用例步骤
①、充分理解需求
②、划分有效等价类、划分无效等价类
③、从有效等价类抽取其中一个数据进行设计测试用例;从无效等价类中抽取其中一个进行设计测试用例。
比如注册页面用户名限定长度6~15位,那么6~15位就是有效等价类,没有在这个范围内的长度都是无效等价类。

3、边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法时作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
这里我们还需要了解一下边界点的概念:
- 上点:边界上的点
- 内点:边界内的点
- 离点:边界值附近的一个点。如果是一个闭区间,我们需要在区间外找距离上点最近的点;如果是开区间,则在区间内距离上点最近的点。
边界值设计测试用例方法
①、充分理解需求
②、找边界点
③、针对边界点设计测试用例

4、判定表分析法(因果分析法)
判定表法是因公图法的简化,知识神略了因果图法中的画图过程,是黑盒测试中常用的一个方法,他主要用于测试有多种输入,并且结果会依赖于输入的情况而有所不同的场景。
判定表中存在以下4中关系:
与:所有的条件必须满足,如果一个条件不满足,此时结果为假。
或:满足其中一个条件结果就为真,如果条件全部为假,结果就为假。
恒等:条件为真、结构一定为真。
非:条件为佳,结果才为真。
判定表分析法设计测试用例的步骤:
- 分析所有可能的输入和可能的输出。
- 找出输入与输出之间的对应关系。
- 设计判定表
- 把判定表对应到每一个测试用例
✨ 案例
假设业务单据的处理规则为:"淘宝618活动,订单已提交,订单合计金额大于300元或者有红包,则进行优惠"。
1️⃣第一步:确定输入输出
输入:订单已提交,订单金额大于300,有红包。
输出:优惠、不优惠。
2️⃣第二部:输入和输出之间的关系
订单已提交,金额大于300,有红包,优惠。
订单已提交,金额大于300,没有红包,优惠。
订单已提交,金额小于300,有红包,优惠。
订单已提交,金额小于300,没有红包,不优惠。
订单未提交,金额大于300,有红包,不优惠。
订单未提交,金额大于300,没有红包,不优惠。
订单未提交,金额小于300,有红包,不优惠。
订单未提交,金额小于300,没有红包,不优惠。
3️⃣第三步

4️⃣第四点:测试用例要素

5、正交表
使用判定表法存在用例数目比较多的情况,而正交表法的目的就是为例减少用例数目,用尽量少的用例覆盖输入的两两组合;正交排列是一种系统的,有序的排列方式,用于软件测试用例设计中,可以保证测试用例的相互独立,减少重复测试,提高测试效率。
1️⃣什么是正交表
最简单的正交表是,含义是:"L"代表正交表;L上角的数字"4"表示有4横行,简称行,即要做四次试验;括号内的指数"3"表示有3纵列,简称列,即最多允许安排的因素是3个;括号内的数字"2"表示表的主要部分只有2种数字(两种取值),即因素有两种水平1与2.正交表的特点是其安排的试验方法具有均衡搭配特性。
2️⃣两个重要的概念
因素:输入变量
水平:每一个输入变量取值
3️⃣正交表的两条性质
每一列种各个数字出现的次数都一样多
任何两列种的各有序数对出现的次数都一样多
4️⃣如何通过正交表设计测试用例
充分理解需求 ->确定因素,确定水平 ->画正交表 ->补充正交表 ->将正交表转换成测试用例
✨示例
继续以注册的需求为例:
姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册。
①列出因素和水平
因素:姓名、邮箱、密码、确认密码、验证码
水平:填写、不填写
②使用allpairs来画正交表
- 将因素和水平放到excel表格中

- 将excel表格内容直接复制到txt文本中

- CMD进入到allpairs安装路径下面

- 使用allpairs生成正交表:allpairs 正交表测试.txt > 正交表测试_result.txt

打开正交表测试_result.txt文件

正交表生成之后,还需要查看以下,生成的是否完整,如果不完整则需要补充以下。

③、将正交表转换为测试用例
正交表的每一行都是一个测试用例

6、场景设计法
场景设计法设计测试用例的步骤
充分理解需求 ->确定主事件流 ->确定次事件流 ->每一个事件就是一个测试用例
主要分为基本事件流和多个备用事件流
- 基本事件流:对于一个场景的最基本的事件流,即软件功能按照正确的事件流,中间无任何差错,从开始一直执行到结束的一条正确流程。
- 备用事件流:对于一个业务可能发生异常情况的场景进行测试,软件功能在执行过程中,除了基本流之外可能遇到的各种情况,是包含可能存在问题的各个支流。

三、案例补充
1、使用Fiddler模拟弱网
打开弱网设置

进行用户设置

打开之后,会出现一个脚本文件,这个时候我们找到 OnBeforeRequest方法,修改其中的代码就可以进行传输速率的设置。在OnBeforeRequest中找到下面的代码,就可以进行设置了。

2、针对一个接口该如何测试
这个时候我们可以打开电脑浏览器搜索内容在,network中查看数据的传输。

将拷贝的信息,在postman中进行解析,成功之后点击send,向服务器发送请求,服务器返回数据。

这个时候想要测试接口,我们就可以根据请求方法进行测试,将测试方法修改一下查看返回数据。

也可以根据请求参数进行测试,将参数修改一下来查看返回的数据。

✨总结:我们向对一个接口进行测试,可以通过上述的方法,将URL拷贝到postman中,然后针对性的进行测试。
- 测试HTTP请求方式(get、post、delete)
- 针对参数进行测试(传递所有参数,传递部分参数、不传递参数,给参数设置null值)。
- 性能测试。
......
相关文章:
黑盒测试方法:原理+实战
目录 一、如何设计测试用例 二、黑盒测试常用方法 1、基于需求进行测试用例的设计 2、等价类 3、边界值 4、判定表分析法(因果分析法) 5、正交表 6、场景设计法 三、案例补充 1、使用Fiddler模拟弱网 2、针对一个接口该如何测试 一、如何设计测试…...
SQLite事务处理
语法 BEGIN TRANSACTION; COMMIT TRANSACTION; (或END TRANSACTION;) ROLLBACK TRANSACTION; 事务处理 除了一些PRAGMA语句以外,其它访问数据库的语句会自动启动事务处理,并且在结束时自动提交。 通过上一节的命令可以手动控制…...
Java中CountDownLatch使用场景
在Java的并发API中,CountDownLatch是一个同步器,它允许一个或多个线程等待一组操作完成。 如果您正在开发一个服务器应用程序,该应用程序在开始处理请求之前需要初始化各种资源。这些资源可能是这样的: 加载配置文件建立数据库连…...
漏刻有时数据可视化Echarts组件开发(41)svg格式地图应用
1.定义SVG文件 var svg ;2.注册地图函数 Echarts.registerMap是Echarts图表库中用于注册地图的函数。它可以将第三方地图或自定义地图数据与Echarts进行集成,使用Echarts的API进行绘制。使用方法如下: echarts.registerMap(mapName, geoJson) 参数map…...
firefox的主题文件位置在哪?记录以防遗忘
这篇文章写点轻松的 最近找到了一个自己喜欢的firefox主题,很想把主题的背景图片找到,所以找了下主题文件所在位置 我的firefox版本:版本: 118.0.1 (64 位)主题名称: Sora Kawai 我的位置在 C:\Users\mizuhokaga\AppData\Roaming\Mozilla\Firefox\Profiles\w0e4e24v.default…...
Vuex获取、修改参数值及异步数据处理
14天阅读挑战赛 学不可以已... 目录 一、Vuex简介 1.1 vuex介绍 1.2 vuex核心 二、Vuex使用 2.1 Vuex安装 2.2 创建store模块 2.3 创建vuex的store实例并注册上面引入的各大模块 三、使用Vuex获取、修改值案例 3.1 创建两个菜单组件 3.2 配置路由 3.3 模拟菜单数据 …...
【 OpenGauss源码学习 —— 列存储(autoanalyze)(二)】
列存储(autoanalyze)(二) 概述PgStat_StatTabEntry 结构体pgstat_count_heap_insert 与 pgstat_count_cu_insert 函数CStoreInsert::BatchInsertCommon 函数pgstat_count_cu_update 函数pgstat_count_cu_delete 函数pgstat_count_…...
使用postman 调用 Webservice 接口
1. 先在浏览器地址栏 访问你的webService地址 地址格式: http://127.0.0.1:8092/xxxx/ws(这个自己的决定)/xxxxXccv?wsdl 2. post man POST 访问wwebService接口 地址格式: http://127.0.0.1:8092/xxxx/ws(这个自己的决定)/xxxxXccv <soapenv:Envelope xmlns:soapenv…...
程序员Google插件推荐
文章目录 AdBlock (广告拦截插件)SuperCopy 超级复制Octotree (github增强工具)GitZip for github (github增强工具)JSON-handleSimpleExtManager(管理谷歌插件)OneTab (标签页合并)PostWoman(接口调试)篡改猴 (Tampermonkey)FeHelper(前端助手) AdBlock (广告拦截插件) ☆ 拦截…...
机器学习中常见的监督学习方法和非监督学习方法有哪些。
问题描述:最近面试某些公司算法岗,看到一道简答题,让你举例熟悉的监督学习方法和非监督学习方法。 问题解答: 监督学习方法常见的比较多: 线性回归(Linear Regression): 用于回归问…...
UEFI基础——测试用例Hello Word
Hello 测试用例 硬件环境:龙芯ls3a6000平台 软件环境:龙芯uefi固件 GUID获取网址:https://guidgen.com 一、创建工程 mkdir TextPkg/三个文件 Hello.c 、 Hello.inf 、HelloPkg.dsc 1.1 Hello.c /** fileThe application to print hello …...
【tomcat、java】
java:maven配置 1.安装插件 <build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port&…...
京东获取推荐商品列表 API
item_recommend-获取推荐商品列表 请求参数 请求参数:type 参数说明:type:推荐类型 进入API测试页 响应参数 Version: Date: 名称类型必须示例值描述 items items[]0获取推荐商品列表 num_iid Bigint010021415166448宝贝ID detail_url String0http…...
rust cfg的使用
前提是一个crate倒入另一个crate。 先看结构 test_lib目录结构 这与另一个crate处于同一个目录,所以另一crate倒入的时候在Cargo.toml中使用如下语句。 test_lib = {path = "../test_lib" }先在test_lib/src/abc/abc.rs中添加没有cfg的两个函数做测试。 pub fn…...
电脑屏幕怎么录制?5 个最佳免费录屏软件
您是否想使用网络摄像头录制优酷视频、抖音直播或在线课程等项目,但完全不知道如何开始? 不用担心。有很多软件选项可以帮助您。虽然每一款都有不同的功能,但它们都能够录制网络摄像头并输出精美的高质量视频。 以下是我们精选的最佳作品。…...
vscode 调试使用 make 编译的项目
1、首先点击运行 --> 启动调试: 2、选择g或gcc生成和调试活动文件: 3、出现下面提示是正常的,点击仍要调试: 点击打开“launch.json”: 4、此时会在项目工作目录下生成tsak.josn和launch.json文件: 如…...
Docker修改阿里源
在一次安装rtmp推流服务时,总是无法下载源,估计是国外资源下载超时照成的,于是想到修改为国内源。 docker pull alfg/nginx-rtmp Using default tag: latest latest: Pulling from alfg/nginx-rtmp 530afca65e2e: Retrying in 7 seconds c20…...
有必要买一台内衣裤专洗机吗?家用小洗衣机推荐
随着内衣洗衣机的流行,很多小伙伴在纠结该不该入手一款内衣洗衣机,专门来洗一些贴身衣物,答案是非常有必要的,因为我们现在市面上的大型洗衣机只能做清洁,无法对我们的贴身衣物进行一个高强度的清洁,而小小…...
高精度与高精度的乘法---基础算法
看到一个博主写得不错,我也照猫画虎:) 原因 在计算两个非负整数时,如果位数很大,连 long long 类型都存储不了,就要使用到高精度的乘法 原理 原理依旧是模拟人计算两个数的积,早在小学我们已…...
护眼灯有效果吗?科普护眼灯的作用与推荐
现在我们很多家长对自己孩子的视力十分关心,生怕自己的孩子是近视、远视、弱视等等。对于父母而言,在孩子读书压力大课业重的关键时期,为孩子选择合适的桌椅,保护灯具从而保护孩子的眼睛是非常重要的事情!那么买给孩子读书做功课的…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
