让AI帮我写单元测试,覆盖率上去了但 bug 更多了

2026-09-28 / 时事资讯 / 13 阅读

我们团队以前写单元测试特别痛苦。功能写完了,还得花一半时间写测试用例。覆盖率还上不去,老板天天催。

后来上了AI写测试工具,说点结果。

AI确实快。你把代码贴进去,它自动给你生成单元测试用例——正常流程测了、边界条件测了、异常情况也测了。覆盖率从50%直接涨到90%。老板特别满意。

但用了两个月发现问题了。

AI写的测试,看着覆盖率高,其实没测到点子上。

它写的测试全是"正常流程能跑通"。比如你写了个加法函数,AI测了一加一等于二、十加十等于二十。这些测试当然能过,但它没测边界——负数加负数呢?超大数呢?

更关键的是,它不测业务逻辑。你这个函数是算订单金额的,AI只测了输入输出对不对,它不测"这个金额算得对不对"。因为它不知道业务规则。

有次线上出了个bug:订单金额算错了,差了五块钱。我们回去看测试用例,发现AI写的测试全过了。为什么?因为它只测了函数能跑通,没测金额算得对不对。

那AI写测试到底有没有用?

有用。它帮你把那些重复的、无聊的测试用例写了——什么参数校验、空值判断、格式检查。这些写起来烦但不复杂的活,交给AI。

但核心业务逻辑的测试,还得人来写。因为你得知道这个函数是干嘛的、什么情况下会出错。AI不知道这些,它只看代码表面。

现在我们的流程是:AI先出一版测试用例,开发人员补上业务逻辑相关的测试。这样覆盖率有了,质量也有保证。

别拿AI写的测试当万能的。它帮你凑覆盖率可以,但帮你找bug还早。真正的bug都是业务逻辑上的问题,AI看不出来。

说个更具体的坑。AI写测试的时候,它特别喜欢写"理想情况"的测试。比如你这个函数要查数据库,AI写的测试就假设数据库一定返回正确数据。但真实情况是,数据库会超时、会返回空、会返回错的数据。这些异常情况AI不测。

有次我们线上出问题,就是因为数据库返回了一个异常值,代码没处理。回去看AI写的测试,全过了——因为它只测了正常情况,没测异常。

这就是AI写测试的通病:它测"这个功能能不能跑",但它不测"这个功能在出错的时候会不会崩"。而真正的bug,往往都是在出错的时候出现的。

后来我们学乖了。AI写的测试用例,我们都会补一类:异常情况测试。数据库挂了怎么办?接口超时了怎么办?用户传了非法参数怎么办?这些AI不测的,我们自己补上。

做测试这个事,覆盖率是给老板看的,能不能找到bug才是真本事。别被90%的覆盖率骗了——那90%可能都是AI写的无效测试。

#免责声明#

本站提供的一切资源、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。