韩小明@xiammy的专栏

没水的地方挖井,有水的地方修渠

韩小明ID:xiammy
439359次访问,排名106好友13人,关注者67
毕业后一直在广联达工作
xiammy的文章
原创 174 篇
翻译 0 篇
转载 22 篇
评论 1133 篇
韩小明的公告
作者毕业于浙江大学,非常热爱体育运动。现在尤其热爱羽毛球运动。在休息时间非常热爱技术文章写作。
最近垃圾评论泛滥,为了不污染大家的视听,暂时关闭评论,请大家理解。
欢迎转载,但请注意,除非特别声明,本站采用Creative Commons License许可:署名,非商业。

最近评论
yb00k:感觉 这个还是个垃圾东西 适合IE7的变到IE8 就变样了 点都不规范 一点兼容性都不强....强烈支持 firefox
wuhuiran:我嵌入式数据库一直用BerkeleyDB,看到你的博文才知道还有一个SQLite,谢谢。BerkeleyDB不支持SQL
wuhuiran:我嵌入式数据库一直用BerkeleyDB,看到你的博文才知道还有一个SQLite,谢谢。BerkeleyDB不支持SQL
liquankun:瑞星还是不咋地!
白花了几个月的钱
外国的杀软不一定比国产的好!
但是国产的就是比不上国外的!
没办法!技术赶不上人家 还竟搞内讧
不经历大灾难 就不知道什么是团结!



正真的高手是不用杀毒软件的,没什么好不好的,是你自己技术不行而已
wangdei:http://www.bt285.cn BT下载 有300W部BT种子.
http://www.yaonba.com.cn NBA中文网 有200W条NBA直播
http://www.5a520.cn 小说520网 有300W部小说
http://www.bt285.cn/yazhou/ 亚洲BT 有BT亚洲
http://www.bjxlz.cn p……
文章分类
收藏
    相册
    图书
    链接
    宗刚的专栏(RSS)
    快乐学习(RSS)
    陈亮亮的专栏(RSS)
    朋友
    张恂论 OO
    言之有李(RSS)
    赵伟的小家
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 单元测试之关键问题解答收藏

    新一篇: 调薪之后该思考的问题 | 旧一篇: 老书推荐:架构师应该关注的技术之外的东西

    近来特别关注单元测试的应用。大家可能会笑了,单元测试都N年前提出的了,您老怎么现在才来做呢。是的,单元测试几乎人人都在提,但是真正做好的没几个。

    我们几个同事在讨论这个的时候,发现这里面有很多因素。相信大家也在实践过程中都遇到过。

    单元测试测什么

    这是最经常被提到的问题。往往有三个答案:

    1. 针对代码测试,往往也被称为针对类进行测试。
    2. 针对模块接口进行测试。这种模块往往是没有界面性质的。
    3. 针对业务功能进行测试。类似于模拟需求测试。

    在回答这个问题之前,我们都回顾一下,《测试驱动开发》中,强调的是Story的概念。Story就是一个应用场景。用程序的语言的来翻译的话,就是将需求实例化。

    但是KENT BECK显然没有将这个概念明确化。这样难怪,业务模型,是基于不同层次来说的。如果你只是设计一个类,那么这个类本身也是有需求的。那么这个类的需求和整个软件的需求是不是一致对待呢?

    个人倾向于第三类的测试,一二为补充。

    不过这里重点说一下业务功能的测试难点,那就是模态窗体的测试。这个难点的罪魁祸首是Windows的消息机制决定的。每一个模态窗体都有自己的消息循环(死循环)在处理消息,当从一个模态窗体切换到另一个模态窗体的时候,测试代码就不能继续下去。

    针对这个问题,我的处理方式,就是“解铃还须系铃人”。通过Windows的消息循环就可以穿透这种切换的休克。当然了,处理方式还是比较复杂的。

    单元测试代码不能工作了

    这往往是单元测试不能继续的借口。应该说,很多人还是热衷于进行单元测试的。可是你在后期询问单元测试的作用的时候,他们就会非常遗憾地告诉你,由于需求变更太频繁,单元测试代码已经不能工作了。

    如果你有相似经验,你会非常赞同这个原因。因为,毕竟单元测试侧重的是软件质量,可是我们往往直接面对的是软件进度。没有人会告诉你面对质量和进度,应该选择什么。但是你知道,你只有选择进度。

    几乎所有的程序员都能明白,前期的质量,会节省后期的进度。但是好像老板不知道。至少,很多程序员都相信这点。

    不管怎么说,单元测试代码真的就这么放弃了吗?其实很简单,在你的考核体系中,加上单元测试代码失败的惩罚。因为选择一个技术,只是一个决策问题。而保障一个技术,那就是管理问题了。

    不过,要注意的是,永远忘记单元测试必须时刻进行运行。每一次代码签入的时候,必须运行一次。必须认识到,有了这个自动机制,才能保障你的单元测试持续工作下去。

    单元测试需要设计

    非常多的人都认为,一个系统如果不针对单元测试进行设计,那么其可测试性就会降低,以至于不可以继续下去。

    我并不怀疑设计的必要性,但这个说法最让我不得不怀疑另一个看上去毫不相干的观点:尝试和执行单元测试,需要的是勇气和决心。

    这点其实KENT BECK在XP开发方式的介绍中,就说明了这个问题。作为执行的主体,人的性格很可能影响最终执行结果。

    小结

    软件工程中有很多新的工具,但我们往往发现叫好不叫座,而原因往往也是使用中国的一句古话就是:具体问题具体分析。但是回过头来分析一下,其实很多具体问题都是可以有办法解决的。将这些总结贡献出来,希望我们中国的软件技术走得更快点。 

    发表于 @ 2007年04月28日 00:49:00|评论(loading...)|编辑

    新一篇: 调薪之后该思考的问题 | 旧一篇: 老书推荐:架构师应该关注的技术之外的东西

    评论

    #azuresnow 发表于2007-04-28 18:08:12  IP: 61.191.142.*
    看了半天,好像什么也没说..
    #Stanley_Xu 发表于2007-04-29 13:27:19  IP: 141.24.49.*
    单元测试是诸多测试手段中的一种,主要适用于界面无关的函数库测试。
    窗体行为的测试是GUI测试,由QA团队完成。
    软件测试是衡量软件质量的手段,只有合理或者不合理,不是什么叫好不叫座。
    2007-04-30 00:10:32作者回复
    讨论这些问题的时候,往往是没有结果的。不过,我倒是想让大家一起想想:<br />1.软件开发本是一体的,为什么会分开成QA?<br />2.单元测试能做什么是有组织结构决定的吗?<br />我谈谈我的理解,欢迎大家一起探讨。<br />1.组织结构,往往是管理者为了保障结果,又不能采用技术手段的时候的管理手段。<br />2.单元测试到底能做什么?可能我们是遇到了一些难题,但是,想像一下,如果我们能够解决这些问题呢?
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 韩小明