小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

白盒测试与黑盒测试

软件测试,测试用例 额外说明

收录于:15天前

白盒测试技术

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

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

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

覆盖率 = 至少执行过一次的测试项目数 测试项目总数 覆盖率 =\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=5 j=12k=19

如果满足两个分支并且其中之一可以被执行,

  • 确定覆盖的测试用例

根据这个原则,两个分支必须至少有一次为真或为假。例如,取第一个为 true,第二个为 false,x=4,y=5,z=5。

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

对于每个分支,判断一次 true 和 false 就足够了。

  • 条件覆盖测试用例

根据条件覆盖原理,条件的每个可能值都被执行一次。即:(分支一为真,分支二为假;分支一为假,分支二为真;分支一为真,分支二为真;分支一为假,分支二为假)。只需相应地设计测试用例即可。

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

基本路径测试以程序控制为基础,分析了控制循环的复杂性和各处的基本可执行路径。包括四个步骤和一个工具方法:

  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+2VG=e-n+2

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

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

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

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

白盒测试的流程

白盒测试的过程包括接口对象测试和业务对象测试。

在这里插入图片描述

向下延伸

在这里插入图片描述

向上延伸

黑河测试技术

黑盒测试:被测软件被视为黑盒。主要是根据功能需求测试用例进行测试,重点关注软件的功能需求,检查程序是否正常。黑盒测试完全基于用户的观点。

黑盒测试可以检测以下类型的错误:

  1. 功能不正确或缺失;
  2. 接口错误;
  3. 数据结构或外部数据库访问错误;
  4. 性能错误。
  5. 初始化和终止错误。

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

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

等价类划分原则:

  1. 按区间划分;
  2. 按价值划分;
  3. 除以数值集;
  4. 按约束或规范划分。

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

测试用例 A C d
测试1 5 5 5 等边三角形
测试2 2 2 3 等腰三角形
测试3 3 4 5 一般三角形
测试4 4 1 2 非三角形

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

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

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

测试用例 A C d
测试1 1 2 4 非三角形
测试2 3 4 5 一般三角形
测试3 55 80 20 非三角形
测试4 100 100 20 等腰三角形

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

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

  1. 如果条件限制了值,则应将边界内和刚好超出值范围的值作为测试用例。
  2. 如果值的数量有限,测试用例应该略大于最大值、最大值、略小于最大值、中等、略大于最小值、最小值、略小于最小值。
  3. 如果程序规范指定输入和输出字段是有序集,则应注意选择有序集的第一个和最后一个元素作为测试用例。

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

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

  1. 确定软件规范的原因和影响;
  2. 确定因果逻辑关系;
  3. 确定因果图中的各个约束;
  4. 将因果图转换为决策表;
  5. 根据决策表设计测试用例。

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

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

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

. . .

相关推荐

额外说明

spring中使用main方法进行调试

先交代一下具体情况: 1、项目用的SSH 2、使用main方法进行测试的action有注入execSQL、Table5DAO、Table6DAO、Table7DAO、Table8DAO五个bean,第一个bean又注入了其他的bean,后面四个是单独的。

额外说明

pycharm 的虚拟环境【陷阱】,你中招了吗?

最近有小伙伴遇到了明明安装了 python 第三方库,但是在 pycharm 当中却导入不成功的问题。。 ​ 一直以来,也有不少初学 python 的小伙伴,一不小心就跳进了虚拟环境和系统环境的【陷阱】中。。 本文就基于此问题,来说说在 pycharm

额外说明

【100个 Unity实用技能】 ☀️ | 将Dictionary字典中的数据序列化 到Unity Inspector监视器面板

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方

额外说明

Python爬虫之Scrapy框架系列(18)——深入剖析中间件及实战使用

目录: 1.下载中间件: (1)终端获取下载中间件状态信息的命令: (2)下载中间件的API: (3)中间件的项目应用:通过添加中间件设置UA代理及IP代理 ①在middlewares.py中间件文件中添加UA: ②在settings.py配置文件中打开

额外说明

【Unity3D数据集合】(五)链表LinkedList数据集合学习

推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在日常开发中,常常会用到

额外说明

C语言:#define 的各类用法

需求: 用预处理指令 #define 声明以下要求: a.表明1年中有多少秒(忽略闰年问题) b.写一个标准宏MIN,输入两个参数返回一个最小值 c.写一个标准宏MAX,输入两个参数返回一个最大值 d.已知数组table,用宏求数组的元素个数 代码实现:

额外说明

C++ STL 标准模板库介绍与入门

目录 1、概述 1.1、C++ 标准库 1.2、Boost库 2、STL 版本 2.1、HP 原始版本 2.2、P. J. 实现版本

额外说明

遗传算法实践详解(deap框架初体验)

遗传算法实践详解(deap框架初体验) OneMax问题介绍 遗传算法实践 遗传算法要素配置 遗传算法解的进化 算法运行 OneMax问题介绍 OneMax问题是一个简单的优化任务,通常作为遗传算法Hello World。 OneMax任务是查找给定长度

额外说明

MFCOLEUI.DLL文件丢失如何解决?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个MFCOLEUI.DLL文件进行安装(前提是找到适合的版本),

ads via 小工具