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

惊讶!连字节这样的宇宙厂都不怎么做 CodeReview 和单测?

  •  
  •   wxiao333 · 211 天前 · 11386 次点击
    这是一个创建于 211 天前的主题,其中的信息可能已经有所发展或是发生改变。
    97 条回复    2022-08-27 13:27:10 +08:00
    Macolor21
        1
    Macolor21  
       211 天前 via iPhone   ❤️ 6
    标题党,这东西也分项目组的啊
    GentleFifth
        2
    GentleFifth  
       211 天前 via Android
    业务变化快,review 和单测成本太高,适当放弃也是没什么问题,毕竟代码是死的人是活得。
    liuidetmks
        3
    liuidetmks  
       211 天前
    字节没有快速迭代能力也达不到今天的规模
    互联网,就是要快。稳定反而没那么重要?
    INCerry
        4
    INCerry  
       211 天前
    要标准和规范软件开发流程和软件工程实战,去外企吧,我朋友那单元测试覆盖率 80%+
    golangLover
        5
    golangLover  
       211 天前 via Android
    只要招的人水平足够,其实有 80 / 9 0 的准确度没有问题
    wxiao333
        6
    wxiao333  
    OP
       211 天前
    @Macolor21 up 主是海外业务的组,我以为风格会跟偏向于海外
    yyysuo
        7
    yyysuo  
       211 天前   ❤️ 18
    写得再精致,业务一变,全部废弃。
    janus77
        8
    janus77  
       211 天前
    正常,就算是外企的敏捷开发也有啊,并不是每个迭代都有单测,也有大版本统一做一次单测的。更别提国产的纯互联网企业了,这不是家常便饭么
    zhuweiyou
        9
    zhuweiyou  
       211 天前   ❤️ 1
    顶多架构组写写吧...业务开发还写单测? 等你测试写完 需求都变了好几回了.
    yangxin0
        10
    yangxin0  
       211 天前 via iPhone   ❤️ 3
    有啥大惊小怪的,十年前我在腾讯的时候,写完自测一下就发布到线上环境,然后去吃饭了。
    frank1256
        11
    frank1256  
       211 天前
    review 啥呢, 等你 gerrit 看出问题的时候, 我代码都提交好几版了, 前端等测试环境都急死了, 我们直接自己打包偷偷上去换包
    HackerJax
        12
    HackerJax  
       211 天前 via iPhone
    复杂的业务逻辑写单测基本不可能,例如,过去一年每个月都有订单的客户自动升级为黄金会员,请问怎么写单测?
    whypool
        13
    whypool  
       211 天前 via Android   ❤️ 1
    ut 纯面向 kpi ,劳命伤财
    seaiaddca
        14
    seaiaddca  
       211 天前   ❤️ 4
    我只好奇这人在 fb 和 amazon 都干过为什么要回国
    hahastudio
        15
    hahastudio  
       211 天前
    这些提升项目质量的方法都是看项目和人的
    没有什么一定要或者一定不要的
    zhouyg
        16
    zhouyg  
       211 天前
    字节双月 OKR ,比 KPI 还 KPI ,根本不给你写单测的时间啊
    iloveoovx
        17
    iloveoovx  
       211 天前
    我记得当年进 fb 参观零食柜里饮料是真的多,瓶装的那种星巴克咖啡之类的随便喝。有个 manager 桌上简直是酒展,威士忌什么的摆满,说一到晚上就开整。食堂也挺多样化的,室内的露天的各式都有。不过这个 youtuber 说一直 wfh 所以估计也没怎么享受到吧
    dreamlike
        18
    dreamlike  
       211 天前 via Android   ❤️ 1
    我们这边确实不怎么写单测 靠在 pre 或者 boe 环境自测,最后找 qa 跑测试看覆盖率,覆盖率过了才能发版,没有后面这一步发流水线的时候 qa 不给点 也就发不了
    BeautifulSoap
        19
    BeautifulSoap  
       211 天前 via Android
    业务变了的话设计业务线上所有层级定义的接口可能都要变,意味着单侧全都要改。如果以 KPI 为导向或者业务变化极快的话,可能需要做出取舍
    wxiao333
        20
    wxiao333  
    OP
       211 天前   ❤️ 2
    @seaiaddca 和她男朋友异地,受不了了,她男朋友办了几次美签都没成功,女孩子想法跟男生不太一样
    zhuangzhuang1988
        21
    zhuangzhuang1988  
       211 天前
    不是基础设施 单元测试我也不想写。
    cydysm
        22
    cydysm  
       211 天前
    单元测试浪费生命(错误
    loverg
        23
    loverg  
       211 天前
    也不是全部吧,我问了几个那边的朋友,说 cr 和单测已经逐步重视起来了,一些海外团队已经实行基于单测的代码合入检测了
    ufan0
        24
    ufan0  
       211 天前
    告诉你一个“秘密”,很多人都不会写单测,会写的也是毫无效果甚至错误的~
    chendy
        25
    chendy  
       211 天前
    核心业务,基础设施,做
    活不过几个月的小功能,做了干啥呢
    dilu
        26
    dilu  
       211 天前
    阿节这里注重快速迭代,着重一个快速,一个产品出来,你可能就一两个月的时间去验证结果,做 ab 实验什么的

    如果你按部就班,把需求提给外部,自己再慢慢悠悠的写单测 那你的业务早就凉了,2 年都没什么业务结果

    而且不仅仅是没有单测,关键是到处都是缝合逻辑和 hack 逻辑
    matrix1010
        27
    matrix1010  
       211 天前 via iPhone
    我很好奇美国的独角兽公司开发写不写测试,至少看以前 twitch 泄露的代码测试还挺多。也许开发不写测试也属于中国特色
    ruiyinjinqu
        28
    ruiyinjinqu  
       211 天前
    我们公司刚要求新增代码单元测试 100%,工作量瞬间增加 40%,为了满足单元测试去改业务代码,为了单元测试而单元测试,无语了
    wxiao333
        29
    wxiao333  
    OP
       211 天前   ❤️ 9
    单元测试不写,根本没法 CI 啊,流程是这样的:

    DEV 要做开发,就要先领故事卡,俗称开卡,自己选好一张故事卡,拉上 BA 和 QA 去过其中的细节,理清细节,然后才能上手开发,开发完后再拉上 BA 和 QA 去结卡,检查卡中的功能是不是都完成了,有问题就被打回去改,直到 BA 和 QA 觉得完善了,才能关卡。。。

    代码质量要求很严格,遵循 TDD ,前端有 lint ,有单元测试(不能偷懒,而且有覆盖率要求),有 e2e 测试(必须写,和 QA 一起看),当你的代码走过这三个流程,提交到公共仓库,CI 自动构建会拉你的代码,再走一遍测试(挂了就要修代码),然后自动发布新版本到 Dev 环境。

    你以为这就完了?还有代码嗅探器,时刻在扫描代码仓库,有两个重复的函数不行、重复率太高不行、使用了骚代码去做类型转换之类的不行、空间内有命名重叠不行。。。。这一套下来,再加上 code review ,菜鸟开发每天一半的时间都在改昨天的代码。

    项目还有规定,CI 不能红过夜,当天的问题当天要修好。。。。
    提交的时候,本地 git hook 会自动跑 lint 和测试,过了之后代码就进远程仓库了,远程仓库会触发 CI ,CI 会自动把本次提交后的代码拉给自己,跑测试、构建、代码质量分析。

    所以只要本地测试能过,提交上去后 CI 会自己跑,这个时候开发一边写后面的代码,一边可以观察上一次提交的情况,上一次挂了就排查。
    大家都是写一会儿,顺便看下 CI
    james2013
        30
    james2013  
       211 天前
    可以理解
    当你正规按照 Review 和单测时,3 个月完成 1 次大版本,1 个月完成 1 次小版本
    不用 Review 和单测,1 个月就完成 1 次大版本,10 天完成 1 次小版本
    而且当技术人员水平高时,区别不大
    Daniel17
        31
    Daniel17  
       211 天前
    写测试太费时间了
    lanlanye
        32
    lanlanye  
       211 天前 via iPhone
    我记得之前看人提过他们在海外的情况,重 QA 轻单测,简单来说就是人肉测试
    kaedea
        33
    kaedea  
       211 天前 via Android   ❤️ 1
    国内因为绩效导向,单元测试和代码审查已经变成开发纯自嗨的模式了。不知道国际大厂怎么搞,但是国内现在是用平价,可稳定运营的人工集成测试和后期 QA 监管来代替这些开发阶段的工作。
    yannxia
        34
    yannxia  
       211 天前
    分团队,我们火山引擎这边,新人的第一次 MR ,大概要卡上半个月。。。
    forgottencoast
        35
    forgottencoast  
       211 天前
    上面评论的基本上都没看完视频吧。。。。
    kera0a
        36
    kera0a  
       211 天前   ❤️ 3
    我在某支付公司,直接线上服务器改 C 代码,然后 make 上线,唯一做的防范是备份了一下 bin
    每次(是的,多次)改我都感觉要去坐牢了
    mango111
        37
    mango111  
       211 天前
    怕啥,维护某亿级流量首页,不也是代码单测和 code review 一个都没有。
    不慌,挂了也就一个上热搜加大家吃不上饭,讲究的就是胆大心细。
    hronro
        38
    hronro  
       211 天前
    @wxiao333 #29 要求这么严格?是国内的公司吗?
    andyL
        39
    andyL  
       211 天前
    希望多一些这种讨论😂
    maotao456
        40
    maotao456  
       211 天前
    我在港企,每个功能必须写单测,而且一定有人 review 。
    别提多舒服了。
    chenxytw
        41
    chenxytw  
       211 天前
    不仅仅是字节啊,你猜为什么现在的软件 bug 那么多,别说 CR 和单元测试了,测试团队都快砍没了,现在拿用户当作免费的测试人员都快成主流了.....
    wxiao333
        42
    wxiao333  
    OP
       211 天前
    @hronro 是外企在国内
    xuanbg
        43
    xuanbg  
       211 天前
    完全可以理解。哪有这个美国功夫去写什么单测啊。哪有人愿意去 review 别人的狗屎代码啊。
    yianing
        44
    yianing  
       211 天前 via Android
    看组
    281x1h2ez12
        45
    281x1h2ez12  
       211 天前
    @iloveoovx 饮料是多,但是喝甜的太多了也不好。食堂的话花样确实多,偶尔有个牛排啥的。洗澡间、roof garden 这些看似很 fancy 但用到的不多。
    icyalala
        46
    icyalala  
       211 天前
    不要说什么单测稳定性,就说快不快吧?
    keith1126
        47
    keith1126  
       211 天前
    字节的逻辑是,人力成本低,而且员工愿意加班,那么,与其让员工花时间写测试跑 CI ,直接让员工人肉运维,出问题 7*24 oncall 不是更划算也更简单粗暴吗?
    lonenol
        48
    lonenol  
       211 天前
    写单侧的时间够再开发一个需求了,所以。。
    nothingistrue
        49
    nothingistrue  
       211 天前   ❤️ 3
    我更惊讶与楼主为什么会认为字节这样的中国互联网大厂会有正规软件过程。中国互联网大厂,从来都是规模大,小聪明多,但软件工业化程度可能都不如小外包厂。出了互联网行业,到软件行业,才有可能有正规过程的开发,不过实际上完全正规的也不多。


    @janus77 #8 不要误解敏捷开发。敏捷开发的测试程度,要远高于传统瀑布开发,可以说没测试就没敏捷。
    msg7086
        50
    msg7086  
       211 天前   ❤️ 1
    单测我无所谓,但是功能测试集成测试我一定要搞。不写测试等项目滚雪球滚大了以后就等着加班修 bug 吧。
    我自己的项目,只要是会跑生产的,一定会有测试覆盖,搞完以后几乎就没有 bug ,也不需要修 bug 。
    当然,因为国内的码农不值钱,加班也不用加班费,所以为什么要搞测试呢,让他们加班修就是了。
    zhc
        51
    zhc  
       211 天前
    感觉还在蜜月期,等她干满一年被卷废就开始怀念 FB 了,就不会这么委婉客气的表达了。
    kiwi95
        52
    kiwi95  
       211 天前 via Android
    在 tt 经历过新业务,老业务,中台系统,没有一个有单测的。最后改造了一个系统加了比较完整的单测然后跑路了。

    字节绝大部分业务代码是没有单测的,代码质量不能说差,只能说混沌一片,没有单测维护所以经常出现一些诡异的 bug
    dangyuluo
        53
    dangyuluo  
       211 天前
    字节跳动的面试时我面过所有公司中最恶心的一家。。虽然拿了 offer 也不想去
    kiwi95
        54
    kiwi95  
       211 天前 via Android
    字节的测试人员大部分是外包,水平只能说点点点还行沟通也费劲。流水线要 qa 点了才能发布很多时候就是走过场,qa 的集成测试发现不了太多问题反而经常出问题导致发布卡壳。


    实际上加了单测后研发的开发体验好太多了,只是单测质量要高。字节的项目要么没有单测要么单测跑不了,要么单测用 boe 的数据和环境,导致单测根本没法保证质量。
    wu00
        55
    wu00  
       211 天前
    简单的业务可能就一行执行 insert 的代码,虽然单测写起来也简单,覆盖率还 100%,是不是觉得除了覆盖率没什么其他意义?
    复杂的业务不知道大伙写单测是属于哪一种:
    主流程走通就行,写一个成功的 case 就行,代码覆盖率可能不达标,[可接受]
    代码覆盖率达标,需要写多少个 case 取决于业务上有多少个分支逻辑,[没有进度压力可接受]
    代码覆盖率达标且尽可能覆盖到所有逻辑点,理想中的单测,[闲得慌]
    Danswerme
        56
    Danswerme  
       211 天前
    @kera0a 好奇问一下,如果真的因为代码 bug 给公司带来巨大的经济损失,程序员需要坐牢吗?
    AyaseEri
        57
    AyaseEri  
       211 天前
    高压连轴转的情况下,Code Review 大多数就是走过场,知道别人写了啥。除非是把调试时的 console.log 代码带上生产这种一眼就能发现的问题。
    Sk8erBoi
        58
    Sk8erBoi  
       211 天前
    学技术真得去软通,code review ,各种测试都有
    ericgui
        59
    ericgui  
       211 天前
    没有测试的代码,你们晚上睡得好吗
    yaphets666
        60
    yaphets666  
       211 天前
    @Danswerme 当然不需要啦,我记得日本有个事情,股市的涨跌搞混了,好像损失几十亿日元吧,也没事。
    ipwx
        61
    ipwx  
       211 天前
    这就是迷信大厂了。

    要我说字节就是小厂到大厂,身份转变了,管理没跟上。对外宣传算法工程师要负责到上线,很自豪的样子,其实就是管理方式低下,还在小厂的模式没有转过弯。
    murmur
        62
    murmur  
       211 天前
    @ericgui 互联网的精髓不就是快速迭代加没有赔偿,所谓的什么两地三机房各种炫酷容灾冗余备份都是停留在课本上,炉石传说据说机房主干线被挖掘机一锅端停服 N 天也是一个赔偿直接叫爸爸

    更何况某些大厂还掌握着封号权
    ipwx
        63
    ipwx  
       211 天前
    算法工程师要负责到上线意味着没有统一的基础设施、算法部署平台,顶多来个 Kubernetes 集群就丢给每个算法组了。是,容器时代、Kubernetes 时代,每个算法组自己搭 Database 成为了可能,但是这样的不专业分工就导致了不可能每个算法组都有完善的质量控制和测试机制。

    字节不还发生过实习生删线上模型的傻逼事情么,还不能说明这套体制有问题吗。
    bloomy8
        64
    bloomy8  
       211 天前
    大惊小怪
    ipwx
        65
    ipwx  
       211 天前
    @murmur 毕竟新兴的宇宙互联网大厂都是娱乐的,怕什么服务质量有问题。

    你要是支付表宕机一小时看不把人骂死。
    holy_sin
        66
    holy_sin  
       211 天前
    业务代码 刚搞完单测 就 AB 负向了
    qeqv
        67
    qeqv  
       211 天前
    @wxiao333 #29 这个测试流程太强了,我们是直接发布到 DEV ,运营自己用不出问题后,直接生产环境灰度,有问题直接回滚,没人管你代码怎么写的 233
    Jooooooooo
        68
    Jooooooooo  
       211 天前
    大厂是业务大, 技术的话说不定.
    qeqv
        69
    qeqv  
       211 天前
    @murmur 游戏公司是这样的,反正游戏资产说是值钱,实际上还不是运营动动手指的事情。而且旧的游戏资源贬值很快,比如炉石,给你发点卡包金币根本不算事,反正新卡包出来你还是得买新的。
    iamqk
        70
    iamqk  
       211 天前
    人工测试成本更低?
    menc
        71
    menc  
       211 天前
    反而不要这么迷信测试,软件工程在发展,TDD 是过去式了,现在测试在软件工程中的地位在逐渐降低。
    Narcissu5
        72
    Narcissu5  
       211 天前   ❤️ 1
    单测这东西对于开发是加速的,因为可以大大缩短测试特别是回归测试的时间。不过楼上也说得对,如果你的老板一天一个想法,基本上开发这边只有做 demo 的时间,测试也就无从谈起了。所以单测的一个隐含条件是业务方得靠谱。
    国内的软件开发水平是很差的,可靠性基本是靠人堆出来的,像 whatsapp 那种几十个工程师一亿多用户在中国是不可想象的。
    ah64zzpk
        73
    ah64zzpk  
       211 天前
    自己不测试,靠 qa 测试没有好结果,qa 不产生 bug ,也不消除 bug ,产生和消除都是开发自己,写的 bug 越多,发现的越晚,消除它们消耗的时间和精力指数级增加,挖的坑永远是自己填。
    xiao109
        74
    xiao109  
       211 天前
    只要代码变的够快,漏洞就没机会出现
    sy20030260
        75
    sy20030260  
       211 天前   ❤️ 2
    在零单测的国内大厂待过,后面出来创业公司严格单测也搞过,深有体会。

    从整个团队的角度,写单测必然是正向收益的。写单测的时间成本真的没有大多数人想象中巨大,项目刚开始写单测可能会占用你 40%-50% 的时间,但随着单测数量变多,有越来越多支持单测的工具方法和示例代码,开发单测的时间会急剧缩短。多花一点时间写单测,省下的是未来大量重复排查、定位问题的时间,绝对的正向收益

    但回归到现实中,在国内大厂搞单测覆盖的困境在于,如果和你协作的同事不写单测,只有你自己写,那这样的单测维护起来既困难,而且实际效益也极低。况且,单测终究是一项花费个人的时间精力,但是带来的收益更多却是团队收益的工作。所以可想而之,在国内这种 KPI 导向、排期倒挂的大环境下,没有人会愿意做这种牺牲小我成就团队的傻子

    你为了快点上线不写单测,那我还干嘛还吃力不讨好地维护单测呢?最后大家只能被动地选择一种对团队收益更低的方案。说白了也是一种 KPI 导向下的内卷形式
    exonuclease
        76
    exonuclease  
       211 天前
    外企大厂的路过 我们有 UT 的 基础库有覆盖率要求 业务代码凭良心写 e2e 测试也有 甚至页面都有
    hyrepo
        77
    hyrepo  
       211 天前
    @wxiao333 老哥不会是天府五街 T 开头外企吧
    Terry05
        78
    Terry05  
       211 天前
    业务线不做单元测试太正常不过了
    byte10
        79
    byte10  
       211 天前
    @ruiyinjinqu 哈哈🤣,有体会,当时因为有 80%的阈值,所以我就干脆生成几个假的 bean.java ,骗过测试覆盖率之后,在下一个版本删除掉这无用的代码。
    xsqfjys
        80
    xsqfjys  
       211 天前
    中国并没有几个真正的软件公司,所谓大厂技术牛也不知道是怎么得出这种结论的,面向 KPI 编程怎么会出优秀的软件
    Yuan2One
        81
    Yuan2One  
       211 天前
    来华为看看,单侧,集测各种,代码不合规范根本都合不进去
    soupu626
        82
    soupu626  
       211 天前
    阿里现在都是靠流量回放来跑 case 了吧,基本等于外置单测,但是流量回放跑 case 容易出一些奇奇怪怪的问题,发布的时候设卡点,整个个发布完了才合进 master ,之前都是在 feat 分支上
    wangyzj
        83
    wangyzj  
       211 天前
    这完全取决于业务的实际情况
    中国公司的扩张速度
    要是再把 review 和 unittest ,就是会把人干死
    shakespark
        84
    shakespark  
       211 天前
    emmm ,多来一点这种讨论软件工程的帖子
    R6A53X
        85
    R6A53X  
       211 天前
    @chenxytw 你是在开玩笑吗? 拿用户当成免费的测试人员都快主流了?这是哪里让你产生这样的看法? 比较精密的工程软件,TOB 的大型采购,你让用户来做测试?
    essicaj
        86
    essicaj  
       211 天前
    这没什么好惊讶的,流水的业务需求,写什么单测。这个版本上,下个版本就砍掉了。产品的需求规划很多时候都搞不好,开发写那么精致的代码做什么?
    lwydyby
        87
    lwydyby  
       211 天前
    为什么我们组 要求 80%单测覆盖率+2 个人以上 codereview(approve)
    JounQin
        88
    JounQin  
       211 天前 via iPhone
    虽然我不喜欢这些大公司,但是离开字节 /阿里你什么都不是。
    chenxytw
        89
    chenxytw  
       211 天前
    @R6A53X 为什么我这么明显的夸张吐槽语你都看不出来我也是无语了。
    问我哪里产生这样的看法,我说得很明白了:“为什么现在的软件 bug 这么多。”
    我作为用户,在不同的软件上都遇到了蠢到难以置信的 Bug ,只要所在的那个功能被测试人员稍微使用一下,就能发现的浅显程度,都被发布出来,我吐槽一下我被当成了免费测试有问题?
    qiaobeier
        90
    qiaobeier  
       211 天前
    TikTok SDK 随心所欲改 API 简直了,通知都没有的,流量那么大的平台这点都不保证,要不是能带来很多流量和$$,早就不用你们了,哈哈
    akira
        91
    akira  
       211 天前
    @qiaobeier 这不就是重点咯。 代码写的再好又如何,有流量么,能赚钱么。。
    foam
        92
    foam  
       211 天前 via Android
    @wxiao333 为什么要时刻扫描仓库呀?唯一的变动在 CI 就知道,多加个 sonar 步骤就好了。
    shadeofgod
        93
    shadeofgod  
       211 天前
    @seaiaddca #14 点开她 youtube 主页里有,就这视频的前一个,每个人个人规划不一样,很正常
    moonkiller
        94
    moonkiller  
       211 天前
    最晚 8 点半下班…
    还能再假点不
    字节 80%的人都不可能
    linghutf
        95
    linghutf  
       211 天前 via iPad
    @nothingistrue 真的是人肉小作坊
    janxin
        96
    janxin  
       211 天前
    国内互联网公司通病,CR 和单测约等于 0 ,大厂也没什么特别变化,只能说好一点但是很多也是靠测试人员堆的。

    好听一点叫拥抱变化
    难听一点叫 XXXX
    pkupyx
        97
    pkupyx  
       210 天前
    核心逻辑还是要 CR 和单测的。你说写个根据主键返回实体信息的没 QPS 没存储量级没安全问题不在意一致性的接口,那确实没单测。
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1124 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 23:44 · PVG 07:44 · LAX 16:44 · JFK 19:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.