1、软件测试技术与测试实训教程黎连业 王华 李龙 黎照北京:机械工业出版社2012.05 第 5讲: 第 5章 白盒测试的实用技术 白盒测试( White Box Testing),按照程序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。 此方法是把白盒测试的对象看成内部逻辑结构是完全可见的盒子,测试人员依据程序内部逻辑结构的相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点、不同分支检查程序的状态,确定实际的状态是否与预期的状态一致。 白盒测试技术是软件测试的主要方法之一,白盒测试的基本
2、概念、检查方法、测试方法、测试工具等内容是必须掌握的,本章重点讨论以下内容: 白盒测试的基本概念; 白盒测试方法; 白盒测试的常用技术; 白盒测试的要求; 人工静态测试方法; 动态测试; 结构测试。5.1 白盒测试的基本概念 白盒测试(白箱测试 (White-box testing)是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件,使用程序设计的控制结构导出测试用例,是软件测试的主要方法之一。这种测试要求对程序的要求很高,需要了解程序的构架,具体需求,以及一些编写程序的技巧,能够检查一些程序规范,指针,变量,数组越界等问题,使得问题在前期就暴露出来。白盒测试又叫结构测试
3、或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。一般程序所容易犯的错误 ,没有定义变量 ,无效引用 ,野指针 ,超过数组下标 ,内存分配后没有删除等 ,无法调入循环体 ,函数本身没有析构 ,导致循环实效或者死循环 .参数类型不匹配 ,调用系统的函数没有考虑到系统的兼容性等。 白盒测试一般是以单元或者模块为基础的。目前的做法是把他归结为开发的范畴,用专人或者兼职的人去看代码或者利用部分工具
4、,例如Rational 系列, Boundchecker 等工具,他们可以帮助人为的发现变量没有初始化,指针错误等。大大的减少了人力。 白盒测试的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、 Z路径覆盖、程序变异等,运用最为广泛的是基本路径测试法。5.1.1 白盒测试白盒测试可分为静态测试和动态测试。( 1)静态测试 静态测试是测试中很重要的方法之一。它不要求在计算机上实际执行所测程序,主要以一些
5、人工的模拟技术对软件进行分析和测试。静态测试大约可以找出 25%60% 的逻辑错误。( 2)动态测试 输入一组预先按照一定的测试准则设计的实例数据驱动运行程序,检查程序功能是否符合设计要求,发现程序中错误的过程。5.1.2白盒测试的原则 白盒测试必须遵循以下 4条原则,才能达到测试的目的:1. 保证一个模块中的所有独立路径至少被测试一次;2. 所有逻辑值均需测试真 (true) 和假 (false) 两种情况;3. 检查程序的内部数据结构,保证其结构的有效性;4. 在上下边界及可操作范围内运行所有循环。5.1.3 白盒测试的策略和侧重点 白盒测试中测试的策略是采用先静态后动态的组合方式,然后现
6、进行覆盖测试。 利用静态结构分析的结果,通过代码检查和动态测试的方法对结果进一步确认,使测试工作更为有效。 白盒测试在不同测试阶段的侧重点是: 单元测试 以代码检查、逻辑覆盖; 集成测试 静构结构分析、静态质量度量; 系统测试 根据黑盒测试结果,采用白盒测试。5.1.4 白盒测试的类别、依据和流程1. 白盒测试的类别 白盒测试可分为代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、 Z路径覆盖、程序变异。其中运用最为广泛的是基本路径测试法。白盒测试的类别具体分为 8大类。( 1) 软件公用问题的测试;( 2) 语言测试;( 3) SQL语句测试;( 4) 数据类型测试;( 5) 界面测试;( 6) 数值对象测试;( 7) 业务对象测试;( 8) 数据管理对象测试。2. 白盒测试的依据 软件需求报告; 软件需求规格说明; 程序设计文档; 软件界面设计; 编码规范; 开发命名标准。白盒测试的流程 白盒测试的流程分为界面对象和业务对象两种方式。 界面对象测试 界面对象测试的流程如图 5-1所示。