白盒测试基础

白盒测试

主要应用于单元测试阶段

白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。

在这里插入图片描述
目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒测试特点

优点

代码覆盖率高

缺点

覆盖所有代码路径难度大
业务功能覆盖不全
测试开销大

白盒设计方法

静态方法

桌面检查

这是一种传统的检查方法。由程序员检查自己编写的程序。程序员在程序通过编译之后,进行单元测试之前,对源程序代码进行分析、检验,并补充相关的文档,目的是发现程序中的错误。检查项目有:

1)检查变量的交叉引用表:重点是检查未说明的变量和违反了类型规定的变量,还要对照源程序逐个检查变量的引用、变量的使用序列,临时变量在某条路经上的重写情况;局部变量、全局变量与特权变量的使用。

2)检查标号的交叉引用表:验证所有标号的正确性:检查所有标号的命名是否正确;转型指定位置的标号是否正确。

3)检查子程序、宏、函数:验证每次调用与所调用位置是否正确;确认每次所调用的子程序、宏、函数是否存在;检验调用序列中调用方式与参数顺序、个数、类型上的一致性。

4)等价性检查:检查全部等价变量的类型的一致性,解释所包含的类型差异。

5)常量检查:确认每个常量的取值和数制、数据类型;检查常量每次引用同它的取值、数制和类型的一致性。

6)标准检查:用标准检查程序或手下检查程序中违反标准的问题。

7)风格检查:检查在程序设讣风格方面发现的问题。

8)比较控制流:比较由程序员设计的控制流图和出实际程序生成的控制流图,寻找和解释每个差异,修改文档和纠正错误。

9)选择、激活路径、不程序员霞计的控制流图上选择路径,再到实际的控制流图上激活这条路。如果选择的路径在实际控制流图上不能激活,则源程序可能有错。用这种方法激活的路径集合应保证源程序模块的每行代码都得到检查,即桌前检查应完成至少是语句覆盖。

10)对照程序的理格说听,洋细阅读代码L程序员对照程序的期格说明书,规定的算法和程序设计语言的语法规则,仔细阅读源代码,逐字逐句进行分析和思考,比较实际的代码和期望的代码,从它们的差异中发现程序的问题和错误。

11)补充文档:桌前检查的文档是一种过渡性的文档,不是公开的正式文档。通过编写文档,也是对程序的一种下意识的检查和测试,可以帮助程序员发现和抓住更多的错误。管理部门也可以通过审查桌前检查文档,了解模块的质量、完全性、测试方法和程序员的能力。这种文档的主要内容有:

建立小型的数据词典,描述程序中出现的每一种数据结构、变量、和寄存器的用法,建立 相应的各种交叉引用表格。

描述主要的路经和异常的路径,为覆盖准备条件。

当测试采用逻辑驱动时,即利用判定表或布尔代数方法来确定逻辑覆盖时,应讨论逻辑情况。此外,在状态测试情形,即考虑模块中状态的组合和状态的迁移时对状态控制变量进行设计,以及利用语法制导的测试,也都要讨论逻辑情况。要是文档编制适应测试技术。

描述全部已知的限制和假定 。

描述全部的接口和对接口的假定。 这种桌前检查,由于程序员熟悉自己的程序及其程序设计风格,可以节省很多的检查时间,但应避免主观片面性。

代码审查

代码评审是由若干程序员和测试员组成一个评审小组,通过阅读、讨论和争议,对程序进行静态分析的过程。

代码评审分两步:

第一步,小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为评审的依据。小红成员在充分阅读这些材料之后,进入审查的第二步:召开程序审查会。在会上,首先由程序员逐句解释种序的逻辑。在此过程中,程序员或其他小组成员可以提出问题,展开讨论,审查错误是否存在。实践表明,程序员在讲够的过程中能发现许多原来自己没有发现的错误,而讨论和争议则促进了问题的暴露。例如对某个局部性小问题修改方法的讨论,可能发现与之牵连的其他问题,甚至涉及到模块的功能说明、模块间接口和系统总体结构的大问题,从而导致对需求的重定义、重设计和重验证,进而大大改善了软件质量。

在会前,应当给评审小凯每个成员准备一份常见错误的清单,把以往所有可能发生的常见错误罗列出来,供与会者对照检查,以提高评审的实效。

这个常见错误清单也叫做检查表,它把程序中可能发生的各种错误进行分类,对每一类列举出尽可能多的典型错误,然后把它们制成表格,供在评市时使用。这种检查表类似于单元测试中给出的检查表。在代码评审之后,需要做以下几件事:

1)把发现的错误登记造表,并交给程序员;

2)若发现错误较多,或发现重大错误,则在改正之后,再次组织代码评审;

3)对错误登记表进行分析、归类、精炼,以提高审议效果;

代码走查

走查与代码评审基本相同,其过程分为两步。

第一步也把材料先发给走查小组每个成员,让他们认真研究程序,然后再开会。开会的程序与代码评审不同,不是简单地读程序和对照错误检查表进行检查,而是让与会者“充当"计算机。即首先由测试组成员为所测试程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论用。

人们借助于测试用例的媒介作用,对程序的逻辑和功能提出各种疑问,结合问题开展热烈的讨论和争议,能够发现更多的问题。

代码扫描工具

Veracode、DeepScan…

动态方法

逻辑覆盖法

逻辑覆盖法:是通过对程序逻辑结构的遍历实现程序的覆盖

覆盖率:是用来度量测试完整性的一个手段

在这里插入图片描述

语句覆盖

设计测试用例,使得程序中每条语句至少被执行一次

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

判定覆盖

判定覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判,断的“真”和"假"都至少被执行一次。即:程序中的每个分支至少执行一次。

在这里插入图片描述

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

条件覆盖

条件覆盖:设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值。

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

判定条件覆盖

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

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

条件组合覆盖

条件组合覆盖:设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。

在这里插入图片描述

在这里插入图片描述

路径覆盖

路径覆盖:设计测试用例,覆盖程序中所有可能的路径。

路径覆盖可以对程序进行彻底的测试,比前面五种覆盖面都广

在这里插入图片描述

在这里插入图片描述

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

基本路径测试法

基本路径测试法:在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例

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

总结

在这里插入图片描述

请添加图片描述
请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值