ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

大模型+Python自动化测试:AI测试开发与智能体实战指南

大模型+Python自动化测试:AI测试开发与智能体实战指南 如果只看标题会觉得“AI测试”和“大模型测试开发”这类词又是在概念包装。真正把 Claude Code、TRAE、Deepseek 这条链路接到 Python 自动化测试项目之后我的判断反而很简单它们带来的最大价值不是替代测试人员写用例而是让测试脚本的开发、调试、执行、修错变成一个人和智能体共同推进的闭环。这篇文章适合正在做 Python 自动化测试的人也适合做性能测试、车载测试、嵌入式测试的项目同学。看完后不会得到一堆热门工具的安装清单而是一条从单接口开始逐步扩展到不同测试领域的实操路径。先说一个核心观点AI 测试能不能落地不取决于模型多聪明取决于你给它多少边界。模型负责处理“怎么写、怎么改、怎么读日志”人负责处理“测什么、不能改什么、什么结果才算通过”。下面按我实际验证过的顺序拆开讲。1. AI测试开发的真正难点不是找工具而是重排测试工作流很多人看到“AI测试”的第一反应是让大模型自动生成一堆用例然后一键执行。这个想法不是完全错但会很快撞墙。因为测试开发真正烧时间的从来不是“第一条用例”而是后续的调试、环境确认、数据准备、断言调整和维护。1.1 用例生成只是最外层的交付物用 Claude Code、Deepseek 这类模型写一个 pytest 函数几秒钟就能出来。但这只完成了一个测试方法的最表层。真正要判断的是这个接口的入参规则从哪里来异常场景需不需要覆盖断言是校验状态码还是校验数据库字段用例跑挂了之后是代码问题、数据问题还是环境问题这些内容不会从“帮我生成测试用例”这句话里自动冒出来。如果你只把大模型当成用例生成器最后得到的基本都是结构正确、业务空洞的代码。我更建议把测试开发拆成四段拆解测试需求明确要验证什么。初始化测试数据确认被测环境可用。让 Agent 根据接口定义、日志、历史用例生成或修改脚本。执行脚本失败后让 Agent 自己读日志并提交修改。我刚才刻意把第 3 步放在了 1 和 2 的后面。因为在大模型参与之前前置条件必须已经稳定。1.2 不同岗位适合交给 Agent 的任务不一样接口自动化测试人员可以重点让 Agent 做参数组合、断言生成、超时处理、批量报告整理。性能测试人员可以让 Agent 分析压测日志、整理曲线规律、生成瓶颈排查清单。车载测试和嵌入式测试则需要更多自定义脚本因为这类测试通常涉及设备、串口、总线日志和硬件环境不适合用通用用例模板。判断任务能不能交给 Agent标准很简单结果能不能被执行环境验证比如测试能否跑通。失败原因是否集中在代码和日志层面。有没有清晰的输入输出比如一个接口文档、一串原始日志。是否涉及业务最终决策如果是人必须保留控制权。这一条我放在最前面是因为后面所有工具链的搭建都要围绕这个边界来。2. 把大模型接进测试开发之前先理清 Claude Code、TRAE、Deepseek 的分层关系这里有一个容易混的点Claude Code、TRAE、Deepseek 不是同一个层面的东西。把它们放在一个标题下的时候必须区分谁负责模型推理谁负责操作执行谁负责编辑器集合。2.1 模型层、Agent 层、执行层各干各的事我一般这样理解Deepseek 这类模型属于模型层。它负责理解需求、生成代码、解释日志。Claude Code 这类命令行智能体属于 Agent 层。它能读取项目文件、执行命令、根据测试结果迭代修改。TRAE 这类 IDE 智能体属于编辑器 Agent 层。适合人机协作查看代码、做重构、调整多个文件。pytest、Locust、自研的串口脚本属于执行层。最终决定测试是否通过。这个分层逻辑比具体选哪个产品更重要。因为模型会更新智能体工具会换但只要你把“谁来思考、谁来执行、谁来判断”分清楚替换成本就很低。我在实测中的建议是不要一上来就追求全家桶。个人电脑上测试开发先选一个命令行 Agent 加一个开源或本地模型接入或者直接用 IDE 智能体再配合已有 pytest 环境就足够跑通。如果要接入 Deepseek不需要一开始就做私有化部署。先用 API 或平台提供的兼容接口跑一个小项目验证代码生成质量、响应速度和成本再考虑是否本地部署。原始材料没有说明你用的是哪种部署方式所以落地时先确认模型接口和费率别拍脑袋。2.2 先准备一个最小项目骨架使用 Agent 时最影响成功率的不是提示词而是项目结构。如果测试代码、日志、公共方法、测试数据全部堆在一起Agent 改一个文件就可能破坏另一个文件。我建议对照下面的结构去整理test-project/ ├── config/ │ └── test_env.yaml ├── testcases/ │ ├── api/ │ ├── performance/ │ └── embedded/ ├── common/ │ ├── client.py │ └── assertions.py ├── data/ │ └── mock_data.csv ├── logs/ ├── reports/ └── conftest.py这个结构不是为了好看而是为了告诉 Agent哪些路径可以动哪些路径不要碰。命令行 Agent 在读取上下文时会优先看相对路径和配置。如果项目目录混乱同样一句“帮我修复失败用例”它可能会一直去猜文件关系。3. 用命令行 Agent 跑通第一个接口测试小样本、短反馈、看日志在 Claude Code、Codex、Deepseek 这类能执行命令的工具里最容易犯的错误是第一次就给一个超大任务。比如“把整个系统的接口自动化写出来”。这个任务会立刻超出上下文限制产出大量表面正确的代码。3.1 先跑一条稳定的水试用例我每次都会按三条来约束选择被测系统中状态最简单的接口。固定测试数据至少保证连续五次执行结果一致。设置好超时和重试避免网络抖动造成误判。如果连稳定接口都跑不稳问题大概率不在 Agent而在前置环境。这时候不要继续让 Agent 写更多用例先解决环境问题。使用命令行 Agent 的时候任务描述要具体到输入输出。例如读取 api/test_login.py 的测试代码。 执行 pytest testcases/api/test_login.py。 如果失败把日志中第一条 Traceback 和断言错误摘出来。 修改代码后再次执行直到通过。这条指令的价值在于它规定了读文件、执行、读日志、修改、再执行五个动作。Agent 不会跳到不相关的地方。3.2 不要让它自己决定所有边界我发现命令行 Agent 在生成接口测试时喜欢默认加很多内容把失败原因复杂化。比如同时测鉴权、造数据、校验数据库一旦报错很难判断是测试写错还是业务变更。规避方式是把首轮范围收窄。先只验证状态码和响应结构再逐步加字段校验。能过之后再让 Agent 根据 OpenAPI 文档或接口定义文件生成异常参数组合。这样做的原因是异常用例失败率远高于正常用例。如果一开始杂糅在一起Agent 很容易把“断言错误”当成“需要修改测试代码”而真实原因可能是被测接口返回了预期内的错误。所以顺序比覆盖更重要。3.3 判断成功的标准是什么测试通过不能只看“exit code 0”。我会额外看三个东西pytest 是否输出了通过数和耗时。失败用例有没有产生足够清晰的日志。Agent 在几次修改内收敛如果连续四轮都在改同一个问题就要停下来检查需求和环境。这里大概率不是 Agent 能力问题而是上下文被污染了比如同时加载了多个版本的接口定义、本地有历史测试缓存或日志文件太大。先清理再试不要和 Agent 硬耗。4. TRAE 这类 IDE 智能体适合处理多文件测试工程命令行 Agent 适合快速迭代但当你需要同时查看被测项目源码、测试脚本、配置文件、历史报告时IDE 智能体体验会更好。TRAE 这类工具出现的价值不是替代命令行工具而是解决上下文可视化的问题。4.1 CLI Agent 和 IDE Agent 怎么分工我自己的用法是命令行 Agent 处理“跑一下看结果修到通过”这一类短回路任务。IDE Agent 处理“重构公共方法、批量修改接口调用、追踪断言失败原因”这类跨文件任务。Deepseek 等模型负责生成代码解释和方案建议但具体执行仍由测试工具链决定。这样分工的原因是CLI 工具擅长精确执行IDE 工具擅长多文件联合编辑。如果你让 IDE 智能体反复执行 pytest它一样能做但视觉反馈和文件管理会更重不如命令行干脆。4.2 多文件工程里的常见坑用 IDE Agent 重构测试目录时最容易遇到的是Agent 看到新的测试框架版本擅自升级语法。复制文件时把 fixture 名字改错。公共断言函数被多个测试引用Agent 只改了一处调用。规避办法是在任务里写清楚“保持公共接口不变”。比如common/assertions.py 里的 assert_success 方法签名不能改。 修改所有调用方让它们继续使用原方法名。 不要升级 pytest 版本。IDE Agent 最值得用的场景是代码解释和影响面分析。你可以让它先画出一个被测接口被哪些测试引用的范围再决定新增用例要放在哪个目录。注意我不建议让 Agent 自动做大规模跨模块重构除非你的单元测试覆盖足够好。5. 不同测试方向的落地思路性能测试、车载测试、嵌入式测试标题里还有三个非常具体的测试方向我分别说一下自己的处理方式。这三个方向的共同点是不能只看测试代码还要关心被测环境和日志格式。5.1 Python 性能测试性能测试和功能测试最大的区别是结果有波动。用 Locust、JMeter 或自研脚本做压测时Agent 不能只负责“把测试跑起来”还要能解读监控数据。我实测时一般分两步用小并发跑通场景脚本比如 10 个并发持续 2 分钟。确认脚本稳定后再逐步增加并发、查看响应耗时曲线和服务端错误率。让 Agent 参与时最有用的是让它分析压测日志里的异常分布。例如哪些接口的 5xx 比例最高、哪段时间的响应时间出现拐点、有没有内存或超时错误。不要在第一次压测时就让它自动调并发因为梯度过大很容易把服务压出未知故障后续排错成本非常高。参数判断上至少要看 P50、P95、P99、错误率和吞吐量。P95 接近 P99 不一定代表稳定还要看连续波动区间。Agent 可以把这些指标汇总成一张简易表格但最终是否扩容、是否改代码必须由人确认。5.2 车载测试车载测试项目里终端环境往往比代码本身更复杂。常见的做法是读总线日志、模拟传感器输入、验证报文周期和数据范围。这类任务里大模型能做的部分是把一段十六进制报文解析成可读字段。根据通信矩阵生成模拟发送脚本。根据历史日志生成边界值测试用例。但需要注意车载日志经常有时间戳跳变、丢帧、乱序。Agent 一旦拿到不干净的数据会生成完全不符合现场的断言。我会先让测试人员把原始日志裁剪成小片段再交给 Agent 去提取特征。例如一条 CAN 信号解析脚本可以让 Agent 把每个报文的 ID、长度、数据段、校验位解析出来然后分组统计。但别让它跳过 DBC 文件单独解释报文含义因为这部分需要有精确协议依据。5.3 嵌入式测试嵌入式测试和大模型结合的常用场景是串口命令测试、固件接口验证、硬件启动日志检查。我通常会让 Agent 完成三步建立串口连接发送控制命令。接收反馈检查关键字或错误码。对异常回复做自动重试和日志保存。这里最容易踩的坑是权限和端口问题。Linux 下访问串口需要设备权限Windows 下需要确认 COM 口号和驱动。Agent 可能误以为“连接失败”是代码问题其实只是设备被占用。嵌入式测试中Agent 最适合沉淀成技能包的不是自动化用例而是设备操作规则。比如哪些命令不能并发执行、哪些命令会触发固件升级、哪些日志只代表警告不影响结果。把这些写清楚后Agent 生成的脚本才不会乱发指令。6. Skill 的价值是把零散测试经验变成可复用的智能体知识库标题里出现了“skill”这个词在不同工具中叫法不完全一样。落到测试开发里我理解的 skill 不是某个神秘功能而是一套可被 Agent 调用的规则和方法集。为什么测试项目需要 skill因为没有 skill 时同一个 Agent 团队里每个人都在用自己的话描述测试规范Agent 每次都要重新理解。一旦把经验固化下来新同事和 Agent 都能按同一套标准工作。6.1 测试技能库我建议放四类内容第一类是框架规范。比如 pytest 的 fixture 命名规则、用例放置目录、报告输出路径。这类内容能防止 Agent 生成风格杂乱的脚本。第二类是断言规范。比如接口返回码统一校验规则、是否需要校验敏感字段、时间字段的误差范围。第三类是故障处理流程。比如连接超时后先检查什么、数据库失败后看哪些表、串口无响应时重试多久。第四类是禁止事项。比如不能改公共配置、不能在生产环境执行压测、不能跳过已知 bug。skill 名称Python 接口测试规范 适用范围APITestCase 项目 规则 - 用例必须继承 api_base.py - fixture 放在 conftest.py不在模块内重复定义 - 断言统一使用 common/assertions.py - 禁止打印密码和 token - 失败先看日志再修改用例这段文字虽然没有复杂语法但 Agent 读完后行为会比裸跑稳很多。6.2 Skill 入库要靠回归用例把关我见过有人搭建了很庞大的 skill 库但实际跑测试时没什么效果。原因是技能内容写得太抽象Agent 不知道该在什么时候调用。一个可行的入库存流程是先有真实项目问题比如“串口连接成功后没有收到回显”。人工总结排查步骤给 Agent 一个临时 Prompt 测试。如果 Agent 按步骤能稳定解决再固化成技能。每过一段时间做一次回归检查技能是否还能指导新版工具正确运行。这样生成的 skill 不是文件仓库而是经过验证的知识。最重要的一条原则是技能内容必须能被测试结果验证不能被验证的 skill 只是自我安慰。7. 真实落地时的排查顺序先看日志、再看路径、最后改模型参数很多 AI 测试项目给人的感觉是“明明能跑通但换一个环境就废”。核心问题通常不在模型而在接入链路里某些很容易被忽略的环节。7.1 AI 测试最常见的问题不是模型不聪明而是上下文不干净以我经验看失败基本集中于四类输入格式不对例如接口文档是 Markdown但 Agent 读进了模板注释。路径权限混乱代码能执行但没有写报告和日志的权限。环境数据不稳定测试依赖动态数据每次执行结果都不同。项目内有多种编码格式日志文件出现乱码Agent 推断错误。这时不要立刻换模型也不要加更长 Prompt。应该先把输入文件裁剪到最小规模用最短链路跑一次。如果最短链路仍然失败再排查 Agent 使用的模型、工具和权限。7.2 建议按四步排查看现象是启动失败、执行失败、断言失败还是结果和预期不一致。检查被测环境接口地址、数据库状态、串口端口、测试设备是否在线。检查执行产物日志文件是否生成、报告路径是否正确、是否留下可供 Agent 读取的错误摘要。再回到 Agent 配置上下文窗口是否足够、有没有加载到旧的技能文件、工具是否被更新。下面这张表是我给自己团队列的最简检查表现象优先检查容易误判的原因用例跑不过测试数据是否变化以为断言写错连接设备失败端口是否被占以为是代码问题Agent 连续修改失败上下文里是否有旧日志以为模型能力不足压测结果波动大监控指标是否丢点以为脚本写错输出乱码日志文件编码以为是 Agent 看不懂最后一句话留给长期做 AI 测试开发的人不要追求每个任务都让 Agent 自动完成先把它训练成团队里一个“读代码快、能执行命令、可以反复修错”的搭档。跑通单条用例后再逐步扩展性能测试、车载测试和嵌入式测试场景。这个方向的核心不是工具名称而是你对测试链路边界的把控。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进