51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3401|回复: 0
打印 上一主题 下一主题

[转贴] 黑盒测试之内存泄露与内存检测

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-13 12:02:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
内存错误和内存泄露给程序带来了很大的不稳定,是黑盒测试的一项重要关注点

一、     内存错误

内存错误:当一个指针或者该指针所指向的内存单元成为无效单元,或者内存中分配的数据结构被破坏

时,就会造成内存错误。常见的内存错误:
1)指针或内存未被初始化
2)内存分配未成功,却使用了它
3)内存分配成功并且初始化,但操作越过了内存的边界;例如数组的边界
4)释放了内存却被继续使用:某个对象被释放却被继续使用;函数的return语句指向栈内存的指针或者

引用;使用free或delete释放内存没有将指针设置为NULL值
5)删除未被初始化的指针、删除非堆指针、多次删除同一指针或者覆盖一个指针的内部数据结构
Windows出现内存不能读写的提示信息:则可能是应用程序没有检查内存分配失败;或者是程序试图读写

的内存被无疑中释放了或者由于某些操作变成为无效了

二、内存泄漏

  内存泄漏在被动态分配的内存没有被释放时产生。有许多情况会导致内存泄漏,如没有在程序的全

部执行路径中释放内存,没有在析构函数中释放所有的内存等。忘记释放内存;构造函数失败;存在内

存泄漏的析构函数;存在内存泄漏的异常处理程序;如文件、窗口、设备上下文、GDI对象使用完未释放

;多个返回语句;使用错误形式的delete。一个程序在崩溃之前可运行的时间越长,则导致崩溃的原因

与内存泄漏的关系越大。

  
三、     内存的初始化

在调试版本里,堆里未被初始化的内存被0xCD字节模式填充,堆里释放的内存被0xDD字节模式填充。堆

栈里被初始化的内存被0xCC字节模式填充。调试版本和发布版本里,未被初始化的全局内存都被初始化

为0。

四、     内存泄漏的发生方式:

以发生的方式来分类,内存泄漏可以分为4类:

1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性

是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄

漏至关重要。

3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅

且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,但是因为

这个类是一个Singleton,所以内存泄漏只会发生一次

五、     内存泄露的监测

作为黑盒测试,则WINDOWS NT 自带的Performance Monitor不失一个有效的内存泄露工具,Performance

Monitor 加入了系统监视功能:比如CPU的使用率,内存的使用情况,I/O操作的频繁度等都作为一个个

Counter,应用程序可以通过读取这些Counter了解整个系统的或者某个进程的运行状况。
   
我们一般可以监视Process对象的Handle Count,Virutal Bytes 和Working Set三个Counter。
Handle Count记录了进程当前打开的HANDLE的个数,监视这个Counter有助于我们发现程序是否有Handle

泄漏;
Virtual Bytes记录了该进程当前在虚地址空间上使用的虚拟内存的大小,NT的内存分配采用了两步走的

方法,首先,在虚地址空间上保留一段空间,这时并没有分配物理内存,只是保留了一段地址。然后,

再提交这段空间,这时操作系统才会分配物理内存。所以,Virtual Bytes一般总大于程序的Working

Set。
如果程序存在内存的泄漏这个值会持续增加,但是Virtual Bytes却是跳跃式增加的。

WINDOWS NT 中国IT室验实自带的Performance Monitor

的打开方式为Windows 任务管理器-〉查看菜单->选择列表,就可以添加需要监控的计数器

六、.winrunner 工具在内存检测中的使用

    我们需要对软件的使用进行分析,找出容易出现内存泄露或可能出现内存泄露的地方,使用

winrunner工具重复执行同一个操作, 通过观察windows 的 Performance Monitor则能看出是哪个操作

引起了内存泄露。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 14:43 , Processed in 0.067025 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表