软件测试(黑盒测试、白盒测试、灰盒测试)
- 软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种
一、黑盒测试
- 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑,基于代码输入有哪些应该输出什么进行测试的方法。
- 其方法有:基于直觉和经验的方法(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、文件夹重命名…...

Nginx详解 三:高级配置
文章目录 1. 网页的状态页2. Nginx第三方模块2.1 echo模块 3. 变量3.1 内置变量3.1.1 示例 3.2 自定义变量3.2.1 自定义访问日志3.2.2 自定义json 格式日志 3.4 Nginx压缩功能 4. HTTPS4.1 Nginx的HTTPS工作原理4.2 启用功能模块的配置过程 5、自定义图标 1. 网页的状态页 基于…...

mysql 表备份 遇到的问题 【全网最全】
目录 省流: 正文: 1、报错 2、原因 3、解决方法 方法一:关闭 ENFORCE_GTID_CONSISTENCY (不推荐): 方法二(推荐): 4、开启关闭GTID 省流: 不推荐如…...

11.添加侧边栏,并导入数据
修改CommonAside的代码: <template><div><el-menu default-active"1-4-1" class"el-menu-vertical-demo" open"handleOpen" close"handleClose":collapse"isCollapse"><!--<el-menu-it…...

ThinkPHP 通用的API格式封装
ThinkPHP 通用的API格式封装 1.创建status.php 用于设置通用的状态码返回枚举类2.将API返回格式统一封装3.重写BaseController中的__call方法4.在控制器下面新建Error控制器,然后添加__call方法 1.创建status.php 用于设置通用的状态码返回枚举类 <?phpreturn[…...

自己动手写数据库:实现一个小型 SQL 解释器(下)
本节我们完成 SQL 解释器的最后一部分,它涉及到数据的删除和更改,首先我们看删除语句的解析。我们先看 delete 对应的语法: Delete -> DELETE FROM ID (where Predicate)?从语法规则可以看出,delete 语句必须以关键字 DELETE…...

2023年信息安全管理与评估任务书模块一网络平台搭建与设备安全防护
全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块一 网络平台搭建与设备安全防护 比赛时间 本阶段比赛时长为180分钟。 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 网络平台搭建与设备安全防护 任务1 网络平台搭建 9:00- 12:00 …...

JS -RSA 明文加密--用户密码加密
1 配置文件引入 加密包 package.json "jsencrypt": "^3.0.0-rc.1",2 加密公钥配置 import { JSEncrypt } from jsencrypt import request from "/utils/request";const RSA_PUBLIC_KEY "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJVol0cJ…...

clickhouse中replacingMergeTree
ReplacingMergeTree是在MergeTree上添加了去重的功能,但是这个功能不可控,合并是一个后台的操作,除非手动触发,不然无法控制,并且它会删除具有相同(区内)主键的重复项。 特点: 1,去重时机不定&a…...

pdf怎么转换成word?
随着数字化时代的到来,PDF(Portable Document Format)已成为最受欢迎的文档格式之一,因其在各种设备上的可视性和稳定性而备受推崇。然而在某些情况下,将PDF转换为Word文档可能是必要的,这使得编辑、修改和重新格式化文本变得更加…...

汇编攻城记-Cortex-M3指令集
类型 指令 全称 功能 内存访问 LDR Load register 加载字到寄存器 LDRB 加载字节到寄存器 LDRH 加载半字到寄存器 LDRSH 加载半字到寄存器,再带符号扩展到32位 LDRD 从连续的地址空间加载双字(64位整数)到…...