关于单元测试

zhangyuhangken 2012-08-15 10:41:53
刚接触单元测试,遇到了许多问题,比如:
1. 被测函数的动作如果只是修改了类的私有成员,该怎么验证是否成功?
2. 被测函数依赖于外部环境(如全局变量、网络、数据库、文件等等),这种情况下还能不能用单元测试?
3. 被测函数的逻辑分支与随机因素有关如何测试?比如执行过程中会产生一个随机数,并根据这个数决定后面的分支,甚至有某个分支命中的概率极低,这又怎么办呢?

请各位前辈多多指教,谢谢!

另外,求推荐这方面的书籍,谢谢!
...全文
188 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
3. 被测函数的逻辑分支与随机因素有关如何测试?比如执行过程中会产生一个随机数,并根据这个数决定后面的分支,甚至有某个分支命中的概率极低,这又怎么办呢?[/Quote]

你显然是根本没有建立编写测试程序的基本概念。例如我们要写一个测试用例“判断十年内的彩票大奖中一定有2个大奖是连号的”,那么就是把数据抽取出来,然后写一个断言。

管它“随机因素、分支、概率”么?

测试就是用代码来自动地产生明确的环境数据、测试数据,然后写一个断言来验证结果。初始环境都是你自己用代码来创造的(而不是“等、靠、要”测试环境数据的)。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
2. 被测函数依赖于外部环境(如全局变量、网络、数据库、文件等等),这种情况下还能不能用单元测试?
[/Quote]

只要是明确可操作、可重现的任何环境,都可以编写测试代码。只不过基于网络、数据库、文件等,你需要在测试代码中首先重现测试环境。例如你需要自动地将一个数据库备份恢复到数据库系统中,或者用代码来检测数据库中是否有足够的测试数据(如果不足则用代码随机生成一些测试数据),然后才开始测试。而对于偏向硬件约束,例如网络,那么你的测试程序可能在检测到条件不具备时也就不进行测试了。
  • 打赏
  • 举报
回复
自动化测试不是测试什么空洞的“单元”,测试工作是基于设计的。什么才值得测试?就是驱动一个开发人员值得花去几个小时的工作的内容,才值得测试。

当你打算为未来几个小时的工作首先编写一个单元测试程序,你需要写下的测试用例肯定是基于要实现的功能单元的输入输出、外部测试接口的,不用纠结什么“内部、私有”之类的东西。

测试不是“越低级越好”,而是基于工作任务的验收来写测试用例。
zhangyuhangken 2012-08-16
  • 打赏
  • 举报
回复
没人关注,只好自己顶一下……

5,179

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 质量管理/软件测试
功能测试压力测试安全性测试 个人社区 湖南省·长沙市
社区管理员
  • 软件测试
  • 虫无涯
  • 小博测试成长之路
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家加入到软件测试的社区,在这里,希望大家勇于发表自己的看法,欢迎大家分享自己在软件测试工作过程中遇到的问题以及工作经验分享。

1.想转行的小伙伴,遇到问题没有及时回复的,可以私聊小博进行反馈

2.大家对社区有好的建议,都可以在社区发帖进行反馈

推荐大家学习的软件测试入门笔记:软件测试入门学习笔记

试试用AI创作助手写篇文章吧