乐于分享
好东西不私藏

Redis作者antirez谈AI如何辅助软件测试

Redis作者antirez谈AI如何辅助软件测试

Redis 作者 antirez 分享了一篇文章,关于AI时代如何进行软件自动化测试,其中观点值得尝试。

antirez 首先认为 Automatic Programming 如果使用得当,在某些用例下,会大大加快软件编写速度。虽然 AI 生成的代码在质量与复杂度控制上,还无法和顶尖老手相比,但大多数软件并不需要完美,所以 Automatic Programming 编写的代码实际上非常不错。

使用AI编写软件时,需要在质量和时间之间采取平衡,这种冲击实际上非常强,antirez 也表达了这个观点,过去几个月的任务现在要压缩到几周。

但任何软件开发都需要测试,所以AI时代带来巨变的一个领域是软件测试,如何利用AI进行自动化测试呢?

传统软件测试分两种形式,分别是局部测试和集成测试。传统测试是一个复杂的工程,比如:

  • • 在 Redis 中测试 SET foo 10 是不是能被 GET foo获取到,和复制场景执行该测试完全是两回事
  • • 除了根据测试套件进行自动化测试,还有人工测试流程,弥补自动化测试潜在的漏洞
  • • 测试套件也不可能覆盖所有的场景
  • • 集成测试结构上的缺点,比如无法处理复杂时间关系问题、环境问题,同时有些检查必须借助人肉观察

总之传统测试是非常复杂的一个系统工程。

antirez 随之分享了他的AI辅助测试观点,核心思想就是创建一个 Markdown 文件,然后让AI智能体扮演测试工程师的角色,对软件新版本进行手动测试。

比如 antirez 介绍了如何让AI智能体测试 DwarfStar,后者是一个开源的LLM推理引擎,在 Markdown 文件中,要求智能体检查新版本新增的提交 Commits,然后写下一些指令,比如:

  • • 检查分布式推理能不能在MacBook A 和 MacBook B 之间正常工作,确保输出一致,且推理兼容两台机器上所有的 GGUF 文件
  • • 确保新版本不存在软件性能的问题

可以看出来,这种测试方式非常有弹性,antirez 仅仅使用了很少的指令,仅仅提供SSH连接、路径信息,也不会告诉AI智能体预期的性能是多少,因为这是一个随软件版本迭代而变化的动态目标,同时也没有给集成测试下太多的质量。

这种富有弹性的测试,让AI智能体深入到软件“心理层面”,比如能让AI识别出新功能,或者识别出一些相对草率的设计,从某种程度上提高了软件测试的质量,从而弥补了Automatic Programming潜在的编码缺陷。

欢迎大家进群聊聊技术,目前群已满,可以参考这篇文章邀请进群