51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[讨论] 如何测试无返回值的函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-1-6 17:20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人刚接触单元测试,遇到很多问题,望各位大虾答疑解惑!
函数类似:
void ReleaseSession(char *actSession)()
{...}
函数功能: 释放操作对象,即释放掉内存,将指针置空;
actSession为函数输入值;

我的最初想法是:
函数没有返回值,是否可以判断actSession经函数处理后值应该为NULL,即可判断函数已作正确处理。但从调试来看,actSession一直是指向某快内存地址的。开发同事说,像这种情况比较难跟踪指针是否置空的。

所以,如果要测这样的函数,我该如何着手?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2012-1-10 15:16:09 | 只看该作者
怎么没人回答呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2012-1-10 15:37:02 | 只看该作者
void ReleaseSession(char *actSession)
对于指针本身来说,是传值的,因此,函数将内存清除后并将指针置空,在外部是看不到指针本身的值置空的,只是所指内存被释放了,如果声明改为
void ReleaseSession(char *& actSession)才会看到指针结果为NULL。

从测试角度来说,这里涉及到内部输出,也就是说,这个函数所做的动作,外部无法访问其结果,只能在函数内部判断结果是否正确。内部输出在单元测试中是很常见的,例如,函数计算好一个报文并发送出去,并没有将这个报文通过出参、返回值等输出,如何判断计算是否正确呢?这就是内部输出。类似的例子,计算好一个SQL语句并操作数据库,也是需要判断这个SQL是否正常,也是内部输出。

内部输入和内部输出是单元测试的两个难题,解决思路,可以参考一下Visual Unit。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-1-10 17:29:52 | 只看该作者
回复 3# VisualUnit


    非常感谢~!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2012-1-27 11:23:12 | 只看该作者
谢谢VisualUnit 的解答。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 23:00 , Processed in 0.070627 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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