2.1 白盒测试概述
白盒测试是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件,使用程序设计的控制结构导出测试用例,是软件测试的主要方法之一。这种测试对测试工程师的编码能力要求很高,需要了解程序的构架、具体需求,以及一些编写程序的技巧,能够检查一些程序规范、指针、变量、数组越界等问题,使得问题在前期就暴露出来。白盒测试又叫结构测试或逻辑驱动测试,它知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行;按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。白盒测试主要用于软件验证。一般程序容易犯的错误包括没有定义变量、无效引用、野指针、超过数组下标、内存分配后没有删除、无法调入循环体、函数本身没有析构、循环失效或者死循环、参数类型不匹配、调用系统的函数没有考虑到系统的兼容性等。
白盒测试一般是以单元或者模块为基础的。目前的做法是把它归结为开发的范畴,用专人或者兼职的人员或者利用部分工具(如Rational系列、Boundchecker等工具)检查代码,有助于发现变量没有初始化、指针错误等。
白盒测试的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用的测试用例设计方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试法、符号测试法、Z路径覆盖法、程序变异测试法等,运用最为广泛的是基本路径测试法。
2.1.1 白盒测试的基本知识
白盒测试方法分为静态测试和动态测试。
1)静态测试:静态测试是测试中很重要的方法之一。它不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试。静态测试大约可以找出25%~60%的逻辑错误。
2)动态测试:输入一组预先按照一定的测试准则设计的实例数据驱动运行程序,检查程序功能是否符合设计要求,发现程序中错误的过程。
2.1.2 白盒测试的原则
白盒测试必须遵循以下4条原则:
1)保证一个模块中所有路径至少被测试一次。
2)所有逻辑值都要测试真(true)和假(false)两种情况。
3)检查程序的内部数据结构是否有效。
4)在上、下边界及可操作范围内运行所有循环。
2.1.3 白盒测试的类别、依据和流程
白盒测试的策略是首先进行静态结构分析,采用先静态后动态的组合方式,然后进行覆盖测试。利用静态结构分析和动态测试对结果进行进一步确认,以达到测试效果。
1.白盒测试的类别
白盒测试的类别具体分为以下7大类:
1)软件公用问题的测试。
2)语言测试。
3)业务对象测试。
4)数据类型测试。
5)界面测试。
6)数值对象测试。
7)数据管理对象测试。
2.白盒测试的依据
白盒测试的依据有以下6点:
1)软件需求报告。
2)软件需求规格说明。
3)程序设计文档。
4)软件界面设计。
5)编码规范。
6)开发命名标准。
3.白盒测试的流程
白盒测试的流程分为界面对象测试和业务对象测试两种方式。
(1)界面对象测试
界面对象测试的流程如图2-1所示。
图2-1 界面对象测试的流程
在图2-1中可以看出:界面对象测试流程的优点是便于测试者从界面层直观地录入数据,界面对象测试流程的缺点是在进行回归测试时需要重复输入数据。
(2)业务对象测试
业务对象测试的流程如图2-2所示。
图2-2 业务对象测试的流程
业务对象测试是从底层开始,逐一向上延伸。从图2-2中可以看出:业务对象测试的优点是在进行回归测试时不需要重复输入数据,且程序执行一遍就可以了。业务对象测试的缺点是需要给中间层编写一个测试小程序,根据程序中类的对象构造输入数据及将结果输出到控制台上。