51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4395|回复: 3
打印 上一主题 下一主题

[求助] 没有参数的函数怎么写单元测试用例?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-11-19 10:54:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教个问题,在写单元测试用例的时候,对于一些没有参数的函数,应该怎么写?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-11-19 11:16:58 | 只看该作者
对于函数测试来说,一个用例,就是设定输入,执行程序,判断输出是否符合预期。
可能输入包括:参数、需读的成员变量、需读的全局变量、内部输入(调用子函数获得的输入);
可能输出包括:返回值、输出参数、被写的成员变量、被写的全局变量,内部输出(在程序执行过程中判断的中间输出)、动作(例如需判断程序在某种输入下是否调用了某个函数)。
简单来说,输入就是程序执行前或执行过程中读取的外部数据,输出就是程序所改写的数据。
了解了这些,就不会对没有参数、没有返回值如何测试产生疑问了。

测试没有参数的函数,它可能还有别的输入,例如全局变量,成员变量,或调用子函数获得的输入(这个要使用工具才能做到),只要函数需读取的,都应该设定初始值,如果完全没有,没有输入也是一种输入,照样测试就是了。 同样道理,输出也不仅仅是返回值,没有返回值还可能修改了全局变量什么的,这些也是要判断的输出。

但是,单元测试应该测试哪些比较复杂的程序,而不是只测试接口。对于只是读写一两个数据的接口,没什么好测试的,例如“DWORD GetInterfaceVersion ();//获取解码器版本号”,应该只是读取一个全局变量并返回,没有什么测试意义,要测的话,先设定那个全局变量的值,也一样测试,例如:
输入:SetInterfaceVersion (1234); //调用其他函数完成初始化,这个是外部输入,不是内部输入。
输出:ASSERT(GetInterfaceVersion () == 1234);
不过这样做没什么意义。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-11-19 11:40:18 | 只看该作者
太感谢了!!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2023-9-19 19:52
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    4#
    发表于 2010-4-21 22:00:43 | 只看该作者
    2楼的见解不错
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 15:36 , Processed in 0.073672 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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