51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2940|回复: 4
打印 上一主题 下一主题

[讨论] 关于内存泄漏测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-6 13:44:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
VU目前版本没有专门的测试内存泄漏的功能,但可以方便地利用IDE的相应功能测试内存泄漏。
这里以VC6.0为例,要测试内存泄漏,则以调试方式执行测试工程,然后查看VC的输出窗口(Debug页),出现类似以下的信息时表示测试时产生了内存泄漏:
xxx.cpp(368) : {561} normal block at 0x00B11178, 5 bytes long.
Data: <date > 64 61 74 65 00

一般来说,点击这些信息,就可以定位到申请这些内存的代码。

内存泄漏有可能是测试代码造成的,如果测试用例的输入部分动态在堆上申请了内存,则要在输出部分用后置操作代码释放内存,如:
输入部分:
char* pArg = new char[1024]
输出部分要添加如下代码释放内存(被测试代码会自动删除相应指针的除外):
delete [] pArg; //!
注意后置操作的语法:;不能省略,后面加//!,否则VU会作为预期输出处理。

为了实现调试中的后退功能,当以调试方式运行测试工程时,会重复执行多次,所以需要较多时间,并且,如果有内存泄漏,所输出的泄漏信息比实际的多得多。

调试的重复执行次数由VU目录/include/VuxOptions.h文件定义,如下:
#define MAX_DEBUG_TIMES 100
如有需要,可以自行修改。

函数测试、类测试、工程测试都可以检查是否有内存泄漏,因此可以先用工程测试进行总体检查,再对怀疑对象执行类测试或函数测试。如果难于确定产生泄漏的代码,可以使用“二分法”较快速地找到产生泄漏的类及函数:
1) 选择“工程测试”;
2) 打开“选定测试集”窗口(控制窗口->菜单->选定测试集);
3) 选中一半的类,点击“确定”;
4) 以调试方式执行测试工程,这样就可以判断产生内存泄漏的代码是否位于选中的类;
重复2)3)4)直到找到产生内存泄漏的类;
用同样的方法找到产生内存泄漏的函数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-12 00:34:29 | 只看该作者
ding
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-15 18:01:00 | 只看该作者
HUHU,我看不明白,没有做过内存测试.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-19 15:14:57 | 只看该作者
高难度,搞不明白sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-8-19 23:10:34 | 只看该作者
看不懂
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 09:54 , Processed in 0.067531 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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