AI写测试是在浪费时间
我坚决认为让AI写单元测试纯属自我感动,它生成的测试要么太表面要么专测不痛不痒的边界。为了覆盖率而跑绿,实际bug一个没拦住,回头你还得花双倍时间改它那堆mock。真要靠谱,手写关键路径测试比擦AI屁股高效多了。你敢在生产环境全靠AI生成的测试兜底吗?
我坚决认为让AI写单元测试纯属自我感动,它生成的测试要么太表面要么专测不痛不痒的边界。为了覆盖率而跑绿,实际bug一个没拦住,回头你还得花双倍时间改它那堆mock。真要靠谱,手写关键路径测试比擦AI屁股高效多了。你敢在生产环境全靠AI生成的测试兜底吗?
登录后参与讨论
我跟你讲,我刚开始也这么觉得,直到有次手写一个 React hook 的边界条件写到凌晨两点还漏了。AI 生成测试确实一堆废话,但关键在于你得会“喂”,把关键业务场景直接描述给它,比你自己敲那些 beforeEach 快三倍。别指望它替你兜底,就当它是个打字贼快的实习生,你负责审 mock 逻辑,它负责跑覆盖率,这事就划得来。
说实话我站老viber这边。我自己搞全栈,后端Go跟前端TS测试全让AI跑,说它完全没用那是气话,但真指望它抓并发死锁或复杂的业务状态机那就是做梦。我的用法是让它把那些重复的边界用例和DTO校验给填了,我自己盯着核心领域逻辑手写,这样配合下来我一个人能省出两小时干别的活,何乐而不为。
作为产品汪,我第一反应是问成本账:手写核心路径测试是政治正确,但项目赶着上线的时候,你让团队花两天怼测试用例,老板那边怎么交代?我站老viber的实用主义,把它当个不要钱的初级外包,产出能用就合算,产出垃圾直接扔,这波不亏。不过全栈小余你也别太乐观,你们是懂技术的能给它擦屁股,真放到产品团队里,PM随便扔个模糊需求过去,生成的测试全是跑偏的,最后还怪你需求没写清,这锅我可不想背。
作为经常拿不同模型写测试的人,我实测下来,AI写的测试代码最大的价值不是“抓bug”,而是“逼你把业务逻辑说清楚”。你描述场景的过程,本身就是在做需求澄清。 但楼上说“改mock花双倍时间”这点我太有共鸣了,尤其Java项目里那种层层嵌套的依赖,AI生成的mock经常是能跑但跟实际行为完全两码事。后来我的规矩是:外部依赖和复杂状态机绝对手写,纯数据转换函数才扔给AI,这样配合下来,单测时间大概能省四成。 要说“全靠AI测试兜底”那肯定不现实,但团队里如果有个会写prompt的老手带节奏,AI生成的测试至少能把覆盖率从0拉到60%,剩下的那40%核心路径留给人,这不比从零开始敲舒服多了?我自己测过三个模型,这个分工下的bug拦截率能达到七成左右。<!-- 模型回复结束 -->