V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
smilearchery
V2EX  ›  程序员

各位在公司做单元测试吗?尤其是客户端~

  •  
  •   smilearchery · 2013-04-22 22:30:59 +08:00 · 5347 次点击
    这是一个创建于 4241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想知道各位在公司是否做单元测试?收益怎么样?
    现在有同事在推这个,个人做Android客户端的,感觉很麻烦不说,还大量占用开发时间,收益过低。个人感觉完善的Code Review和集成测试就足够了~
    各位怎么看?
    25 条回复    1970-01-01 08:00:00 +08:00
    darasion
        1
    darasion  
       2013-04-22 22:55:29 +08:00
    我的经验是:

    对有规范意识的人很有用。
    对喜欢自由创新的人不友好。
    对不理解意义的人反而有坏处。


    貌似单元测试都是在写实际代码前就已经写好的。

    但是就我周围来看,都是写完代码再补单元测试,这样做根本没用,反而有害。
    smilearchery
        2
    smilearchery  
    OP
       2013-04-23 00:48:21 +08:00 via iPad
    @darasion 额。。。写实际代码之前?每月一迭代,项目开始前一周能确定需求不错了〜根本没时间啊
    smilearchery
        3
    smilearchery  
    OP
       2013-04-23 00:49:04 +08:00 via iPad
    @darasion 个人觉得规范靠code review比较靠谱〜
    AntiGameZ
        4
    AntiGameZ  
       2013-04-23 01:48:21 +08:00
    @smilearchery Code Review 靠的是人,人不可信,起码不能在任何时间都可信。

    静态的代码规范(比如变量命名规则,花括号用法等)可以通过静态代码分析工具去确保。

    代码的执行,主要是互操作的部分,用单元测试来确保。

    不管什么工具、方法论,取得收益的前提是充分了解,明白最佳实践和自己实际情况如何结合。有了收益,团队自然会去选择。

    不过LZ既然站在反对者一方,也许有推行者的问题,或者团队大环境的问题,既然没提,不好分析
    pepsin
        5
    pepsin  
       2013-04-23 08:53:21 +08:00
    @darasion +1024,任何技巧在没有深入学习只懂几个名词的人的推动下都是极为可怕的
    workaholic
        6
    workaholic  
       2013-04-23 09:03:06 +08:00
    我估计你的公司应该不错,因为大多数公司是不会花人力财力在这个上面的,做单元测试才是正确的,不能应为大家都不做你就不做了
    williamx
        7
    williamx  
       2013-04-23 09:24:27 +08:00
    单元测试还是很有用的,但是我相信很少有人能在代码之前就写好,尝试过,感觉不可行。
    michaelye1988
        8
    michaelye1988  
       2013-04-23 09:35:56 +08:00
    我也是做android客户端的,没有用过单元测试,不知如何下手啊。。。github上有没有android平台下的带有测试案例的项目推荐下呢?
    darasion
        9
    darasion  
       2013-04-23 10:57:51 +08:00
    @williamx

    好多测试的概念,貌似都是从传统行业继承而来的。这个没考证过。

    反正我以前在机床厂,设计机床画图之后,要请老师傅审图,类似于写代码的code review.

    然后再实际造机床之前,还要设计一系列的工装卡具,类似于测试中使用的 fixture.

    装完机床,还要经过各种调整,检验,类似于修bug。
    xiaoye5200
        10
    xiaoye5200  
       2013-04-23 11:23:33 +08:00
    日企都要单元测试。。感觉蛮有用的,虽然效率极其低下
    insraq
        11
    insraq  
       2013-04-23 11:34:51 +08:00
    Unit Test的主要作用不是保证代码能正常运行,这是Integration Test的作用。Unit Test的最主要的作用是在Integration Test Fail之后,能迅速找到是哪一个Unit的错误导致的。
    missdeer
        12
    missdeer  
       2013-04-23 11:50:40 +08:00
    前段时间我尝试给自己在做的项目加一些UT,结果被(总监)一脸不耐烦地制止了。。。
    tedeyang
        13
    tedeyang  
       2013-04-23 12:12:08 +08:00
    等你的系统运行3年以后你才会发现单元测试的价值。
    wodemyworld
        14
    wodemyworld  
       2013-04-23 13:19:06 +08:00
    @smilearchery 项目就是扯啊扯的,都是一堆破事。。。。。。研发人员嘴边经常一堆fucks
    fly2never
        15
    fly2never  
       2013-04-23 13:37:54 +08:00
    手机端GUI不好做单元测试,更多还是靠UI自动化测试吧。接口部分,数据库部分可以单元测试,这个是有成熟模式的。
    AntiGameZ
        16
    AntiGameZ  
       2013-04-23 13:48:07 +08:00
    @xiaoye5200 一个跑了3年的程序,要去改一个比较核心的功能,这时候如果程序曾经有100%覆盖的单元测试,感觉会很爽的。
    vven
        17
    vven  
       2013-04-23 14:08:34 +08:00
    @michaelye1988 android官网上有个testing的简单教程
    http://developer.android.com/tools/testing/index.html

    github上面的例子也在找,上次看到facebook的android客户端里面带了测试就赶紧打开看看,但是好像写得很简单只有一个测试文件....
    michaelye1988
        18
    michaelye1988  
       2013-04-23 15:41:46 +08:00
    @vven 谢谢你啊: )
    xiluo
        19
    xiluo  
       2013-04-23 19:16:10 +08:00 via Android
    貌似android和gwt的pr和bug fix需要有unit test,而且要尽可能全面,否则会被通知加上之后再来
    smilearchery
        20
    smilearchery  
    OP
       2013-04-24 00:39:29 +08:00
    @AntiGameZ 我倒也不算反对,只是单测可能需占用开发人员RD 30%的时间,看不到明显收益的情况下确实有排斥感~当然,可以先充分了解试试效果~
    smilearchery
        21
    smilearchery  
    OP
       2013-04-24 00:40:14 +08:00
    @darasion 这个解释很新奇~
    smilearchery
        22
    smilearchery  
    OP
       2013-04-24 00:41:23 +08:00
    @xiaoye5200 极其低下怎讲?我看到的数据是单测大概会占用开发人员至少30%的时间
    xiaoye5200
        23
    xiaoye5200  
       2013-04-24 00:47:07 +08:00
    @smilearchery 也不叫效率低下,就是整个流程下来很费时,费力,只为找出一点点微小的bug,虽然有意义但是真没什么性价比
    PrideChung
        24
    PrideChung  
       2013-04-24 01:15:35 +08:00
    我自己的项目是有选择性地写,主要都是验证数据的正确性,开发的时候反正都是要找点数据来试试的,顺手把单元测试写了也不算麻烦。UI不打算写,巨麻烦而且没什么用,界面上的错误很容易看出来。

    现在写单元测试觉得比较麻烦的是对象之间的依赖。例如你要验证一个Model是否能正确地从数据库取数据,必定要依赖数据库连接对象,但一旦依赖了其他对象,这就不是严格意义上的单元测试了,于是有人想到了 mock object 这种东西,用一个假对象来模仿实际的对象,但又怎么知道这个假对象能完美模仿真对象呢,难道我还要为我的测试代码写测试?
    AntiGameZ
        25
    AntiGameZ  
       2013-04-24 13:27:16 +08:00
    @PrideChung UI的测试不是单元测试需要关注的部分。

    强的依赖,比如继承,也是很难用单元测试去解决的。在实施单元测试之前,程序应该有好的弱耦合架构。

    至于Mock,如果从架构中每个单独的Component,Class在外部都OK的情况下,自己没有问题,那从整体上看,也不应该有问题。

    总之,单元测试有很多前提需要去满足。InfoQ网站上内容很多,可以仔细看看。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3502 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:40 · PVG 19:40 · LAX 03:40 · JFK 06:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.