AI 时代谈测试

NcatBot

Ncat 的一个 Bug

就是单纯的接口契约没对上,期望要 QQAPIClient 暴露 set_group_add_request 到顶层,实际上接口在 QQAPIClient.manage.set_group_add_request

因为 QQAPIClient 是符合协议 IQQAPIClient 的实例经过一定的流程组装起来的。

实际上应该要测的是从最开始(裸协议实现)组装起来后有没有这个接口

SEUAIG

带数据库的项目,测试应该是要有专门的测试数据库。

测试应该专门有一个流程,起测试数据库,测试数据库应该是一次性的,用完就丢。

开发环境 & 测试环境可以统一;生产环境必须独立。

怎么测试?

理想情况下,对于前端,应该有 “从 VO 到展示”,“从交互到副作用” 这两类测试;对于后端,应该是以业务场景分割的端到端测试为主,对于复杂的管线(例如事件总线,消息队列)也可以用集成测试检查下契约和数据流之类的。

不过我现在实践下来很少有 Bug 发生回归,所以比较高效的测试方案是人工做业务端到端测试,写测试反馈,然后交给 AI 去迭代修复。但是这样能 Work 的前提应该是设计者需要有足够好的 Taste 和直觉去评判 AI 的修复方案。

大部分时候让 AI 静态检查一下代码逻辑和结构就能发现很多问题。

我觉得更理想的方式是从设计上减少 Bug 回归的风险,通过合理添加日志来提升定位 Bug 的能力,通过隔离来降低风险,而不是依靠测试去兜底。

AutoWSGR

这个项目有不少复杂性在逻辑上,尤其是 OCR 和识图的操作。针对核心函数的单元测试就很重要

我构建了针对 OCR 算法、视觉定位算法的单元测试(数据靠人工标注),让 AI 自行迭代算法,效果很不错。

PMEOW

和 SEUAIG 感觉差不多,CI 测试基本没用,检查下 lint 得了。


持续更新中...