V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
matrix1010
V2EX  ›  程序员

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

  •  
  •   matrix1010 ·
    Yiling-J · 2 天前 · 1654 次点击

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

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

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

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

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

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