我现在看 AI 生成的测试,最怕看到一句“覆盖率提升,全部通过”。这句话听着很稳,实际可能只是把代码跑了一遍。测试绿了,不等于业务被验证了;覆盖率高,也不等于关键风险被挡住了。
我会先看断言在验证什么。最可疑的一类,是测试把重点放在函数有没有被调用、某个内部步骤有没有执行,而不是用户最终得到了什么结果。它像是在确认“代码按当前写法走了一遍”,一旦实现重构,即使业务行为完全没变,测试也会跟着坏;更糟的是,业务悄悄错了,它可能依然是绿的。
第二个信号是场景过于干净。AI 很擅长批量生成“正常输入—正常输出”的用例,页面看起来密密麻麻,实际没有异常输入、失败返回、空数据或边界条件。遇到这种测试,我会反问一句:如果这里拿不到数据、权限不足,或者配置不符合预期,系统该怎么办?没有对应验证的覆盖率,往往只是好看的数字。
还有一种更隐蔽:测试数据和实现细节绑得太紧。比如为了让断言成立,测试先按代码内部的处理方式拼出一份“正确答案”。这不是在独立检查结果,而是在把实现复述一遍。代码和测试可能一起犯错,然后一起通过,真的很会制造安全感。
我自己的判断很简单:把这段实现暂时当成黑盒,只看输入、授权条件和可观察结果,测试还能说清业务规则吗?如果说不清,它大概率是在伪覆盖。AI 写测试可以省时间,但测试该覆盖什么,仍然要由理解业务边界的人来决定。
参与讨论
暂无评论,快来发表你的观点吧!