关闭

关于内存泄漏测试

发表于:2007-8-17 17:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:天山客    来源:网络转载

  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)直到找到产生内存泄漏的类;
  用同样的方法找到产生内存泄漏的函数。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • bingyi8589
    2010-1-26 10:33:09

    ding

  • muerte
    2007-8-20 09:40:38

    静态测试,非常好过,如果真的做嵌入式单元测试,不是一件很容易的事情,我现在都是通过性能测试来看内存泄露这块

    感兴趣的一起讨论:msn"::  jason-dsr@hotmail.com

  • 08皇后
    2007-8-19 20:36:42

    楼上的朋友,能帮忙把PCLINT的软件发我一份吗?多谢!Emial:xx_yy_mm@163.com

  • zhangzhengbao
    2007-8-18 10:51:07

    内存泄漏测试是一个非常大的话题!~

    我现在用的方法主要是嵌入自己的代码!使用trace工具或其他工具打印内存地址信息。然后使用反汇编代码定位内存泄漏的代码。当然如果系统提供map文件,我们也可以根据map文件来定位问题的来源!
    目前不知道大家在做嵌入式代码白盒测试,是怎么来做的!
    由于代码量非常大,所以静态测试我用目前使用pclint
    动态目前没有很合适的工具,我只是嵌入自己代码测试内存问题,这个方法个人觉得还 不错。
    目前不知道大家在做嵌入式代码白盒测试,是怎么来做的!

  • juliana0607
    2007-8-18 08:45:35

    哈哈,我又来顶一下啊!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号