内存测试比之于软件的其他特性测试,更显特殊一些。因为它与软件的类型或软件所用的开发语言无关,软件在运行期间都需用到内存。当然不同的开发语言对内存的申请、分配及释放的处理细节会有不同,但原理却是相同的。内存测试需考虑以下几方面:
测试软件是否存在内存越界访问、内存泄漏。内存越界主要包括数据越界读写、“野指针操作”和堆栈溢出等几种。内存泄漏则包含较多的种类,如分配的内存没有释放、打开的文件没有关闭、使用的窗口句柄没有关闭等。
验证软件在极端情况下的行为。如程序长时间运行后的情况,内存慢泄漏的案例便是一个典型。还有当内存资源被别的应用程序消耗很多时目标软件的运行情况如何。
待测软件对系统资源的占用率,防止软件使用的资源超出系统的限制。比如软件中使用的句柄数是否超出了系统的限制。
要对以上几方面的内存使用情况进行验证,我们可以使用对代码进行静态检查、动态检查及专门的内存监测工具等手段。静态检查代码可采用代码走查或借用代码静态工具,如PC-Lint就是一款不错的工具;也可以对代码进行动态检查,如借助内存动态检查工具,BoundChecker、Purify等在软件运行时进行检查。还有就是通过自己编写测试代码,辅助内存监测工具来执行。
本小节介绍的专项测试,主要是基于软件的不同特性而言,把这些特性独立出来,以得到足够的重视,作为项目测试的一个子项。并且在产品的维护阶段一直纳入到每次版本更新的影响分析范畴,进行全程跟踪,为软件的质量可靠性验证与评估作出贡献。
相关链接: