白盒测试与黑盒测试

news2024/12/22 15:00:21

白盒测试技术

白盒测试技术也称结构性测试,是一种设计测试用例的方法,一般用于分析程序的内部结构,使用该方法测试程序时测试者可以看到被测试程序,并分析其内部结构。

按照被测试测试时是否需要执行测试程序可以分为静态和动态测试,白盒测试也可以据此划分。最常用的时白盒静态测试方法。包括代码审查,结构设计检查程序的可靠性。由于测试时围绕测试用例进行的白盒测试也是一种优秀的测试用例设计的方法。

在测试中穷举法是不可能的这是测试的原则之一,因此在有限的集合内设计特殊且最优的测试用例才能才能最有效的完成测试工作。白盒测试使用覆盖率来度量测试的完整性。测试覆盖率四程序被一组测试用例执行的百分比。

覆 盖 率 = 至 少 被 执 行 一 次 的 被 测 试 项 数 被 测 试 项 总 数 覆盖率=\frac{至少被执行一次的被测试项数}{被测试项总数} =

逻辑覆盖法
逻辑覆盖是以程序内部的逻辑结构为基础的测试⽅法,属“⽩盒”测试。 这⼀⽅法是⼀系列测试过程的总称,这组测试过程逐渐 进⾏越来越完整的通路测试,要求测试⼈员对程序的逻辑结构有清楚的了解。 从覆盖源程序的语句的详尽程度分析,⼤致可以 分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

在这里插入图片描述

满足条件组合覆盖准则一定满足判定覆盖,条件覆盖和判定条件覆盖。该命题使充分不必要条件。

逻辑覆盖法的实例

对于程序:

void TestExample (int x,int y,int z)
{
	int k=0,j=0;
	if(x>3)&&(z<10)
	{
		k=x*y+1;
		j=2x+y;
	}
	if(x==4||y>5)
	{
		j=x*y+10;
	}
}

对于上述程序使用白盒测试设计测试用例。

  • 语句覆盖的测试用例

根据语句覆盖的原理,程序由两个分支,在这两个分支中至少有一个被执行。例如第一个被执行,取x=4,y=5,z=5。

输入预期输出
x=4,y=5,z=5j=12k=19

满足两个分支又有一个执行即可

  • 判定覆盖的测试用例

根据该原理两个分支的至少获得一次真一次假。例如取第一个为真,第二个为假,x=4,y=5,z=5。

输入输出
x=5,z=1,y=1k=6,j=11 (分支一为真,分支二为假)
x=2,y=6,z=1k=0,j=22 (分支一为假,分支二为真)

满足每个分支都取到一次真假即可。

  • 条件覆盖的测试用例

根据条件覆盖的原理,每个条件的可能取值都执行一次。也就是:(分支一为真,分支二为假;分支一为假,分支二为真;分支一为真,分支二为真;分支一为假,分支二为假)。据此设计测试用例即可。

基路径测试法
路径测试法是从程序入口开始,执行所经历的各个语句的完整过程。做到所有路径都覆盖是不可能的,如果某个程序的独立路径都被执行那么就可以认为每个语句都检查过了。

基路径测试是在程序控制的基础上,有过分析控制环路复杂性到处基本可执行路径。包括四个步骤和一个工具方法:

  1. 根据过程设计将结果画出程序控制流图;
  2. 计算程序的环路复杂度;
  3. 导出基本路径集确定程序的独立路径;
  4. 设计相应的测试用例。

案例:

void TestExample (int x,int y,int z)
{
	int k=0,j=0;
	if(x>3)&&(z<10)
	{
		k=x*y+1;
		j=2x+y;
	}
	if(x==4||y>5)
	{
		j=x*y+10;
	}
}

控制流图是描述程序控制流的一种有向图表示了程序控制流的结构。

在这里插入图片描述
上述代码的控制流图为if结构:

在这里插入图片描述

计算环路复杂度的公式为:

V ( G ) = e − n + 2 V(G)=e-n+2 V(G)=en+2

e是图中边的数目,n表示节点总数。

确定独立路径:1-2-4,1-3-5。

设计测试用例:根据确定的独立路径设计测试用例,确保基本路径都能执行。

其他设计测试用例的方法:循环语句测试,数据流测试等。

白盒测试的流程

白盒测试的流程包括界面对象测试和业务对象测试。

在这里插入图片描述

向下延展

在这里插入图片描述

向上延展

黑河测试技术

黑盒测试:将被测软件看作黑盒,主要根据功能需求测试用例进行测试,注重软件功能需求,检查程序goon给你是否正常,黑盒测试完全从用户观点出发。

黑盒测试能够发现一下几类错误:

  1. 功能不对或者遗漏;
  2. 界面错误;
  3. 数据结构或者外部数据库访问错误;
  4. 性能错误。
  5. 初始化和终止错误。

黑盒测试方法
在这里插入图片描述

等价类是指输入域互补相交的子集,所有等价类的并集便是整个输入域。等价划分法就是根据程序规格说明书对输入范围划分,把所有可能输入的数据,即程序输入域划分为若干互不相交的子集(等价类),然后从等价类中选取少量的具有代表性的数据作为测试用例,进行测试。

等价类划分原则:

  1. 按区间划分;
  2. 按数值划分;
  3. 按数值集合划分;
  4. 按限制条件或规格划分。

案例:
输入a,b,c三个整数作为三角形的三边,通过程序判断类型是:等边三角形,等腰三角形,一般三角形和非三角形。
分析:由于是三个整数,范围都在1-100,1一下和100以上都是无效等价类,1-100是有效等价类。
那么在有效等价类的范围类根据三角形特性设计测试用例:

测试用例abcd
test1555等边三角形
test2223等腰三角形
test3345一般三角形
test4412非三角形

边界值分析法用于列出单元功能,输入,状态及合法边界和非法边界值对数据进行测试。对于一个变量的程序边界值分析会产生4n+1个测试用例。

边界值分析法是以边界情况的处理作为主要目标专门设计测试用例的方法。例如在上述三角形问题上满足两边之和大于第三边,两边只差小于第三边才能构成三角形。若>写为>=就无法构成了。

在边界值分析测试中利用输入变量的最小值,稍大于最小值,域内任意值,稍小于最大值,最大值的数据进行测试。于是就得到了边界值分析测试的测试用例

测试用例abcd
test1124非三角形
test2345一般三角形
test3558020非三角形
test410010020等腰三角形

健壮性边界值分析是边界值分析的一种扩展,除了考虑变量的最小值,稍大于最小值,域内任意值,稍小于最大值,最大值的数据外还要考虑一个略超过最大值和一个略小于最小值的数据。健壮性边界值分析将产生6n+1个测试用例。

在使用边界值分析法设计测试用例时还需要遵循以下原则:

  1. 条件对取值进行限制的,应以边界内部以及刚超出取值范围的值作为测试用例。
  2. 对取值个数限制了的应该以稍大于最大,最大,稍小于最大,中等,稍大于最小,最小,稍小于最小作为测试用例。
  3. 如果程序规格说明书指明输入输出域是一个有序集合,则应该注意选取有序集合的第一个和最后一个元素作为测试用例。

因果图法是一种适于描述对于多种条件的组合,相应产生多个动作的形式的方法,利用图解分析输入各种组合情况,从而设计测试用例的方法。因果图最终生成的是判定表,合适检查程序输入条件的各种组合情况。

因果图测试方法设计测试用例的步骤:

  1. 确定软件规格的原因和结果;
  2. 确定原因和结果之间的逻辑关系;
  3. 确定因果图中的各个约束;
  4. 把因果图转化为决策表;
  5. 根据决策表设计测试用例。

在这里插入图片描述
在这里插入图片描述

参考https://zhuanlan.zhihu.com/p/129342944

黑盒测试的流程:测试计划—>测试设计---->测试开发----->测试执行---->测试评估。

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

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

相关文章

RK3399平台开发系列讲解(中断篇)中断控制器驱动初始化

🚀返回专栏总目录 文章目录 一、设备树源文件1.1、gic控制器节点1.2、timer节点二、中断控制器匹配表三、中断控制器初始化3.1、函数of_irq_init3.2、函数gicv3_of_init3.3、函数gic_init_bases沉淀、分享、成长,让自己和他人都能有所收获!😄 一、设备树源文件 ARM64架构…

web前端网页制作课作业:甜甜圈蛋糕店(HTML+CSS+JavaScript)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

用DIV+CSS技术设计的水果介绍网站(web前端网页制作课作业)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

NodeJs实战-Express构建照片存储网站(2)-上传、展示文件

Express构建照片存储网站2-上传、展示文件静态资源显示图片photo页面展示文件夹下的图片上传文件增加上传页面的路由增加提交接口的路由网站效果图项目地址上一节使用的静态数据存储的图片的数据&#xff0c;本节增加如下功能 1–上传文件 2–展示文件 静态资源显示图片 app.…

企业微信自建应用手动授权,获取用户详细信息

开始开发 最后更新&#xff1a;2022/10/11 企业微信提供了OAuth的授权登录方式&#xff0c;可以让从企业微信终端打开的网页获取成员的身份信息&#xff0c;从而免去登录的环节。 企业应用中的URL链接&#xff08;包括自定义菜单或者消息中的链接&#xff09;&#xff0c;均可…

宇视高空抛物相机配置指导

宇视高空抛物相机配置指导 登录摄像机网页界面&#xff0c;进入[配置>智能监控>智能功能]页面启用<高空抛物>功能&#xff0c;并进入高空抛物配置界面&#xff1b; 添加/删除检测规则&#xff0c;根据实际高空抛物场景和规则下发要求绘制检测区域&#xff1b; (…

必看!!!客户端requests与服务端request收发请求

当使用代码进行接口访问的时候&#xff0c;请求的发送与请求的接受使用的参数应该怎么如何传输能够请求到正确的响应呢? 一、使用GET请求发送&#xff0c;客户端与服务端的参数传输与接受。 1、服务端&#xff0c;首先使用web框架写一个简单的接口&#xff0c;接收两个参数&…

FineReport常用配置和方法

目录 1、隐藏参数面板的小箭头&#xff1a; 1、隐藏参数面板的小箭头&#xff1a; 查看小箭头的class&#xff0c;css设置如下属性&#xff1a; 隐藏按钮&#xff1a; // 旧版 $(.parameter-container-collapseimg-up).hide(); // 新版 $(.report-main-parameter-container-…

浙大MBA考研经验分享:名校梦不可负~

上大学的时候考研失败&#xff0c;对于没能进入浙大求学一直是我心里的遗憾&#xff01;但是毕业以来至今工作三年&#xff0c;职场上的经历让我意识到持续学习提升的重要性。一边工作一边备考&#xff0c;对于基础普通的我来说&#xff0c;一年备战能够以211分的成绩成功上岸浙…

Collection体系集合

一、Collection体系结构 Collection体系结构的根接口&#xff0c;代表一组对象&#xff0c;称为“集合”。 List接口的特点&#xff1a;有序、有下标、元素可重复。 Set 接口的特点&#xff1a;无序、无下标、元素不能重复。 二、Collection父接口 特点&#xff1a;代表一组…

分布式计算模型Mapreduce实践与原理剖析(一)

第一章 MapReduce核心理论 1.1 什么是MapReduce MapReduce 是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于 Hadoop 的数据应用” 的核心框架 。 MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并行运…

[短的文章] Spring Boot 日志创建使用、日志级别、@Slf4j、日志持久化——Spring Boot 系列

前言&#xff1a; 想必日志大家伙在项目开发调试过程中常会使用&#xff0c;这篇文章我们来一起探讨一下 Spring Boot 项目中日志的定义与使用&#xff0c;主要针对以下几个方面重点叙述 日志级别 日志框架进行日志定义 日志持久化 1 日志简述 1.1 为什么使用日志 日志大家在…

机器学习-逻辑回归

机器学习-基础知识 机器学习-线性回归 机器学习-逻辑回归 机器学习-聚类算法 机器学习-决策树算法 机器学习-集成算法 机器学习-SVM算法 文章目录逻辑回归1. 线性逻辑回归1.1. 理论基础1.2. 逻辑回归模拟步骤1.2.1. 数据集1.2.2. 模拟逻辑回归类模块1.2.3. 测试模块1.2.4. 数据…

PN532开发指南(uart)

开发环境 STM32F103C8T6 STM32f103c8t6最小系统板&#xff08;typec接口&#xff09; STM32CUBEMX PN532模块 一、NFC简介 NFC(Near Field Communication)近场通信&#xff0c;是一种短距高频的无线电技术&#xff0c;在13.56MHz频率运行于20厘米距离内。其传输速度有106Kb…

懒人福利:只需一行代码,导入所有的 Python 库

前言 今天给大家介绍一个懒人 Python 库—— Pyforest 。 使用一行代码&#xff0c;就能导入所有的 Python 库(本地已经安装的)。 GitHub 地址 https://github.com/8080labs/pyforest &#xff08;文末送读者福利&#xff09; / 01 / 介绍 Python 因为有着成千上万个功能…

paper 阅读: An introduction to ROC analysis

发布于2005年&#xff0c;附论文链接如下&#xff1a; https://ccrma.stanford.edu/workshops/mir2009/references/ROCintro.pdf 之前一直都是从各种博客上了解ROC的&#xff0c;最近才看到这一篇paper。 写在前面 用 True&#xff08;T&#xff09;和 False&#xff08;F&…

BGP进阶:BGP 基础实验配置

实验拓扑 实验需求 R1、R2、R3属于AS123&#xff0c;R4属于AS 400&#xff1b;AS123内的R1、R2、R3运行OSPF&#xff0c;通告各自直连接口&#xff0c;注意OSPF域的工作范围&#xff1b;R3-R4之间建立eBGP邻居关系&#xff0c;R2暂时不运行BGP&#xff0c;R1-R3之间建立iBGP邻…

MCE | D-萤光素 Protocol 在手,生物发光检测无忧!

■ Q: D-萤光素的作用原理 D-萤光素 (D-Luciferin) 是萤火虫萤光素酶 (Firefly Luciferase) 的化学发光底物。在ATP 和萤光素酶存在下&#xff0c;萤光素能够被氧化发光 (图 1)。当萤光素过量时&#xff0c;发光亮度与萤光素酶浓度呈正相关。通过萤光素/萤光素酶生物发光体系&…

小程序容器技术加快推动国产操作系统“上车”

计算机是当前乃至未来的基础工具&#xff0c;而负责管理计算机硬件与软件资源、提供必须的人机交互机制的操作系统无疑是整个计算机的核心系统软件。 可以说&#xff0c;操作系统是当前一个国家提升综合实力过程中必须要攻克、掌握的核心技术之一。 国产操作系统多为以Linux为…

猫狗肠道菌群—“主子们”的健康新领域

随着生活水平提升&#xff0c;我国养宠人士逐年增多。数据显示&#xff0c;我国城镇养宠人士达到6844万多人&#xff0c;且仍在不断增长。 其中养猫人群数占比59.5%&#xff0c;养狗人群数占比51.7%&#xff0c;养水族类占比8.3%&#xff0c;养爬行类宠物的占比为5.8%&#xff…