业务代码每行都需要单元测试覆盖吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
weo0
V2EX    程序员

业务代码每行都需要单元测试覆盖吗?

  •  
  •   weo0 2020-07-31 09:46:46 +08:00 5663 次点击
    这是一个创建于 1901 天前的主题,其中的信息可能已经有所展或是发生改变。
    34 条回复    2020-08-02 01:11:36 +08:00
    zsc8917zsc
        1
    zsc8917zsc  
       2020-07-31 10:02:26 +08:00
    这么有时间,是家里有矿嘛
    whitehack
        2
    whitehack  
       2020-07-31 10:13:34 +08:00
    一般就对大的逻辑做几个整体测试..结束..没那时间一个一个小功能的抠
    preyta
        3
    preyta  
       2020-07-31 10:14:06 +08:00
    根据项目的规模和要求确定吧
    maichael
        4
    maichael  
       2020-07-31 10:17:05 +08:00
    做取舍呗,根据该功能的重要性来决定覆盖率的要求。
    mmrx
        5
    mmrx  
       2020-07-31 10:22:16 +08:00
    只能说理论说理论,实际论实际
    wenjy
        6
    wenjy  
       2020-07-31 10:29:04 +08:00
    公司的项目,时间充裕的话尽量覆盖(因为维护的人是你自己,不想改代码瑟瑟发抖),外包的话,有单元测试吗??
    janxin
        7
    janxin  
       2020-07-31 10:30:49 +08:00
    不一定,但是要有最低标准
        8
    heguangyu5  
       2020-07-31 11:52:19 +08:00
    如果你把测试覆盖率当作开发者的辅助工具,而不是考核指标的话,这事就好办了。
    heguangyu5
    dilu
        9
    dilu  
       2020-07-31 14:01:34 +08:00 via Android
    顺便说一句,行覆盖率≠开发质量
    lavvrence
        10
    lavvrence  
       2020-07-31 15:31:23 +08:00
    不需要。核心关注一下 if else 、switch 。
    ShutTheFu2kUP
        11
    ShutTheFu2kUP  
       2020-07-31 15:54:46 +08:00
    我反正之后都要做到了,昨天写了个憨逼循环,往公司生产库插入了几亿条数据...
    TtTtTtT
        12
    TtTtTtT  
       2020-07-31 16:07:18 +08:00
    有必要性。
    但是看你们团队的取舍。
    单元测试用于确认你的代码符合你的 design,所以是一份非常有价值的文档和设计。
    一旦出现变更,单元测试和书面文档比,性价比非常高。
    尽管如此,如果测试资源便宜的话,或者变更时效性要求非常高的场合,都可以被省略的。
    FlushHip
        13
    FlushHip  
       2020-07-31 16:10:02 +08:00
    行覆盖太扯了,业务代码多打点日志不香吗,对核心的底层模块也不用行覆盖,函数覆盖就够了。
    dinjufen
        14
    dinjufen  
       2020-07-31 16:20:30 +08:00
    @ShutTheFu2kUP 结果怎样?
    Leigg
        15
    Leigg  
       2020-07-31 16:23:10 +08:00 via Android
    @ShutTheFu2kUP 我笑了,有后续吗
    ZehaiZhang
        16
    ZehaiZhang  
       2020-07-31 16:24:46 +08:00
    @ShutTheFu2kUP 问题不大,不用走人
    azcvcza
        17
    azcvcza  
       2020-07-31 16:27:26 +08:00
    如果尊重开发规律的话,每个函数都加,每个流程都加,每个业务都加那肯定好,但是这样国内又不会算你的 KPI 。国内一般只注重 0->60 ; 60->100 没谁会记功
    nutting
        18
    nutting  
       2020-07-31 16:30:40 +08:00
    怎么可能,测试的逻辑还能通吗。按方法吧
    ShutTheFu2kUP
        19
    ShutTheFu2kUP  
       2020-07-31 16:49:57 +08:00
    @dinjufen 没咋样,昨天删了一天,今天再删一天应该就正常了。
    @Leigg 后续就是疯狂删数据
    @ZehaiZhang 确实,还不至于到要走人的地步...

    主要是 MySql 超过亿级以后查询太慢了,处理一个要等好久,庆幸的是这张表的数据占用字节都比较少..
    Umenezumi
        20
    Umenezumi  
       2020-07-31 17:29:55 +08:00
    @ShutTheFu2kUP 要是进 hive 和正式数据耦合了 你就等死吧 哈哈
    msg7086
        21
    msg7086  
       2020-07-31 18:29:02 +08:00
    最重要的是行为测试。单元测试看情况,本身分得太细的函数我觉得没必要精准覆盖。上层业务逻辑带到就行了。
    Lanayaaa
        22
    Lanayaaa  
       2020-07-31 21:56:57 +08:00
    CY
    huluhulu
        23
    huluhulu  
       2020-07-31 22:14:36 +08:00 via iPhone
    我司要求
    line coverage > 80%
    branch coverage> 60%
    kaneg
        24
    kaneg  
       2020-07-31 22:25:40 +08:00 via iPhone   1
    单元测试是开发人员在自己可控范围对自己的一种保护。除了一些极端的边界情况只有在生产环境才会出现,其他大多数情况都是可以通过单元测试来确保其行为是符合预期的。
    你想,自己提交的代码上线后睡个安稳觉它不香吗?
    nianyu
        25
    nianyu  
       2020-07-31 22:55:37 +08:00
    不需要
    nznd
        26
    nznd  
       2020-07-31 23:01:48 +08:00
    我司 想进测试系统需要 UT>40% 分支
    想出测试系统,做 release 需要 UT>90% 分支 (好像不大于也没事 就是部门 boss 会被批 但是没人试过(
    不过周期一般比较长 一个季度 release 一次 最长的两年多
    lizytalk
        27
    lizytalk  
       2020-07-31 23:06:53 +08:00 via iPhone
    @dilu 但是连行覆盖都保证不了不就是完全没有测试么...
    Perry
        28
    Perry  
       2020-07-31 23:19:50 +08:00 via iPhone
    工具齐全的话,100% 不难
    dilu
        29
    dilu  
       2020-08-01 05:34:47 +08:00 via Android
    @lizytalk 你覆盖了也不保证没有问题啊 覆盖率并不代表开发质量
    scnace
        30
    scnace  
       2020-08-01 11:53:21 +08:00 via Android
    写单测其实可以从侧面帮开发者更好地抽象代码模块
    sariya
        31
    sariya  
       2020-08-01 11:56:44 +08:00 via Android
    不存在的…比较独立的模块可以单测,大部分还是要集成测试,不然鸭子类要写到吐
    mreasonyang
        32
    mreasonyang  
       2020-08-01 15:23:13 +08:00 via Android
    这要看你们有没有 QA 团队
    changwei
        33
    changwei  
       2020-08-01 18:58:10 +08:00 via Android
    看你的用户群体,如果是对内部做的系统,用户通常不会提交太奇怪的数据,那就没必要做,如果是对外做的系统,什么人都用,甚至可能会有黑客来攻击,那肯定得覆盖各种异常输入的逻辑。另外,通常做开发都是防御式编程吧,得假设用户提交数据都有可能是错误或者超范围超值域的情况。
    fishCatcher
        34
    fishCatcher  
       2020-08-02 01:11:36 +08:00 via iPhone
    有些错误场景非常刁钻根本没法定义,或者说测试的时候根本想不到那里会出错,100%覆盖是不可能的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5087 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 03:57 PVG 11:57 LAX 20:57 JFK 23:57
    Do have faith in what you're doing.
    ubao 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