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 得了。
持续更新中...