讨论 && 提问 关于单元测试

qhfu 2008-09-24 12:32:47
讨论: 关于 unit test.

问题如下:

1, 有多少人现在在项目中 会写 unit test? 为什么写? 觉得 unit tset带来好处了吗?
2, 大家在使用unit test的时候有什么心得体会, 或者经验?
3, 是否应该 为每一个 class 提供一个test 类,为每一个 publiic函数至少 提供一个测试, 还是可以只 考虑 接口类添加test class,只要 非接口类代码覆盖到了就可以了?
4, 是否应该为了 unit test 而在产品代码中 加入一些特殊的东西,比如只为测试用的代码?
5, 在使用 unit test过程中 有没有什么好的 方法或策略?
6, 任何 跟 unit test 、TDD、agile 等相关的 观点看法 都欢迎。


我 接触这一方面时间不是太久,经历过一些项目 ,也看了一些书, 总体感觉效果不是太好。

先说一下个人观点:
1, unit test 是不错的, 特别是在以后 修改bug 或者添加新功能的时候, 很容易得到反馈让coding 更加有信心,有利于代码重构,保持代码干净。
2, 容易促使 解开各种依赖, 为了能做unit test通常会把数据库,或者其他各种依赖封装起来,, mock出一个东西来,这样让代码的 耦合性降低,也是一个好处。
3, unit tset 会增加工作量,必须随代码修改而修改。
4, 有的时候为了 unit,在产品代码中 加入一些本来 可能不需要的代码。
5, 程序员有的非常不愿意写 unit tset case,质量低的 test case,会起副作用,test case 的质量也很难衡量。


可用分挺多的,分数可以再加,大家讨论一下 分享一下心得 谢谢!
...全文
279 44 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
qhfu 2008-10-07
  • 打赏
  • 举报
回复
谢谢 大家!!!
iiarchitecture 2008-10-01
  • 打赏
  • 举报
回复
1, 有多少人现在在项目中 会写 unit test? 为什么写? 觉得 unit tset带来好处了吗?
2, 大家在使用unit test的时候有什么心得体会, 或者经验?
3, 是否应该 为每一个 class 提供一个test 类,为每一个 publiic函数至少 提供一个测试, 还是可以只 考虑 接口类添加test class,只要 非接口类代码覆盖到了就可以了?
4, 是否应该为了 unit test 而在产品代码中 加入一些特殊的东西,比如只为测试用的代码?
5, 在使用 unit test过程中 有没有什么好的 方法或策略?
6, 任何 跟 unit test 、TDD、agile 等相关的 观点看法 都欢迎。

1、一般来讲一个测试阶段需要有测试方案和测试用例,在cmm瀑布模型里的流程如下:

需求分析(ST设计)->概要设计(IT设计)->详细设计(ut设计)->coding->ut测试执行->it测试执行->st测试执行
而且这个模型在我们公司正在用,效果不错,这里面每一个测试阶段都是十分重要的,bug发现的阶段越靠前,公司付出的成本就越少,在UT、IT、ST中分别发现一个问题,成本是不同数量级的,ut就是编码后的第一道关卡,很重要
2、同意32楼
3、根据具体产品或测试策略划分测试粒度等级,从类到方法,到路径不等
4、我认为应该,但是我们的目的始终是减少维护成本,这是我们在做这件事情时需要考量的。
5、没有
6、没有
Jacky_Dai 2008-10-01
  • 打赏
  • 举报
回复
恩,可以学习一下~
Gump_BlueSky 2008-09-30
  • 打赏
  • 举报
回复
学习啦
mabo321 2008-09-30
  • 打赏
  • 举报
回复

LZ 活雷锋

小弟 学习中


镜机 2008-09-30
  • 打赏
  • 举报
回复
mark
cunsh 2008-09-25
  • 打赏
  • 举报
回复
mark
qhfu 2008-09-24
  • 打赏
  • 举报
回复
引用 7 楼 qhfu 的回复:
tdd还有点用处,unit test你就忘了吧。
================

tdd 不就是 用 unit test drive develop? 请指教


tdd不是utdd

======
谢谢,我也明白 tdd 是 tset drive develop,我们一般是 unit test drive。。
如果是把这个系统拿起来run一下,有些系统来说run起来挺麻烦的,特别是大系统,这样子开发效率可能不太高,就是说 要在系统上能run起来都是先假设功能实现了。

不知道你们如何做 tdd呢?
skyering 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 taodm 的回复:]
选择先把类A重构拆小了。
1000行的类基本是垃圾堆了。
[/Quote]
同意,尽可能地让类的接口最小化,否则维护起来就困难了!
forckgcs 2008-09-24
  • 打赏
  • 举报
回复
关注
clover8 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 qhfu 的帖子:]
讨论: 关于 unit test.

问题如下:

1, 有多少人现在在项目中 会写 unit test? 为什么写? 觉得 unit tset带来好处了吗?
2, 大家在使用unit test的时候有什么心得体会, 或者经验?
3, 是否应该 为每一个 class 提供一个test 类,为每一个 publiic函数至少 提供一个测试, 还是可以只 考虑 接口类添加test class,只要 非接口类代码覆盖到了就可以了?
4, 是否应该为了 unit test 而在产品代码中 加入一些特殊的东西,比如只为测试用的代码?
5, 在使用 unit test过程中 有没有什么好的 方法或策略?
6, 任何 跟 unit test 、TDD、agile 等相关的 观点看法 都欢迎。


我 接触这一方面时间不是太久,经历过一些项目 ,也看了一些书, 总体感觉效果不是太好。

先说一下个人观点:
1, unit test 是不错的, 特别是在以后 修改bug 或者添加新功能的时候, 很容易得到反馈让coding 更加有信心,有利于代码重构,保持代码干净。
2, 容易促使 解开各种依赖, 为了能做unit test通常会把数据库,或者其他各种依赖封装起来,, mock出一个东西来,这样让代码的 耦合性降低,也是一个好处。
3, unit tset 会增加工作量,必须随代码修改而修改。
4, 有的时候为了 unit,在产品代码中 加入一些本来 可能不需要的代码。
5, 程序员有的非常不愿意写 unit tset case,质量低的 test case,会起副作用,test case 的质量也很难衡量。
Quote]

楼主的理解已经不错了。
个人觉得哈:
1. 还是有项目写unit test的,也会用cpp-unit,虽然那不是很完美,不过也是需要的。
2. 不需要每个函数或class都写,不过重要的函数或clase是一定要的。都是按需要的。
3. 如果需要在代码里加测试代码,那就加。
taodm 2008-09-24
  • 打赏
  • 举报
回复
选择先把类A重构拆小了。
1000行的类基本是垃圾堆了。
qhfu 2008-09-24
  • 打赏
  • 举报
回复
一般不对每个类一个test类,而是写一些用宏条件控制继承或者其他的形式绑上去,就像MFC实现一些功用借口一样~

========
情况是 这样的: 有一个接口类A, 他会用到 另外一个类 B

类 A大概 1000行左右, 类B也差不多

B里面的功能主要是给A用的,可以理解为一个工具类, 当然以后也有可能给其他的类用,
有两种选择写 unit test:

1, 只针对 A的接口写,在测试中覆盖到B 的代码。
2, 分别真的 A 和 B的接口写,这样当然有可能B的一些接口重复测试。

你会选哪一种呢?
jieao111 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qhfu 的回复:]
tdd还有点用处,unit test你就忘了吧。
================

tdd 不就是 用 unit test drive develop? 请指教
[/Quote]
test drive develop
taodm 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qhfu 的回复:]
tdd还有点用处,unit test你就忘了吧。
================

tdd 不就是 用 unit test drive develop? 请指教
[/Quote]

tdd不是utdd
帅得不敢出门 2008-09-24
  • 打赏
  • 举报
回复
up 学习
jieao111 2008-09-24
  • 打赏
  • 举报
回复
俺还没做过测试,不过老多书里都有测试的讨论,比如代码大全有专门的章节,我看过现在基本忘完了,只记得tdd
qhfu 2008-09-24
  • 打赏
  • 举报
回复
tdd还有点用处,unit test你就忘了吧。
================

tdd 不就是 用 unit test drive develop? 请指教
qhfu 2008-09-24
  • 打赏
  • 举报
回复
楼上误解了,我没有自己写测试框架 我们就用 cpp unit

我问的问题 有些可能比较大,有些比较细节,

其实任何相关信息都欢迎, 甚至觉得它有多不好, 或者什么好书推荐

我啃 2008-09-24
  • 打赏
  • 举报
回复
用得不是很多boost好象有一个
另外看看:http://blog.joycode.com/peon/archive/2007/05/19/102754.aspx
简单介绍:http://www.mscto.com/testing/25721905.html
一般不对每个类一个test类,而是写一些用宏条件控制继承或者其他的形式绑上去,就像MFC实现一些功用借口一样~
加载更多回复(24)

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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