• 请不要在回答技术问题时复制粘贴 AI 生成的内容
weo0
V2EX  ›  程序员

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

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

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