软件测试小白必背笔记(四)白盒测试

今天继续给大家分享软件测试入门笔记第四弹-白盒测试,喜欢的朋友记得点个关注支持一下

1 白盒测试

白盒测试是对软件的过程性细节做细致的检查,把测试对象看作是一个打开的盒子,允许测试人员利用程序内部的逻辑结构以及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。

白盒测试只测试软件产品的内部结构和处理过程,而不是测试软件产品的功能,可以分为静态和动态两种:

静态白盒测试就是在不执行测试的情况下有条理仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程

动态白盒测试也叫结构化测试,通过查看并使用代码的内部结构,设计和执行测试

白盒测试的常见方法包括:

1. 逻辑覆盖法

2. 路径分析

3. 控制结构测试

2 逻辑覆盖法

逻辑覆盖法又叫控制流覆盖,是按照程序内部逻辑结构设计测试用例的测试方法,根据程序中的判定和条件控制流覆盖准则来定量度量测试进行程度,按照覆盖标准的不同,可以分为:

1. 语句覆盖

2. 判定覆盖

3. 条件覆盖

4. 条件判定覆盖

5. 修正条件判定覆盖

6. 条件组合覆盖

7. 路径覆盖

2.1 语句覆盖

语句覆盖又叫线覆盖面或者段覆盖面,含义是选择足够数目的测试数据,使被测试程序中每条语句至少执行一次。语句覆盖可以直接应用于目标代码,不需要处理源代码,但是由于对一些控制结构不敏感(比如同样的测试用例,语句中的逻辑运算符从and改为or也同样通过),逻辑覆盖率低,因此往往不能发现判断中逻辑运算符出现的错误。

2.2 判定覆盖

又叫分支覆盖或所有边覆盖,用于测试控制结构中布尔表达式分别为真和假,其中布尔表达式被认为是一个整体,不考虑内部是否包含了“逻辑与”或者“逻辑或”等运算符。判定覆盖的基本思想是设计的测试用例是的程序中每个判定至少分别取“真”分支和取“假”分支经历一次,即判断真假值均被满足。

判定覆盖比语句覆盖提供了更强的测试能力,但是,大部分的判定语句是由多个逻辑条件组合而成的,仅仅判断最终的逻辑运算结果并不能真正覆盖所有的测试路径,这是判定覆盖的一个缺点。

2.3 条件覆盖

条件覆盖是设计测试用例,使得每个判断中每个条件的可能取值至少满足一次。

条件覆盖比判定覆盖增加了对符合判定情况的测试,增加了测试路径,但是条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

2.4 条件/判定覆盖

条件/判定覆盖是综合了条件覆盖与判定覆盖的一种方法,含义是通过设计足够的测试用例,使得判断条件中所有条件可能至少执行一次取值,同时所有判断的可能结果至少执行一次。

表面上,条件/判定覆盖能同时满足判定覆盖以及条件覆盖两种标准,但实际上并没有完全覆盖所有的“真”和“假”取值的条件组合情况,这种情况下需要将判定语句中的复合条件表达式进行分解,形成由多个基本判定嵌套组成的流程图,以有效检查所有条件是否正确。

2.5 修正条件/判定覆盖

修正条件/判定覆盖(缩写为MC/DC)可以解释为:

每个条件的所有可能结果至少出现一次

每个判定本身的所有可能结果也至少出现一次

每个入口点与出口点至少要唤醒一次

每个条件都显示能单独影响判定结果

MC/DC具有如下优点:

继承了多重条件覆盖的优点

线性地增加了测试用例的数量

对操作数以及非等式条件变化反应敏感

具有更高的目标码覆盖率

2.6 条件组合覆盖

基本思想是,设计测试用例使得:

每个条件中的所有可能至少出现一次

每个判断本身的判定结果也至少出现一次

条件组合覆盖是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确,它不但可以覆盖所有条件的可能取值组合,还可以覆盖所有判断的可取分支,但仍有可能的路径会遗漏掉,测试还不完全。

2.7 路径覆盖

路径覆盖的基本思想是,选择足够的测试用例,使得程序中所有可能的路径都至少被执行一次。一条路径是从函数的入口到出口分支的一个唯一序列。

路径覆盖的覆盖率比前面几种逻辑覆盖要大,但是随着代码增加,测试工作将呈指数级增长,比如一个函数包括10个判断语句,那么就需要测试2^10 = 1024个路径。

2.8 总结

语句覆盖的效果最弱,路径覆盖的效果最好,如下图所示:


优缺点集合:


3 路径分析

路径分析测试法是在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出独立路径集合,设计测试用例的方法。程序的所有路径作为一个集合,在这些路径集合中必然存在一个最短路径,这个最小的路径称为基路径或独立路径。

路径分析与测试法主要步骤如下:

绘制控制流图

计算圈复杂性,圈复杂性用于计算程序的基本独立路径数目,确保所有语句至少执行一次的测试数量的上界

确定独立路径的集合,独立路径是指至少引入程序的一个新处理语句集合或一个新条件的路径,即独立路径必须包含一条在定义之前不曾使用的边

测试用例生成,设计测试用例的数据输入和预期结果,确保基本路径集中每条路径上的执行

4 控制结构测试

控制结构测试可以分为:

条件测试:检查程序模块中所包含逻辑条件的测试用例设计方法

循环测试:检测代码中的简单循环、嵌套循环以及串接循环,测试用例包括零次循环、一次循环、两次循环、m次循环、最大循环次数等等

Z路径覆盖:是路径覆盖的一个变体,是一种在大量判断和多个循环组合的情况下减少循环测试次数的方法,Z路径覆盖不考虑循环的形式和复杂度如何,也不考虑实际执行循环体次数是多少,只考虑通过循环体零次和一次这两种情况

我的学习交流群:573261842 ,点击进群,群里有技术大牛一起交流分享~


原文链接:https://blog.csdn.net/m0_59893917/article/details/118545579

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342