锁定老帖子 主题:你们公司单元测试吗?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-15
HELPHI 和 dot NET 没有单元测试(指用TESTCASE的程序测试),这如何解释?
|
|
返回顶楼 | |
发表时间:2006-01-15
我常写一些行业上的小程序,一个程序也就几十行.
如果我要做单元测试,去写一个测试用例来测这些代码,绝对是吃多了.因为是自已用,写文档都是多余的. 以解决实际问题为主.这才是最重要的! |
|
返回顶楼 | |
发表时间:2006-01-15
看到很多人说测试用例很重要, 但是实际上,我看到很多公司都没有写"测试用例"代码.
为什么论坛上和现实中相差这么大. 可能是我看到的公司绝大多数是小公司. 而这个论坛上的人员大多来自大公司? 或者是研导,博导太多? |
|
返回顶楼 | |
发表时间:2006-01-15
毛毛球 写道 我常写一些行业上的小程序,一个程序也就几十行.
如果我要做单元测试,去写一个测试用例来测这些代码,绝对是吃多了.因为是自已用,写文档都是多余的. 以解决实际问题为主.这才是最重要的! 说句难听的话吧: 所以你也就只能写几十行的程序而已。 |
|
返回顶楼 | |
发表时间:2006-01-15
毛毛球 写道 看到很多人说测试用例很重要, 但是实际上,我看到很多公司都没有写"测试用例"代码.
为什么论坛上和现实中相差这么大. 可能是我看到的公司绝大多数是小公司. 而这个论坛上的人员大多来自大公司? 或者是研导,博导太多? 你这些话很有意思,“存在即合理“,这句话希望不要误导太多的人。 追求上进,追求进步应该是我们追求的目标,而不是着眼于既成的习惯。 |
|
返回顶楼 | |
发表时间:2006-01-15
dhj1 写道 firebody 写道 万千理由也不能成为“不作单元测试“的依据。
作不作单元测试已经不值得讨论,反而,值得讨论的是怎么作有效单元测试。 也可以讨论所谓集成单元测试,纯粹单元测试....等等之分,现在,看到这么多单元测试的名词,可是很容易让人犯晕的。 看看单元测试的写法和设计,就知道高低手之分了,最近我很遗憾的发现自己还是单元测试的低手。 如果有人跟我说“要不要单元测试“?如果说因为逻辑简单不必测那也就罢了,如果仅仅因为时间不够作为原因,这是绝绝对对不允许的,如果硬是要在时间上作百般托词,那么,就没有讨论的必要了。 道不同不相为谋。 记忆中比较深刻的是,去一个国营单位技术中心作培训,里面有几十位一直搞技术的老手,我们当时让他们练习写单元测试的代码,练了几次,他们大多觉得这些代码是多余的,因为要做一个功能上的扩展,多于早已经熟悉此行业的人来说,华1-2天就可以搞定了,可是却要花这么多时间在这些不是真正能够在产品上运作的测试代码上工作,他们觉得浪费时间,因为总体来说,他们要考虑怎么写测试,(而即使不用写测试,他们脑子里面都清清楚楚知道该如何写那些代码来完成那个功能。) ,加上这个测试的代码,他们要花多1天/半天的时间来写。 他们觉得这样的开发模式是否合理。 诸位,如果你们面对这样的质询,你们该如何回答呢? (当时,我记得我用很高的音量站起来跟满满一屋子的人说了几分钟的话,这些话几乎都是你来我往的以质询的方式针锋相对。虽然我不知道他们是否真正理解单元测试在软件开发模式中起到如何重要的作用,但是我觉得我已经让他们不能回答我的质询,即使他们心里还是疑惑或者不理解) 这种现象很普遍,很多公司只做一种类型的软件, 开发人员都比较熟悉整个程. 所以有些公司就不写"测试用例"的代码. 作为软件,测试是肯定要测的. 手工录些数据测试的方式是比较多的. 我前面发的贴,所说的不测试,是指没有写测试用例代码. 而不是指开发程序不作测试. 开发出来的软件不测试,是不可理解的. 我的意思是很忙的时候,就不会写测试用例代码. 而是用软件工程通用的方法,作些黑盒测试. ok,终于不空对空了。 那继续讨论的话题应该是怎么做有效的单元测试。 而不是是否要做单元测试。 不过对于这样的论坛上的大家七嘴八舌的讨论,我越来越失去兴趣,主要原因是容易空对空,误解歪曲,或者太发散了。 以后讨论的时候,主题应该越来越小,而不是越来越发散。 |
|
返回顶楼 | |
发表时间:2006-01-15
dhj1 写道 firebody 写道 毛毛球 写道 我常写一些行业上的小程序,一个程序也就几十行.
如果我要做单元测试,去写一个测试用例来测这些代码,绝对是吃多了.因为是自已用,写文档都是多余的. 以解决实际问题为主.这才是最重要的! 说句难听的话吧: 所以你也就只能写几十行的程序而已。 学术有专攻,别人写的这种程序,非必我们就会写.特别是行业方面的. 我认为这扯不上学术的问题,这是一种计算机开发基本准则的问题。 我这里不提软件开发,而提计算机开发,是想表达,非但软件,即使硬件都会有校验/测试电路的存在。 可以对没有测试的软件系统宣判死刑, 这个死刑为了避免争议,我给她一个定义:低产率不稳定的软件系统 但是那些所谓的几十行的小toolkit之类的玩具不在讨论范围内。 |
|
返回顶楼 | |
发表时间:2006-01-15
我现在觉得:如果不施行TDD,就很难写出来高质量的单元测试,似乎看起来TDD是施行有效单元测试的一个必要前提。firebody提出一个问题,就是集成单元测试和单元测试的区别,我的想法如下:
例如以Hibernate/Spring/Webwork为例,似乎更容易做集成单元测试,因为我们可以在测试用例的setUp方法里面初始化Spring容器和HSQLDB的in-memory模式,整个一个完整的不依赖于Servlet的容器就跑起来了。 但是这种测试似乎应该归入集成测试,而不是单元测试。单元测试应该关注一个类的单一职责,按照这样的方式,例如我要测试一个Spring的bean,就必须隔离Hibernate的影响和数据库的影响,因此我必须编写大量的mock对象和stub对象来模拟接口行为,但是这样的模拟测试意义有多大呢? 我感觉,如果我们编写一个通用软件框架,或者软件产品,这么细粒度的单元测试有其必要,但是对于一般的应用软件来说,这么细粒度单元测试有必要吗?我感觉只写那些集成单元测试似乎就足够了。 不知道大家怎么看? 另外我非常同意firebody的看法:单元测试的编写水平可以反映一个人的OO编程水平高低,从这个意义衡量,我自己确实只能算低手。 |
|
返回顶楼 | |
发表时间:2006-01-15
dhj1 写道 我从来不否定,作为一种正规的开发过程, 测试写成代码, 这是很有意义的.
除了反复测试时再来的方便以外, 代码的存在,为以后的维护和复查程序的错误,提供了很详细的内容. 我希望我的每个CLASS都有一个TESTCLASS. 只是理想和现实有一些差别而已. 你认同就可以了,至于你说的现实,或许更多是出于你自己的认识而已,你说出的现实总归是一种给自己不写测试的理由吧,现实确实是现实,但是我还想打击你一下: 没有从更高更深刻的意识高度上认识单元测试的本质,那么总归可以给不写单元测试找出一千个理由,当然,如果你认识不到写单元测试的重要,不用一千个,一个理由就可以让你放弃写单元测试了。 当你从最深刻的意识程度上认识到单元测试的重要行了,我想无路任何困难,你都会构思单元测试的进行。 说到底,还是你没有很真正认识单元测试的重要性。 另外,我还是强调:几十行的toolkit不再讨论之列。 |
|
返回顶楼 | |
发表时间:2006-01-15
robbin 写道 我现在觉得:如果不施行TDD,就很难写出来高质量的单元测试,似乎看起来TDD是施行有效单元测试的一个必要前提。
我的理解是不用强调谁先谁后,重要的是认识到他们两个是相辅相成的,构思测试就是构思设计,构思设计的同时也必须要构思测试的进行。 |
|
返回顶楼 | |