软件测试(黑盒测试、白盒测试、灰盒测试)

news2024/9/25 7:16:24
  • 软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种

一、黑盒测试

  • 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑,基于代码输入有哪些应该输出什么进行测试的方法。
  • 其方法有:基于直觉和经验的方法(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.数据流覆盖—变量定义-引用

三、灰盒测试

四、其余测试方法

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

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

相关文章

b站手机缓存文件转MP4

b站缓存的文件 音频、视频、弹幕是分开的 这里我只用到了音频和视频所以只介绍这一部分 b站的缓存视频文件和路径结构如下 默认缓存路径 内部存储\Android\data\tv.danmaku.bilil\download\89720189 文件夹结构 文件夹 c_738583 这是单个视频的缓存文件夹 进入c_738583文件夹…

isEmpty 和 isBlank 的区别

干了3年java&#xff0c;代码中 isEmpty 和 isBlank 的区别 都不知道&#xff0c;一顿瞎用。也许你两个都不知道&#xff0c;也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外&#xff0c;并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们…

【黑马头条之项目部署_持续集成Jenkins】

本笔记内容为黑马头条项目的项目部署_持续集成部分 目录 一、内容介绍 1、什么是持续集成 2、持续集成的好处 3、今日内容 二、软件开发模式 1、软件开发生命周期 2、软件开发瀑布模型 3、软件的敏捷开发 三、Jenkins安装配置 1、Jenkins介绍 2、Jenkins环境搭建 …

XP-CLR分析学习笔记

XP-CLR分析笔记 生物信息学和遗传学是相互交织的两个学科&#xff0c;共同致力于解读生物体内复杂的基因信息。这些信息有助于理解物种的演化&#xff0c;疾病的起因&#xff0c;以及个体差异等方面。 XP-CLR&#xff08;Cross Population Composite Likelihood Ratio&#xff…

《Linux从练气到飞升》No.19 进程等待

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

【python爬虫】6.爬虫实操(带参数请求数据)

文章目录 前言项目&#xff1a;狂热粉丝分析过程什么是带参数请求数据如何带参数请求数据 代码实现被隐藏的歌曲清单什么是Request Headers如何添加Request Headers 复习 前言 先来复习一下上一关的主要知识吧&#xff0c;先热个身。 Network能够记录浏览器的所有请求。我们最…

钡铼技术BL120PN Profinet和Profibus DP转Modbus网关介绍

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; BL120PN是一款Profinet、Profibus D转Modbus网关。 BL120PN下行采集支持&#xff1a;Profinet、Profibus D。 BL120PN上行支持&#xff1a;Modbus RTU、Modbus TCP协议。 BL120PN采…

实现微信H5的方法!(非官方产品)

实现微信H5的方法&#xff01;&#xff08;非官方产品&#xff09; WAP支付也叫H5支付&#xff0c;均指的是手机页面支付&#xff0c; 微信称之为H5支付&#xff0c;支付宝则称为WAP支付。 那H5也叫WAP支付是可以应用手机页面支付和APP支付的&#xff0c; 不限制包名可跨平台调…

元素周期表-背诵元素周期表更简单

元素周期表是一款极其炫酷、简约的记忆和查看周期表元素的软件。 【软件特点】&#xff1a; ●有趣谐音速记&#xff1a;软 件内有按周期、化合价、元素符号分类使用谐音速记的小技巧。 ●3D元素周期表&#xff1a;用户可以选择按表面、球体、螺旋、网格来3D炫酷的展示元素周期…

【技术】视频云存储/安防监控视频/智能分析网关V3裸土未覆盖/苫盖算法详解

随着经济的发展和建筑工地的增多&#xff0c;对于土堆的裸露情况实时监测和管理变得尤为重要。为了解决这一问题&#xff0c;TSINGSEEE青犀AI智能分析网关V3的裸土未苫盖算法就能很好地解决。 AI算法模型可以实时识别路面/建筑工地中的土堆是否裸露&#xff0c;将工地、道路等…

煤矿监管电子封条算法

煤矿监管电子封条算法基于yolov5网络模型深度学习框架&#xff0c;先进技术的创新举措&#xff0c;煤矿监管电子封条算法通过在现场运料运人井口、回风井口、车辆出入口等关键位置进行人员进出、人数变化和设备开停等情况的识别和分析。YOLO检测速度非常快。标准版本的YOLO可以…

特斯拉新款Model3曝光:搭载HW3.5硬件,雷达已移除,今日上市?

根据最新的消息&#xff0c;特斯拉新款 Model 3 将有一些令人瞩目的变化和改进。首先&#xff0c;前脸的设计仍然采用封闭式造型&#xff0c;但新车的前保险杠进行了微调&#xff0c;并且换装了全新款式的大灯。 这些改变使新款 Model 3 在外观上与现款车型有了明显的差异&…

【数据结构回顾】

数据结构回顾 一、单链表二、单循环链表 一、单链表 #include <stdio.h> #include <stdlib.h>typedef struct Node {int data;Node *next; }Node;Node* initList() {Node *list (Node*)malloc(sizeof(Node));list->data 0;list->next NULL;return list; }…

基于pytorch LSTM 的股票预测

学习记录于《PyTorch深度学习项目实战100例》 https://weibaohang.blog.csdn.net/article/details/127365867?ydrefereraHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ3MjU2MTYyL2NhdGVnb3J5XzEyMDM2MTg5Lmh0bWw%2Fc3BtPTEwMDEuMjAxNC4zMDAxLjU0ODI%3D 1.tushare Tushare是一个免费、…

C++项目:网络版本在线五子棋对战

目录 1.项目介绍 2.开发环境 3.核心技术 4. 环境搭建 5.websocketpp 5.1原理解析 5.2报文格式 5.3websocketpp常用接口介绍 5.4websocket服务器 6.JsonCpp使用 6.1Json数据格式 6.2JsonCpp介绍 7.MySQL API 7.1MySQL API介绍 7.2MySQL API使用 7.3实现增删改查…

lnmp架构-mysql2

4.mysql 组复制集群 首先对所有的节点重新初始化 因为对节点的数据一致性要求非常高 主从复制的时候 slave只会复制master的binlog日志 就是二进制日志 不会复制relay_log 在server1上 根据实际情况修改主机名和网段 log_slave_updateON 意思就是 当slave的sql线程做完之后…

深度学习基础篇 第一章:卷积

dummy老弟这几天在复习啊我也跟着他重新复习一轮。 这次打算学的细一点&#xff0c;虽然对工作没什么帮助&#xff0c;但是理论知识也能更扎实吧&#xff01; 从0开始的深度学习大冒险。 参考教程&#xff1a; https://www.zhihu.com/question/22298352 https://zhuanlan.zhih…

k8s 启动和删除pod

k8s创建pod pod的启动流程 流程图 运维人员向kube-apiserver发出指令&#xff08;我想干什么&#xff0c;我期望事情是什么状态&#xff09; api响应命令,通过一系列认证授权,把pod数据存储到etcd,创建deployment资源并初始化。(期望状态&#xff09; controller通过list-wa…

C++信息学奥赛1184:明明的随机数

#include <bits/stdc.h> using namespace std; int main() {int n; // 数组长度cin >> n; // 输入数组长度int arr[n]; // 定义整数数组&#xff0c;用于存储输入的整数// 输入数组元素for (int i 0; i < n; i){cin >> arr[i];}int e 0; // 计数器&…

长胜证券:政策暖风不断 静待春暖花开

长胜证券指出&#xff0c;经济数据的逐步企稳上升&#xff0c;能够提振商场对经济复苏的决心&#xff0c;同时弱复苏布景下&#xff0c;政策的刺激力度也将为商场走强供给良好的土壤。暖风持续发布下&#xff0c;多方力量也在悄然间发生变化&#xff0c;重视权重、金融板块回暖…