软件测试(黑盒测试、白盒测试、灰盒测试)
- 软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种
一、黑盒测试
- 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑,基于代码输入有哪些应该输出什么进行测试的方法。
- 其方法有:基于直觉和经验的方法(IEBT)、基于需求/标准验证的方法(ReBT)、基于输入域的方法(IDBT)、组合测试方法
1.基于直觉和经验的方法(IEBT)
(1)Ad-hoc随机测试方法
- Ad-hoc测试也称随机测试或猴子测试,是一种没有任何计划、文档的测试方法。测试是非正式和随机进行的。通常会在验收测试的时候进行。
- Ad-hoc测试是由测试人员会临时测试不遵循任何结构化的测试方法,在应用程序的任何部分随机进行的。
(2)基于用户使用测试
- 即将自己代入用户视角,使用该软件进行测试。
(3)错误猜测法
- 基于测试人员的丰富经验和直觉,找出程序中自己认为会出现的错误,并针对性地设计测试用例。
- 经验可能来自于对某项业务的测试较多,也可以来自售后用户的反馈意见,或者从故障管理库中整理出bug。
- 列举出程序可能会出现的错误或者容易产生错误的测试点,然后根据测试点写测试用例。
2.基于输入域的方法
(1)等价类划分法
- 等价类划分具体做法,就是把测试项的输入域或者输出域划分成若干部分,然后从每个部分中选取少数、代表性数据当作测试用例
- 等价类划分法分成有效等价类(合理、合法的输入或者输出数据)和无效等价类(不合理、非法的输入或者输输出数据)
- 举例:
对学生输入的分数进行评级,其中90-100时A,80-89为B,70-79为C,60-69为D,60-0为E。输入分数要求必须时正整数或者为0 根据题目可以得知 (1)有效等价类为:0-59,60-69,70-79,80-89,90-100 (2)无效等价类为:空,负数,大于100的数,小数,含字母的字符串
(2)边界值法
- 边界值法具体做法,就是找到有效数据额无效数据之间的分界点,以及其两边的点进行测试,一般与等价类划分法共同使用。
- 举例:
对学生输入的分数进行评级,其中90<= x <=100时A,80<= x <=89为B,70<= x <=79为C,60< x <=69为D,0<= x <=60为E。输入分数要求必须时正整数或者为0 根据题目可以得知 (1)等级为A的边界值为:101, 100, 90, 89 (2)等级为B的边界值为:90, 89, 80, 79 (3)等级为C的边界值为:80, 79, 70, 69 (4)等级为D的边界值为:70, 69, 61, 60 (5)等级为E的边界值为:-1, 0, 60, 61 综合上述边界值法得到的测试用例有:101, 100, 90, 89, 80, 79, 70, 69, 61, 60, 0, -1
(3)决策表法
- 决策表法具体做法,就是把作为条件的所有输入的各种组合值和它对应的输出值都罗列出来形成表格
- 适用场合:适用于输入输出比较多,且输入之间和输出之间相互制约的条件比较多。
怎么做决策表: 由条件桩、条件项、动作桩、动作项四个部分组成 (1)条件桩:列出问题的所有输入条件 (2)动作桩:列出问题规定可能采取的操作‘ (3)条件项:列出它在列条件的取值(输入) (4)动作桩:列出在条件项的各种取值情况下应该采取的动作(输出)
- 举例:对学生输入的分数进行评级,其中90< x <=100时A,80<= x <=89为B,70<= x <=79为C,60< x <=69为D,0<= x <=60为E。输入分数要求必须时正整数或者为0
- 最终上述决策树每一列为一个测试用例。
(4)因果图法
- 因果图法时一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。
- 输入与输出关系:
- (1)恒等:如果原因为真,那么结果必为真
- (2)与 ^:只有当两个原因都为真的时候,结果才为真
- (3)或 V:两个原因中,有一个为真,那么结果为真
- (4)非 ~:只有原因为假,结果才为真
- 基本约束:
- (1)约束:是指输入状态还存在这某种依赖关系,这种关系称作为约束。
- (2)E约束(异):表示a,b两原因不会同时成立,最多一个能成立。
- (3)I约束(或):a、b、c三个原因中至少有一个必须成立。
- (4)O约束(唯一):a、b当中必须有一个,且仅有一个成立
- (5)R约束(要求):当a出现时,b必须也出现,不可能a出现b不出现
- (6)M约束(屏蔽):表示当a是1时,b必须是0。而当a为0时,b的值不定
3.组合测试方法
(1)Pairwise方法
- Pairwise方法主要的原理是,每组输入参数之间的组合以及每个可能的输出情况之间的组合。
- 在使用该方法的时候,首先要明确测试输入和输出变量的取值范围,以及二者之间的关系,然后使用适当的集合数学算法生成一组测试用例。
(2)n-way方法
(3)正交试验法
- 正交表的构成:
- (1)行数:正交表中行的个数,即试验次数,我们设计测试用例的个数
- (2)因素数:正交表中列的个数,即我们要测试的功能点
- (3)水平数:任何单个因素能够取得的值的最大个数。即要测试功能点的输入条件
- 例子:对某人进行查询,假设查询某个人时有三个查询条件:按“姓名”进行查询,按“身份证号码”查询,按“手机号码”查询
行数 = 因素数 * (水平数 - 1)+ 1 = 3 *(2 - 1) + 1 = 4
(4)分类树方法
- 实际上,分类树法与等价类划分法有些相似
- 分类树法。把测试对象的输入域看作不同的方面组成,对每个方面分离并组成各种类别,而分类结果的各类又可能再进一步被分类。
- 设计步骤:1.识别出测试对象,并分析输入域;2.对测试对象的输入域进行分类;3.画出分类树,组合测试用例。
- 例子:对某人进行查询,假设查询某个人时有三个查询条件:按“姓名”进行查询,按“身份证号码”查询,按“手机号码”查询
二、白盒测试(基于代码的方法)
1.控制流覆盖
void func(int x, int y, int z)
{if(x > 1 && y == 0)z /= x;if(x >= 3 || z > 1)++z;
}
(1)基本路径覆盖
- 根据流图计算环复杂度,得到基本路径覆盖的测试用例数
- 流图为:
- 环复杂度:边数 - 节点个数 + 2 = 6 - 5 + 2 = 3
- 故共3条路经,即3个测试用例
- 1)1-》3-》5,测试数据:x=1,y=1,z=1
- 2)1-》2-》3-》5,测试数据:x=3,y=0,z=6
- 3)1-》3-》4-》5,测试数据:x=3,y=1,z=2
(2)逻辑覆盖
(a)语句覆盖:每条语句至少执行一次
- 走上述ace即可每条语句至少执行一次。
- 只需遍历ace。
- 测试用例:x=3,y=0,z=6
(b)判定覆盖:每个判定的所有可能结果至少出现一次(真假分支都走一遍)
- 若要每个判定条件的所有可能结果都出现一次,则只需走路径ace和路径abd即可
- 测试用例:x=3,y=0,z=6(ace)和 x=1,y=1,z=0(abd)
(c)条件覆盖:每个条件的所有可能结果至少执行一次
- 第一个判断条件的所有取值可能是x>1或x<=1,y=0或y≠0,第二个判断条件的所有取值可能是x>=3或x<3,z>1或z<=1
- 若要每个条件的所有可能结果都执行一次,则x=1,y=0,z=1(abd)和 x=2,y=1,z=2(abe)
(d)MCDC修正判定条件覆盖
(e)条件组合覆盖:每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次
- 第一个判断条件的所有取值可能是x>1或x<=1,y=0或y≠0,第二个判断条件的所有取值可能是x>=3或x<3,z>1或z<=1
- 即测试用例条件应该为①x>1,y=0;②x>1,y≠0;③x<=1,y=0;④x<=1,y≠0;⑤x >= 3,z>1;⑥x>=3,z<=1;⑦x<3,z>1;⑧x<3,z<=1;
测试用例:
1.x=3,y=0,z=6(ace)覆盖组1,5
2.x=3,y=1,z=1(abe)覆盖组2,6
3.x=1,y=0,z=6(abe)覆盖组3,7
4.x=1,y=1,z=1(abd)覆盖组4,8
2.数据流覆盖—变量定义-引用
三、灰盒测试
四、其余测试方法
相关文章:

软件测试(黑盒测试、白盒测试、灰盒测试)
软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种 一、黑盒测试 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑,基于代码输入有哪些应该输出什么进行测试的方法。其方法有:基于直觉和经验的方法(IEBT)、基于需…...
昨天面试的时候被提问到的问题集合。
1、vue的双向绑定原理是什么?里面的关键点在哪里? 2、实现水平垂直居中的方式? 3、常用伪元素有哪一些? 4、移动端如何适配不同屏幕尺寸? 5、本地存储有哪一些?他们三者有什么区别? 6、JS的数据…...

广电运营商三网融合监控运维方案
随着三网融合逐步发展、深化,广电网络从为用户提供原本单一的信息服务转向了集语音、文字、图像为一体的信息服务,同时也实现了由单一独立的网络向综合性网络的改变。如何在业务的融合与竞争中创造核心竞争力,利用自身网络覆盖率上的优势&…...
数据库锁简析
数据库大并发操作要考虑死锁和锁的性能问题。用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server为例。 锁的种类 共享锁(Shared lock) 例1:T1: select…...

说说广播流与普通流
分析&回答 user actions 可以看作是事件流(普通流)patterns 为广播流,把全量数据加载到不同的计算节点。 广播流 Broadcast是一份存储在TaskManager内存中的只读的缓存数据在执行job的过程中需要反复使用的数据,为了达到数据共享&am…...
内卷的本质和大数据在计量经济学领域的运用思考
内卷的本质和大数据在计量经济学领域的运用思考 今天我们来思考两个问题: 当下经济的困局在哪里?为何内卷越来越严重?内卷的本质是什么?为何会出现内卷?市场经济运行的底层逻辑是什么?西方经济学理论的指导…...

毕业设计-摄像头识别二维码
本毕业设计采用imx6ull-linux4.1.15-qt5.6开发板进行测试 相关交叉编译包和摄像头测试程序已上传:https://download.csdn.net/download/qq_42952079/88282608 将zbar和opencv下的lib库文件拷贝到开发板的lib目录下,将camera可执行文件拷贝到开发板目录下…...

封装动态表单组件
技术栈:vue2 js webpack 需求: 利用数据渲染表单,实现代码的精简化及效率的提升。 效果图: 封装的组件: <div v-if"formConfig"><el-formv-bind"$attrs"ref"formDom":model…...

提高Python并发性能 - asyncio/aiohttp介绍
在进行大规模数据采集时,如何提高Python爬虫的并发性能是一个关键问题。本文将向您介绍使用asyncio和aiohttp库实现异步网络请求的方法,并通过具体结果和结论展示它们对于优化爬虫效率所带来的效果。 1. 什么是异步编程? 异步编程是一种非阻…...
网络性能的四大指标:带宽、时延、抖动、丢包
原文链接:https://www.eet-china.com/mp/a82420.html 怎么去描述网络性能的好坏? 你如果说这个网络很好,那里的网络有点差!这无异于看这风景美如画,本想吟诗赠天下,怎奈自己没文化,只能卧槽浪好大。 我们得用专业的术语去描述它…...

MySQL高阶查询语句
目录 一、常用查询 1、按关键字排序 1.1 升序排序 1.2 降序排序 1.3 结合where进项条件过滤再排序 1.4 多条件排序 2、区间判断及查询不重复记录 2.1 and/or(且/或) 2.2 嵌套 /多条件 2.3 distinct 查询不重复记录 3、对结果进行分组 4、限…...

未来科技城携手加速科技 共建集成电路测试公共服务平台!
8月26日,2023未来产业发展大会在杭州未来科技城国际会议中心开幕!会上,发布了未来科技城培育发展未来产业行动计划,启动了未来产业发展共同体,进行了未来产业公共服务平台签约仪式。未来科技城与加速科技签约共建集成电…...

渗透测试漏洞原理之---【失效的访问控制】
文章目录 1、失效的访问控制1.1、OWASP Top 101.1.1、A5:2017-Broken Access Control1.1.2、A01:2021 – Broken Access Control 1.2、失效的访问控制类别1.2.1、水平越权1.2.2、垂直越权 1.3、攻防案例1.3.1、Pikachu靶场 Over Permision1.3.2、DVWA越权利用失效的访问控制漏洞…...

opencv的使用(Ubuntu linux环境,AS jni,AS java)
最近要完成一个功能,就是把四个视频合成左右上下分布的一个视频。尝试很多方法,最终使用opencv来实现该功能。(通过opencv实现的视频好像没有声音。)研究的步骤,首先在Ubuntu环境测试,该功能是否实现。然后再将生成的库文件放到AS中,使用jni的方法调用,或者将源码放到A…...
ChatGPT(对话AI)汇总
ChatGPT的全称为”Conversational Generative Pre-trained Transformer”,是一个基于预训练的自然语言处理模型。 1.商量SenseChat(商汤) SenseChat (sensetime.com) 2.文心一言(百度) 文心一言 (baidu.com) 3.百…...

【Docker】用Dockerfile制作个人的镜像文件
作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖…...
前端面试基础面试题——4
1.谈谈你对 ES6 的理解 2.说说你对 promise 的了解 3.解构赋值及其原理 4.Vue常用的修饰符及使用的场景 5.vue 中 key 值的作用 6.什么是 vue 的计算属性? 7.watch的作用是什么 8.计算属性的缓存和方法调用的区别 9.响应式系统的基本原理 10.vue-loader …...

【08期】ArrayList常见面试题
简介 ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高。 线程安全性 对ArrayList的操作…...

Android studio之GridView使用
目录 效果图:代码: 效果图: 代码: UserGridviewAdapter package com.example.gridviewpro.Adapter;import android.content.Contex…...
Ubuntu系统环境搭建(七)——Ubuntu安装MySQL8.0
ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(七)——Ubuntu安装MySQL8.0 文章目录 Ubuntu系统环境搭建(七)——Ubuntu安装MySQL8.01、安装1.1、下载1.2、解压安装 2、配置工作2.1、基本设置2.1.1、文件夹重命名…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...