「方法论」既没有单元测试,也没有固定周期的 Code Review, 有可能做出稳定的产品吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
soruNis

「方法论」既没有单元测试,也没有固定周期的 Code Review, 有可能做出稳定的产品吗?

  •  
  •   soruNis 2014 年 5 月 28 日 3866 次点击
    这是一个创建于 4349 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前公司现状是两者都没有,当然了由于还没有到可以发布的程度, 产品是否稳定也无从谈起。
    各个开发的技术水平都不算含糊的, 每个人都还算是认真的。
    但是流程上少这些严格的校验环节, 真的没问题?
    是否真能开发出某某革命性功能先不说, 就算真的开发出来了, 10位数用户一用就崩溃, 那又有什么意义呢?
    21 条回复    2014-05-29 06:08:19 +08:00
    MasterYoda
        1
    MasterYoda  
       2014 年 5 月 28 日
    10位数的用户是指十亿量级?
    没有单元测试,但是如果有非常靠谱的黑盒和白盒测试人员,也许也能保证稳定性,还要看项目的大小。
    akira
        2
    akira  
       2014 年 5 月 28 日
    小项目有可能。
    多人协作的大项目,估计够呛。
    sunus
        3
    sunus  
       2014 年 5 月 28 日
    三五个开发人员,没有单元测试和code review一般都不是什么问题。主要还是靠能力

    几十个开发的话,就需要有流程来辅助了。

    不过最终还是要看人,毕竟流程也是人制订并且执行的
    akfish
        4
    akfish  
       2014 年 5 月 28 日
    单元测试仅仅是初级阶段,举手之劳而已,很多时候也就只对CRUD的业务有效。
    一定规模项目仅仅是单元测试都还不够,更何况完全没有。
    不要太相信个人能力,在复杂系统面前谁的能力都不够用。
    有可靠的测试只会事倍功半,别怕一开始那点麻烦。

    推荐一个Google Talks的讲座,关于Google如何进行连续集成测试的:
    soruNis
        5
    soruNis  
    OP
       2014 年 5 月 28 日
    @MasterYoda 写错了, 是2位数; 计算量是有点大,目测不到 100 人用就能把它搞崩掉
    akfish
        6
    akfish  
       2014 年 5 月 28 日
    写错了,事半功倍,=_=
    soruNis
        7
    soruNis  
    OP
       2014 年 5 月 28 日
    @MasterYoda 以前还有 QA 现在是需求团队直接测了,他们当然是最理解需求的,但是对软件上的测试要点又能知道多少 。
    soruNis
        8
    soruNis  
    OP
       2014 年 5 月 28 日
    @sunus 人是不多,但是时间久。 代码量累积下来, 隐患也会一点一点累积下来吧。
    MasterYoda
        9
    MasterYoda  
       2014 年 5 月 28 日
    @soruNis
    需求团队测和QA团队测不一样啊,需求团队最多也就是个功能测试,还覆盖不全。
    引入职业的QA团队和完善的自动化测试很必要啊。
    当然搞一个jenkins玩持续集成也可以。都会提高程序的稳定性。
    soruNis
        10
    soruNis  
    OP
       2014 年 5 月 28 日
    @akfish 是的, 流程规范化可以保证最低的标准不被打破。 而强调人个能力的观点更多的应该是怕教条的流程规范限制了开发效率。
    akfish
        11
    akfish  
       2014 年 5 月 28 日
    @soruNis 我的感觉是,抵触测试的开发人员,一般是不懂测试,或者太懒就没去正确的实践过。
    根据我的经验,有(合理的)测试只会提升开发效率,而不是相反。

    举个最基本的例子就是改了代码,要编译运行验证正确性,没有测试的就需要人肉去捅鼠标捅键盘,反复进行重复的操作,而且还无法保证可重复性。这个过程费时费力,还破坏编码节奏。
    而如果有良好的测试流程,配置完善,做到自动化测试,那么修改一行代码只需要编译,测试自动运行,立即就能看到是红是绿,立即得到反馈,甚至键盘输入焦点都不用离开IDE。
    这两种模式的效率高低显而易见。

    所以我现在就算是自己撸着玩的小项目,都会写测试。
    griffinqiu
        12
    griffinqiu  
       2014 年 5 月 28 日
    8位数的项目,少量的底层代码单元测试。code review也很少,表示很稳定
    soruNis
        13
    soruNis  
    OP
       2014 年 5 月 28 日
    @akfish 是这样的,我所希望的情景也正如你所说。 至少在 daily build 完成后自动测试, 很多问题都可以马上发现。 悲伤的是, 由于现行代码中那一点残缺过时的测试代码, 自动编译脚本中不得不加上选项"-x test"忽略测试。

    目前产品的可靠情几乎完全是靠需求组的“不完整黑盒测试”保证的。 当然,即使是这么做, 还是有修不完的 bug 的。
    hxgdzyuyi
        14
    hxgdzyuyi  
       2014 年 5 月 28 日
    code review 还代表着有第二个人熟悉过这段代码。 不然走一个人就等着哭吧。
    akfish
        15
    akfish  
       2014 年 5 月 28 日
    @soruNis 所以如果要推广测试的话,尤其是在对测试比较抵触懒癌晚期患者较多的团队中,只有渐进式的搞,并且一定要搞得合理靠谱。
    不然一被抓到点把柄说影响开发效率了,立即反弹然后又不了了之了。
    soruNis
        16
    soruNis  
    OP
       2014 年 5 月 28 日
    @hxgdzyuyi 哈哈, good point
    ivvei
        17
    ivvei  
       2014 年 5 月 28 日
    单元测试能测出多少人使用会崩溃么?我以为单元测试只是测试基本功能是否可用,对于多少数量级的用户不起作用的啊。你说的那个得压力测试吧?
    SoloCompany
        18
    SoloCompany  
       2014 年 5 月 28 日 via Android
    [技术水平不算含糊]
    通过单元测试来保证代码及接口设计的质量,更多情况下是提高工作效率而不是降低,这难道不是一个码农技术水平的体验么?真正牛逼的人不会不屑于做这些和抗拒,反而应该是更重视更欢迎才对
    soruNis
        19
    soruNis  
    OP
       2014 年 5 月 29 日 via Android
    @ivvei 压力测试是也必要的。那单元测试与用户量有毛关系呢: 单个用户的行为往往是很有限的,用户量到一定程度时可以覆盖大部分功能点,这时因没有单元测试或 qa 而被掩盖的问题就会暴露出来。
    soruNis
        20
    soruNis  
    OP
       2014 年 5 月 29 日 via Android
    @griffinqiu 那是怎么做到的, 是有严谨的测试团队吗?
    soruNis
        21
    soruNis  
    OP
       2014 年 5 月 29 日 via Android
    @akfish 有一种“说出来都是泪啊”的感觉
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     895 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 64ms UTC 21:47 PVG 05:47 LAX 14:47 JFK 17:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86