《白盒测试技术》由会员分享,可在线阅读,更多相关《白盒测试技术(59页珍藏版)》请在金锄头文库上搜索。
1、南天培训教材系列 版权所有(C)南天信息,白盒测试技术,广州南天电脑系统有限公司 质量中心,南天培训教材系列 版权所有(C)南天信息,目录,南天培训教材系列 版权所有(C)南天信息,为什么要进行白盒测试,从清洗面包机讲起 现在假定这个面包机多年未用,内部都生锈了,现在要清洗它,类似于我们开发的软件,软件有Bug,那得通过测试来清理。 有两种洗法,一是拿水从上往下灌,这是系统测试的方法。另一种是拆开来洗,拆开机器后,拿抺布沾点清洁剂,把各零件的坑坑槽槽擦洗一遍,然后组装回来,再用水从上往下冲一遍,拆开来洗是白盒方法,组装回来用水冲是黑盒方式,相当于白盒测试之后再追加一次系统测试。 所以,软件的白
2、盒测试不可或缺,因为遗留Bug的影响很大,就像面包机没洗净留铁锈会致癌,还因为软件系统远比面包机复杂,不拆开来怎么能洗干净!,南天培训教材系列 版权所有(C)南天信息,第一章 白盒测试的基本概念,白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。白盒测试是被测代码可见的测试 。与黑盒测试的概念是相反的。,南天培训教材系列 版权所有(C)南天信息,第一章 白盒测试的基本概念,白盒测试的原则:1)保证模块中每一个独立的路径至少执行一次。2)保证所有判断的每一个分支至少执行一次。3)保证每一个循环
3、都在边界条件和一般条件下至少执行一次。4)验证所有内部数据结构的有效性。,南天培训教材系列 版权所有(C)南天信息,第一章 白盒测试的基本概念,黑 盒 测 试 VS 白 盒 测 试,南天培训教材系列 版权所有(C)南天信息,第二章 白盒测试基本技术,词法与语法分析,静态错误分析,程序插桩技术,白盒测试的几种基本技术,南天培训教材系列 版权所有(C)南天信息,一、词法与语法分析,通过词法与语法分析可以获取软件组成的重要基本因数,包括变量标识符、过程标识符、常量等。1)标号交叉引用表:列出各模块中出现的全部标号及标号的属性,模块以外的全局、计算标号。2)变量交叉引用表:列出变量定义及引用信息,变量
4、的属性,变量类型(全局、局部) 3)子程序、宏和函数表:列出各个子程序、宏及函数的属性,输入、输出参数信息。4)等价表:列出在等价语句和等值语句中出现的全部变量和标号。5)常数表:列出全部数字常数和字符常数 。 使用这些引用表可以直接查出说明或使用错误、为用户提高辅助信息和做错误预测、程序复杂度计算。,南天培训教材系列 版权所有(C)南天信息,例子,根据流程图来导出其定义和引用的变量,导出变量交叉引用表来查看程序中存在的问题:,1,2,3,4,5,6,7,8,9,10,11,南天培训教材系列 版权所有(C)南天信息,例子(答案),从定义和引用表来看,该程序有两个错误:1)语句2使用了变量W,而
5、在此之前并未对其定义。2)语句5、6使用变量V,这在第一次执行循环时也未对其定义过。此外,该程序还包括一个异常:3)语句8对W的定义也从未使用过。,南天培训教材系列 版权所有(C)南天信息,表格作用,利用以上表格可以直接找出以下问题:引用未定义的变量(错误) 未曾使用的定义(错误) 常数传播(可优化) 循环内的不变定义(可优化) 用错的局部变量和全局变量(错误) 不匹配的参数(错误) 不允许的递归(错误) ,南天培训教材系列 版权所有(C)南天信息,二、静态错误分析,类型和单位分析,引用分析,表达式分析,对源程序的类型进行检查,为了强化检查效果, 扩充一些新的数据类型,进行静态预处理程序, 分
6、析程序中的类型错误。,对程序中变量的引用进行检查,发现引用异常错误 (如变量在定义前被引用,变量定义后未被引用)。 采用深度优选的方法遍历程序流图的每一条路径。 建立引用异常的探测工具,包括变量定义表和变量引用表。,对表达式进行分析,以发现和纠正在表达式出现的错误,如: 在表达式中不正确的使用了括号造成错误;数组下标越界错误 ;除数为零;浮点数计算的误差(最复杂)。,接口分析,各模块之间接口一致性。 模块与外部数据库的接口一致性。 形参与实参在类型,数量,顺序,维数,使用上的一致性。 全局变量和公共数据区在使用上的一致性。,南天培训教材系列 版权所有(C)南天信息,三、程序插桩技术,设计时考虑
7、的问题如下: 明确要探测哪些信息; 在程序的什么部位设置探测点; 需要设计多少个探测点。,探测点设置位置(以Fortran为例): 程序块的第一个可执行语句之前; Entry语句的前后; 有标号的可执行语句处; 循环、条件、call、go to语句之后;,向程序中插入断言语句来测试: 当断言语句成立时,程序可以继续往下执行,否则将终止该程序。,在动态测试中,是一种基本的测试手段,有广泛的应用。主要借助向程序中插入操作,来实现测试目的的方法(即向源程序中添加一些语句(也称探测器),实现对程序语句的执行、变量的变化等情况进行检查)。,南天培训教材系列 版权所有(C)南天信息,断言语句,在程序中特定
8、部位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,从而使程序的运行特性得到证实。我们把插入的这些语句称为断言。这一做法是程序正确性证明的基本步骤,尽管算不上严格的证明,但方法本身仍然是很实用的。 在什么情况下该插入断言语句:1)程序的入口处需要插入断言语句;2)在判定语句的前后需要插入断言语句;3)可以判断出变量确切值时,可以插入断言语句来断言变量的值。,南天培训教材系列 版权所有(C)南天信息,断言语句实例分析,源代码如下: public class SampleCalculator public int add(int augend , int addend)return
9、 augend + addend ; public int subtration(int minuend , int subtrahend) return minuend - subtrahend ; ,南天培训教材系列 版权所有(C)南天信息,断言语句实例分析,使用Junit工具编写断言语句的测试代码如下: public class TestSample extends TestCase public void testAdd() SampleCalculator calculator = new SampleCalculator(); int result = calculator.add
10、(50 , 20);assertEquals(70 , result);/*断言预期结果为70*/public void testSubtration()SampleCalculator calculator = new SampleCalculator();int result = calculator.subtration(50 , 20);assertEquals(30 , result);/*断言预期结果为30*/ ,南天培训教材系列 版权所有(C)南天信息,包括桌面检查、代码审查和走查等,通过测试工具分析源程序的各种内部结构,用质量度量模型来评估软件的每个方面,通过对程序逻辑结构的遍
11、历实现程序的覆盖,分析控制流图环路复杂性,导出基本可执行路径的集合,代码检查法,静态结构分析法,静态质量度量法,逻辑覆盖法,基本路径测试法,第三章 白盒测试方法,白盒测试的几种测试方法,其他方法,包括域测试、符号测试、Z路径覆盖和程序变异等,南天培训教材系列 版权所有(C)南天信息,一、代码检查法,目的:排除违背程序编写标准的问题 排除违背程序编程风格的问题 找出程序中不可移植的部分 发现程序中不安全、不明确和模糊的部分 确保代码和设计的一致性 确保代码的逻辑表达的正确性 确保代码结构的合理性,南天培训教材系列 版权所有(C)南天信息,一、代码检查法,由程序员检查自己的程序,程序编译通过后,对
12、源程序代码进行分析、检验,并补充相关的文档,为了发现程序中的错误。,由审查小组静态分析程序,以审查会议的形式审查设计规格说明书、控制流程图、程序文本、有关要求和规范是否存在错误。,由走查小组将程序沿逻辑运行一遍,以会议的形式借助测试用例让程序沿逻辑运行一遍,记录程序的踪迹,对程序的逻辑和功能提出的问题展开讨论,为了能发现更多问题。,代码审查,走查,桌面检查,代码检查方式,南天培训教材系列 版权所有(C)南天信息,几种检查方式比较,南天培训教材系列 版权所有(C)南天信息,代码检查项目,检查变量的交叉引用表。 检查标号的交叉引用表。 检查子程序、宏、函数。 等价性检查。 标准检查。 风格检查。
13、比较控制流。 选择、激活路径。 对照程序的规格说明和源代码。 补充文档。,南天培训教材系列 版权所有(C)南天信息,代码检查重点和规则,代码检查重点:变量命名和类型审查变量初始值检查变量作用范围检查程序逻辑审查程序语法检查程序结构检查 根据编程语言以及被测试程序的特点,选择自动化测试工具中内置的合适的编码规则来进行检查。,南天培训教材系列 版权所有(C)南天信息,编码规范,是程序编写过程中必须遵循的规则,详细规定了代码的语法规则、语法格式等。从以下几个方面的规定进行检查: 排版、注释、标识符命名、可读性、变量、函数、过程、可测性、程序效率、质量保证、代码编辑、编译和审查、代码测试、维护和宏。,
14、南天培训教材系列 版权所有(C)南天信息,缺陷检查表,缺陷检查表既检查时用到的测试用例,里面包括一些容易出错的地方和以往遇到的典型错误如下:(每种语言有各自的特点) 格式部分。 入口和出口的连接。 程序语言的使用。 存储器的使用。 判断和转移。 性能。 可维护性。 逻辑。 可靠性。,南天培训教材系列 版权所有(C)南天信息,二、静态结构分析法,源代码的系统结构,内部控制逻辑,数据结构,数据接口,静态分析,内部文件调用关系图,子程序表、宏和函数参数表,函数调用关系图,模块控制流图(使用Logiscope测试工具),生成,生成,生成,生成,南天培训教材系列 版权所有(C)南天信息,二、静态结构分析
15、法,在设计和开发阶段,使用LOGISCOPE可以对软件的体系结构和编码进行确认。可以在尽可能的早期阶段检测那些关键部分,寻找潜在的错误,并在禁止更改和维护工作之前做更多的工作。 Logiscope RuleChecker:根据工程中定义的编程规则自动检查软件代码错误,可直接定位错误。包含大量标准规则,用户也可定制创建规则。自动生成测试报告。 Logiscope Audit:定位错误模块,可评估软件质量及复杂程度。提供代码的直观描述,自动生成软件文档。 Logiscope TestChecker:测试覆盖分析,显示没有测试的代码路径,基于源码结构分析。直接反馈测试效率和测试进度,协助进行衰退测试
16、。既可在主机上测试,也可在目标板上测试。支持不同的实时操作系统、支持多线程。可累积合并多次测试结果,自动鉴别低效测试和衰退测试。自动生成定制报告和文档。 Logiscope分为Audit、RuleChecker和TestChecker3部分,对代码分别进行静态度量、编程风格检测和测试覆盖率分析 。,南天培训教材系列 版权所有(C)南天信息,三、静态质量度量法,有效性(时间特性、资源特性 ),可靠性(成熟性、容错性、可恢复性 ),可用性(可理解性、易学性、可操作性 ),轻便性(即可移植性,包括适应性、可安装性、一致性、可替换性 ),可维护性(可分析性、可修改性、稳定性、可测性 ),功能性(适合性、准确性、互操作性、依从性、安全性 ),质量,南天培训教材系列 版权所有(C)南天信息,构造质量模型度量可维护性,确定度量的规则:代码行数、注释频度等度量软件的各种行为属性。度量规则参数表参考书本P176。 确定所采用的分类标准:可分析性、可修改性、稳定性和可测性,每个分类标准由一系列度量规则组成,由规则的取值与权重值计算出每个分类标准的取值。分类标准组参考书本P177。 计算出各分类标准后确定代码的质量等级:优秀、良好、一般和较差。 根据分类标准的计算结果来确定质量因素的取值,也分为四个等级:优秀、良好、一般和较差。可以使用上述得出的计算数据来量化被测程序的质量。,