白盒测试技术的理论性比较强,也比较成熟,现实中不是每个单元都可以很好地完整运用白盒测试技术。如不是关键的单元也没有必要将所有的理论付诸子实践。本节主要讲述白盒测试的基本方法和准则。具体如何运用白盒测试技术导出测试用例,请参见第14童。
· 因果图法。
· 功能图法。
在功能性测试方面我们通常会利用三种数据来进行测试,即正常数据、边缘数据和错误数据。
· 正常数据:在测试中所用的正常数据的量是最大的,而且也是最关键的。少量的
测试数据不能完全覆盖需求,但要从中提取出一些具有高度代表性的数据作为测
试数据,以减少测试时间。
· 边缘数据:是界于正常数据和错误数据之间的一种数据。它可以针对某一种编程语言、编程环境或特定的数据库而专门设定。例如,若使用sQL server数据库,则可把sOL s豇ver关键字(如:。;As:Join等)设为边缘数据。其他边缘数据还有HⅣL的HTML;o等关键字以及空格、@、负数、超长字符等。边缘数据要靠测试人员的丰富经验来制定。
· 错误数据:显而易见,错误数据就是编写与程序输入规范不符的数据从而检测输入筛选、错误处理等程序的分支。
另外,还得考虑接口测试、性能测试、内存测试等。
· 性能分析:代码运行缓慢是开发过程中的一个重要问题。一个应用程序运行速度较慢,程序员不容易找到是在哪里出现了问麒。如果不能解决应用程序的性能问题,将降低并极大地影响应用程序的质量,于是查找和修改性能瓶颈成为调整整个代码性能的关键。
· 内存分析:内存泄漏会导致系统运行的崩溃,尤其对于资源比较匮乏、应用非常
广泛的嵌入式系统.可能导致无法预料的熏大损失。通过测量内存使用情况·可
以了解程序内存分配的真实情况,发现对内存的不正常使用t在问题出现自口发现
征兆,在系统崩溃前发现内存泄露错误。发现内存分配错误t并精确显示发生错
误时的上下文情况,指出发生错误的原由。
一位优秀的开发人员会主动要求测试人员对其代码进行充分的测试。一位优秀的测试人员也会对关键的单元十分敏感,进行充分的测试。下面就是笔者所在项目组的一个真实事例。
案例;
套司正在进行一项大型的网络服务系统的开发,项目组承担的是服务器端的软件开发。其中有个项目负责多台数据库服务器的数据复制。服务系统是实时的,对数据复制的性能要求当然很高。当开发人员完成了数据传输模块时(还未编写和数据库相关的模块),就主动要求对其性能进行单元测试。
进行这样的性能测试,不需要详细了解该单元的结构,但首先要掌握设计文档中相关
的性能指标和运行的网络环境度服务器环境等指标。咀便搭建相应的测试环境。
其次,要求开发人员提供相应的程序接口,设计驱动程序和桩程序用来运行并测试该单元程序。此处我们蝙写了一个功能简单的小程序,即作为驱动模块也是桩模块。该驱动程序在服务器端运行模拟数据库提供和接收需复制的数据,它能够随机产生可设置大小的数据包,按设置好的单位时间发包数量进行数据包的发送,同时它也是接收端,能对接收到的数据包的数量和大小进行简单的统计,以便实现简单的验证,如图5—2所示。驱动模块__—一被测试单i卜—一驱动模块
图5.2具有桩模块作用的驱动程序
接着就要设计测试用例并实施测试。设计测试用例时要求:
· 根据指标考虑数据包的大小和频率,如大包低频或小包高频。
· 考虑两个驱动程序的数据对发。
· 从两个驱动程序变为多个驱动程序的数据对发。
· 从同一网段变为多个网段,验证代理服务器或网关造成的影响。
发现问题后,得先排除网络等环境因素,再报告开发人员进行调试。
这样会确保该单元不会是谊项目的性能瓶颈,也避免了后续开发的盲目性。很多参考书中误导人们认为单元测试采用的是白盒测试技术,由开发人员完成。这很片面,在有些情况下是完全不对的。从另一方面来说,该案例的测试工作也可由开发者完成,但在开发的初期,测试人员并没有大的测试压力,而开发者面临着大量代码编写压力,浪费开发者的时间直接影响项目的进度。何况开发者与测试者的心理状态的不同,还可能直接影响测试结果的可靠性。
文章来源于领测软件测试网 https://www.ltesting.net/