软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法

这篇具有很好参考价值的文章主要介绍了软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


白盒设计方法分为静态和动态。

1 静态

静态的白盒测试方法有桌面检查、代码审查、代码走查和代码扫描工具。

2 动态

动态的白盒测试方法有逻辑覆盖法和基本路径测试法。

2.1 逻辑覆盖

逻辑覆盖法有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。

例1

int a=0;
public class E01(int x,int y,int m){
	if(x>&&y>0){
	 	a=x+y;//语句块1
	}
	else{
		a=x-y;//语句块2
	}
	if(m<0){
		a=m;//语句块3
	}
	return a;//语句块4
}

将上述程序画出流程图,如下:

分别以语句覆盖、判定覆盖、条件覆盖、基本路径覆盖设计测试用例,完整填写测试用,测试,单元测试,功能测试,模块测试,测试覆盖率

2.1.1 语句覆盖

语句覆盖,就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。度量被测代码中每个可执行语句是否被执行到了。
语句覆盖标准最弱,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。
语句覆盖率=可执行的语句总数/被评价到的语句数量 x 100%

将例1进行语句覆盖,写出测试用例如下:

数据 语句
x=1,y=1,m=2 1,4
x=-1,y=-1,m=-2 2,3,4

若将语句块1改为if(x>0||y>0),语句覆盖还是覆盖成功,不符合测试需求。因为语句覆盖不能准确的判断运算中的逻辑关系错误。(语句覆盖的缺点)

2.1.2 判定覆盖

定义:判定覆盖使设计的测试用例保证程序中每个判断的每个取值分支(ture or false)至少经历一次。
【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样分支(判定)覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
【缺点】:往往大部分的分支(判定)语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

将例1进行判定覆盖,写出测试用例如下:
P1为“x>0&&y>0”判定,P2为“m<0”判定

P1 P2 用例
T F x=1,y=1,m=1
F T x=-1,y=-1,m=1
F F x=-1,y=-1,m=-1
T T x=1,y=1,m=-1

只要满足了判定覆盖标准就一定满足语句覆盖标准。
判定覆盖会忽略条件中取或(or)的情况。
若将语句块1改为if(x>0||y>0),判定覆盖还是覆盖成功,不符合测试需求。

2.1.3 条件覆盖

定义:设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。
回头看例1的流程图,判定条件定义如下:
x>0&&y>0判定记为:P1
m<0判定记为:P2
x>0记为:C1
y>0记为:C2
m<0记为:C3

测试用例设计如下:

C1 C2 C3 P1 P2 用例 路径
T F T F T x=1,y=-1,m=-1 acd
F T F F F x=-1,y=1,m=-1 ace

条件覆盖比判定覆盖,增加了对判定中所有条件的测试。
但条件覆盖并不能保证判定覆盖。例如:P1为真,没有覆盖。

2.1.4 判定条件覆盖

定义:设计测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值(真假)也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。

判定条件覆盖率=每个判断本身的判定结果(真假)至少满足一次/判定结果的总数+条件结果的总数

例1代码中有2个判定,条件3个。所以,判定结果为2* 2(true,false)=4个,条件结果3*2(true,false)=6个。
设计测试用例执行3个判定结果,5个条件结果,判定条件覆盖率为:(3+5)/(4+6)=80%

将例1进行判定条件覆盖,写出测试用例如下:

C1 C2 C3 P1 P2 用例 路径
T T F T F x=1,y=1,m=1 abe
F F T F T x=-1,y=-1,m=-1 acd

满足判定条件覆盖标准,一定能够满足条件覆盖、判定覆盖和语句覆盖。
判定条件覆盖会忽略条件中取或(or)的情况。

2.1.5 条件组合覆盖

定义
判定中条件的各种组合都至少被执行一次。
特点
(1)满足条件组合覆盖的用例一定满足语句覆盖、条件覆盖、判定覆盖和判定覆盖。
(2)条件组合覆盖没有考虑各判定结果(真或假)组合情况,不满足路径覆盖
(3)条件组合数量大,设计测试用例的时间花费较多。

例1使用条件组合覆盖,测试用例设计如下:

C1 C2 C3 P1 P2 用例 路径
T T T T T x=1,y=1,m=-1 abd
T F T F T x=1,y=-1,m=-1 acd
F T T F T x=-1,y=1,m=-1 acd
F F T F T x=-1,y=-1,m=-1 acd
T T F T F x=1,y=1,m=1 abe
T F F F F x=1, y=-1,m=1 ace
F T F F F x=-1,y=1,m=1 ace
F F F F F x=-1,y=-1,m=1 ace
2.1.6 路径覆盖

定义
使程序的每条可能路径都至少执行一次。
特点
路径覆盖可以对程序进行彻底的测试,比前面五种覆盖面都广。

C1 C2 C3 P1 P2 用例 路径
T T T T T x=1,y=1,m=-1 abd
T T F T F x=1,y=1,m=1 abe
T F T F T x=1,y=-1,m=-1 acd
F F F F F x=-1,y=-1,m=1 ace

2.2 基本路径测试法(重点)

定义
在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
步骤
第一步,根据代码画出程序控制流图;
第二步,计算程序的环路复杂度;
第三步,导出可执行路径;
第四步,设计测试用例。

void Sort(int a,int b){
	int x=0;
	int y=0;
	while(a-- >0){ //将此判断记为P1
		if(0==b) //将此判断记为P2
			x=y+2;break; //将此语句记为s1
		else
			if(1==b) //将此判断记为P3
				x=y+10; //将此语句记为s2
			else
				x=y+20; //将此语句记为s3
	}
}

第一步,控制流图,如下图:
分别以语句覆盖、判定覆盖、条件覆盖、基本路径覆盖设计测试用例,完整填写测试用,测试,单元测试,功能测试,模块测试,测试覆盖率
第二步,计算程序环路复杂度
方法有三种:
流图中区域的数量对应于环型的复杂性。

分别以语句覆盖、判定覆盖、条件覆盖、基本路径覆盖设计测试用例,完整填写测试用,测试,单元测试,功能测试,模块测试,测试覆盖率

给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中节点的数量。技巧:边数——数箭头,结点——数判断框和语句
边数10,结点8,所以V(G)=10-8+2。

给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是上图中判定节点的数量。V(G)=3+1

用环路复杂度验证测试用例是否覆盖全了。

第三步,导出可执行路径
回头看例子的程序流程图,此例子可导出路径为:
路径1:P1-退出程序
路径2:P1-P2-S1-退出程序
路径3:P1-P2-P3-S2-退出P3-P1-退出程序
路径4:P1-P2-P3-S3-退出P3-P1-退出程序

第四步,设计测试用例

测试数据 覆盖路径
a=0 路径1
a=1,b=0 路径2
a=1,b=1 路径3
a=1,b=2 路径4

小结

白盒测试主要应用于单元测试阶段。白盒设计用例一般使用基本路径测试,重点模块使用多个覆盖率标准。文章来源地址https://www.toymoban.com/news/detail-787772.html

到了这里,关于软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件测试学习笔记2】用例设计方法

    说明:在所有测试数据中,具有某种共同特征的数据集合进行划分 分类:有效等价类:满足需求的数据集合            无效等价类:不满足需求的数据集合 步骤:明确需求            划分有效和无效的数据集合            提取数据设计  用例 解决穷举问题 选取正好等

    2024年01月16日
    浏览(56)
  • 软件测试之测试用例设计方法—等价类划分法

    掌握常用测试用例设计方法,再结合测试用例的要素能给快速的实现测试用例的设计和编写.但是由于软件系统大小的不同我们不可能把所有的单个或组合的情况都进行测试,所以我们测试时应该根据不同的场景设计不同的测试用例,尽可能的覆盖到全部需要测试的情况. 常用的测

    2024年02月03日
    浏览(41)
  • 常见的6种软件测试用例设计方法

    常见的软件测试用例设计方法,个人认为主要是下面这6种: 流程图法(也叫场景法) 等价类划分法 边界值分析 判定表 正交法 错误推测法 这6种常见方法中,我分别按照定义、应用场景、使用步骤、案例讲解这4个部分进行讲解。 所以本文行文结构如下 每种用例方法定义、

    2024年01月24日
    浏览(50)
  • 如何避免软件bug?优化你的测试流程和设计用例方法就对啦!

    目录 引言 一、测试流程 二、测试用例设计方法 等价类 边界值 场景设计法 判定表 错误推测法 结语 对于大多数软件开发者和测试人员而言,避免出现bug是一项非常重要的任务。但是,在实际的开发过程中,我们经常容易忽略一些细节或者流程上的问题,导致测试的结果不尽

    2024年02月05日
    浏览(52)
  • 软件测试之 测试用例 如何设计

    在软件开发过程中,测试是一个至关重要的环节,它有助于确保软件的质量和稳定性。而测试用例设计则是测试过程中的一个关键步骤,它帮助测试团队确定如何测试软件以发现潜在的问题和缺陷。本文将介绍测试用例设计的基本概念和步骤,以及一些最佳实践。 测试用例是

    2024年02月08日
    浏览(60)
  • 【软件测试】学习笔记-设计一个“好的”测试用例

    本篇文章重点探讨如何才能设计出一个“好的”测试用例。 什么才是“好的”测试用例,这个“好”又应该体现在哪些方面。这是一个看似简单实则难以回答的问题,即使深入思考后,也很难有非常标准的答案。 通常,你的第一反应很可能会是“发现了软件缺陷的测试用例

    2024年01月20日
    浏览(50)
  • 汽车软件测试专栏—汽车测试用例设计(第三期)

    一、测试用例的设计概述 测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求(百度百科)。测试用例是测试工程师关键的工作产物,也最能够反映测试工程师的测试能力。软件的测试目

    2024年02月03日
    浏览(47)
  • 软件测试用例经典方法 | 单元测试法案例

    单元测试又称模块测试,是对软件设计的最小单元的功能、性能、接口和设计约束等的正确性进行检验,检查程序在语法、格式和逻辑上的错误,并验证程序是否符合规范,以发现单元内部可能存在的各种缺陷。 单元测试的对象是软件设计的最小单位——模块、函数或者类。

    2024年02月10日
    浏览(41)
  • 【软件测试】边界值分析法测试用例设计实例

    原题链接:洛谷 P2602 [ZJOI2010] 数字计数 输入两个正整数a,b,求在 [ a , b ] [a,b] [ a , b ] 中的所有整数中,每个数码(0~9)各出现了多少次。 输入格式: 输入两个正整数a, b确定区间

    2023年04月09日
    浏览(43)
  • 手机软件系统测试用例设计大全

    一、 等价类分析法 二、 边界值分析 三、 错误猜测法 四、 判定表法 五、 流程分析方法 六、 正交试验设计法 七、 状态迁移法 等价类分析法 等价类划分方法针对手机状态大致可以归几个大类: 按键类(等价法):有效输入和无效输入(有效输入指UM和菜单指示;无效输入

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包