大家有没有给中大型项目补单元测试的经验 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
matrix1010
V2EX    程序员

大家有没有给中大型项目补单元测试的经验

  •  
  •   matrix1010
    Yiling-J 306 天前 3022 次点击
    这是一个创建于 306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近正在给公司 10 万+行代码的项目补单元测试&重构,这个是已经开发了 1 年的项目,功能模块比较多,代码文件也有 700 多个。v2 上搜了搜似乎没人讨论过这个话题,所以想了解一下大家是否做过类似的工作,有没有经验可以分享一下。

    ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Go 727 17968 12114 125945 
    第 1 条附言    305 天前
    补单元测试 1 是为了下一步大规模重构,2 是作为一个较为复杂的中/大开源项目我一直认为单元测试是标配
    17 条回复    2024-12-10 16:53:27 +08:00
    FrankFang128
        1
    FrankFang128  
       306 天前
    AI 擅长做这个
    matrix1010
        2
    matrix1010  
    OP
       306 天前 via iPhone
    @FrankFang128 这是想象还是实际经验?有没有实际开源项目或者 blog 可以参考。或者说 AI 是否能处理复杂依赖 mock ,复杂逻辑理解(大于 100 行代码的单个函数)
    FrankFang128
        3
    FrankFang128  
       306 天前
    实际经验
    COW
        4
    COW  
       306 天前
    如果不是 tdd ,补单元测试感觉意义不大,还浪费时间。
    XXWHCA
        5
    XXWHCA  
       306 天前
    意义何在呢?为了 KPI 吗?
    没有动的地方补单元测试有什么意义呢,它已经正常工作了,虽然可能会有 bug 。
    既然重构,那就把重构的部分进行单元测试就可以了
    orioleq
        6
    orioleq  
       305 天前 via iPhone
    AI 可以帮你做掉 80%
    kristofer
        7
    kristofer  
       305 天前
    你主要的问题在哪呢,你想听哪方面的经验?

    补自动化测试的目的是什么,是 KPI 吗,只追求单测覆盖率还是质量与覆盖率两手抓?

    使用 AI 可以帮助你提升速度,但是想 AI 生成完直接用,那是不可能的,还是需要自己改改的。

    这个也没啥经验可以分享呀,时间是必须的,所需时间的长短取决于对单测质量的要求。

    一般都是对新代码或改动的代码追加单测,老代码不动。
    RandomJoke
        8
    RandomJoke  
       305 天前
    要重构的情况,感觉单测意义不大啊,后端的话不如补点 API 端的集成测试,然后重构中写单测
    kelololy
        9
    kelololy  
       305 天前   1
    我补充过,
    背景: 增加云效上 junit 的覆盖率(公司 kpi),分别是 dao 和 service 层的覆盖,使用的 junit 单测和 mock ;
    过程:老项目,代码逻辑负责,mock 的编写和后续维护都耗费时间和精力
    结果:随着公司业务不好,kpi 名存实亡
    hxzhouh1
        10
    hxzhouh1  
       305 天前
    @COW 面向总工办编程。
    hxzhouh1
        11
    hxzhouh1  
       305 天前
    我正在经历一个项目补单侧,规模比你小点,目前 go test cover 已经 85%了。
    1.交给 AI ,
    2.能 mock 的都 mock 。
    ---
    其实约等于糊弄鬼
    matrix1010
        12
    matrix1010  
    OP
       305 天前
    @kelololy 我其实感兴趣的是过程,比如 code base 规模多大,多少人参与,什么级别的人牵头,大家配合度怎么样,花了多长时间达到了什么目标等等。不同的公司产品不同,面向对象也不同,所以是不是 kpi ,要不要做这类的问题因人/公司/产品而异
    jones2000
        13
    jones2000  
       305 天前
    先补测试用例文档
    zypy333
        14
    zypy333  
       305 天前
    @hxzhouh1 #11 为啥
    fredweili
        15
    fredweili  
       305 天前
    跑 jacoco ,哪些最缺补哪里
    orioleq
        16
    orioleq  
       305 天前 via iPhone
    为了大规模重构,难道不是搞自动化的集成测试更重要? 单元测试大都是为了覆盖率和 kpi 吧。
    这种需要业务梳理的测试用例,似乎 AI 也发挥不了太大用处
    kelololy
        17
    kelololy  
       304 天前   1
    @matrix1010 这些问题不太清楚,因为不同项目的开发人员不一样,牵头是 leader 指派一个开发做调研,整个是摸索着前进,我记得是半年内,达到覆盖率 20%;
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5555 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 08:52 PVG 16:52 LAX 01:52 JFK 04:52
    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