AI辅助的自动化测试开发
使用AI的目标
在云原生项目中,与开发代码不同,测试用例实现的复杂度往往来自于来自:
- 需要管理众多环境配置、上下文依赖
- 跨组件协作中异步行为多,行为、耗时存在不确定性
此外,测试用例编写过程中本身存在以下问题:
- 测试框架/工具存在学习曲线
- 测试用例流程长、重复度高
- 需要考虑测试用例间的并发、顺序执行
- 不确定性场景处理成本高
相比“实现测试用例”,AI在测试中的价值更多的在于“降低非核心工作的时间成本”。基于模型对既有测试模式、测试工具和通用编码能力的知识,AI能够辅助应对测试用例编写中的“不确定因素”,使开发者能够把精力聚焦在测试的设计与质量保障本身。
AI在测试中的能力
AI能做什么很大程度上取决于AI知道什么。
从海量开放代码中AI已经学习了:
- 测试模式:理解常见测试用例的组织方式,包括用例分层、并发执行策略以及测试执行顺序的控制方式
- 测试框架/工具:掌握主流测试框架和测试工具的使用方法及最佳实践(例如 Gomega 断言 API、Playwright 的页面与交互接口等)
- 宏观项目背景:具备对项目所处技术领域的基础认知,(Kubernetes 的核心行为逻辑、常用系统命令以及 Web 相关标准)
借助辅助开发工具的提供工程能力,AI能够进一步做到:
- 上下文感知:通过对项目中已有代码的学习,使生成结果更贴合项目需求与现有模式
- 开发流程整合:接入各IDE模块,参与对开发全流程的效率提升
因此在测试编写中的擅长:
- 生成测试骨架
- 把测试用例步骤翻译成代码
- 写样板代码、处理边界条件
- 根据日志、错误堆栈分析原因,修正代码
而不擅长:
- 设计测试策略、测试用例
- 了解被测试项目内部的原理
如何使用AI
AI工具类型
目前大家开发中主要有两种方式:
- 使用AI服务的Web端 DeepSeek、豆包、ChatGPT
- 使用AI IDE或IDE AI插件 Cursor、Roo Code
| Web AI应用 | AI IDE/IDE插件 | |
|---|---|---|
| 界面入口 | 浏览器 | IDE内置 |
| 交互方式 | 对话 | 对话、内联组件、etc. |
| 反馈方式 | 解释性文本 | 解释性文本+代码内联编辑 |
| 知识边界 | 输入+对话历史 | 输入+对话历史+项目上下文 |
| 响应速度 | 快,直接对话 | 慢,需要整合上下文、内部多轮调用 |
| 使用成本 | 免费就够用 | 有限免费使用,需要付费 |
对不同任务/需求使用不同,方式:
- Web AI应用响应快、零成本,适合临时查语法、创建一次性脚本、局部代码修改。
- AI IDE插件因能读懂整个项目,更适合需要跨文件情景下的代码编写、重构和问题定位。
IDE AI插件与AI IDE又是AI辅助开发的两种主流形式。两者提供的能力趋同,但是在内部工程能力上有所区别。
- IDE插件本质上还是IDE的一个第三方插件,能力取决于VSCode所开放的接口。这意味着IDE只是一个半黑盒状态,需要IDE的能力开放补足其AI辅助生态(VSCode✔️Jetbrain❌)。
- AI IDE通过直接对IDE内部业务逻辑的深度定制(一般是VSCode开源版的fork),允许其直接作为第一方接管整个开发环境,是IDE插件角度无法达到的程度。
主要交互方式
自动补全/内联编辑
直接发生在编辑器内,局部、轻量、响应快的简单编辑工作 (Tab Coding)。可以时新代码的补全,也可以是现在代码的修改。前者由工具自动触发,后者为手动。


Agent对话
通过对话框指示AI的任务,更贴近主流Chatbot的交互形式。有更大范围的上下文理解和丰富的工具调用能力。

AI使用技巧
提示词工程的核心在于明确需求和规格,并通过结构化输入设计,引导AI生成确定性高、符合要求的输出。
明确需求和规格:
明确说明需要AI做什么,必要时说明不需要做什么。对于测试代码,尤其需要限定测试范围、验证点和完成标准,避免生成偏离目标的实现。
帮我给应用管理的微服务写个单元测试,详细一点。 ==> 任务:为 internal/application/client.go 文件生成写单元测试。 要求: - 用golang原生testing+testify断言,必要时使用go-monkey patch - 不要外部http调用,用mock替代。 - 要求输出到client_test.go,覆盖率 ≥80%。
AI IDE默认系统模板中提供了很多作为“优秀”架构师和开发者的要求,用于规范辅助编码的行为和输出风格。可以利用这一机制,将社区的测试规范、工具栈等通用的要求编写自定义模式配置,降低编写相关描述的需要。
提供必要信息
对于AI无法或难以获取的项目内部细节,应当在prompt中主动提供,例如已有工具函数、实现细节、环境配置等。
Pod内curl调用kubernetes接口失败了,定位问题 ==> 在Pod内部通过curl访问Kubernetes接口:
curl -s -k https://kubernetes.default.svc/api/v1/nodes/${NODE_NAME}/proxy/stats/summary -H "Authorization: Bearer $TOKEN" --cacert $CA_CERT失败了,报错信息:curl: (6) Could not resolve host: kubernetes.default.svc。该Pod通过Daemonset部署,yaml如下:apiVerser: apps/v1 …
在AI IDE中提问时,软件自身的工程能力支持自动补充相关信息(文件内容、命令行输出等),因此能够大幅减少这方便的工作,使用户可以专注于prompt本身的编写。
提供示例
示例是对AI约束能力最强的方式之一。通过提供已有测试代码片段,可以显著提高生成结果与项目风格的一致性;通过提供若干预期输入输出情况,可以提升AI对复杂抽象任务的理解。
输入结构化
将背景、目标、约束和输出在形式上或逻辑上进行分层描述,避免把所有信息混在一句话中。结构清晰的输入有助于AI正确理解当前任务。
演示
用AI生成Ginkgo测试结构
输入:示例测试用例
任务:
- 生成测试骨架
- 填充用例
- 运行
- 修复错误用例
如何用起来
- 需要上手快、零配置:
- 使用AI IDE:UX设计以AI优先,低门槛,支持最新主流模型,使用方式与VSCode基本一致。
- 充值plan,通常为月付。
- 首选cursor,或trae等国产平替。
- 对配置、服务来源、成本控制有更多自主权:
- 使用IDE插件+API Key:以开发视角为核心,AI只是辅助插件,提供灵活配置功能。
- 工具往往免费,需要从AI模型供应商或API聚合商购买token额度,Pay-as-you-go。
- API聚合商:通过自建或代理服务,允许用户一个apikey自由切换模型:国际OpenRouter/国内硅基流动等;