如果你最近在B站刷到“2026最新AI测试”类视频,大概率会被这套组合拳震住:Claude Code 负责写代码、TRAE 负责 IDE 里的智能补全、Skill 负责让 AI 记住你的测试规则、Deepseek 负责提供大模型能力,最后再套一层“智能体”外壳。演示视频节奏很快,看起来好像只要装好工具,自动化测试、性能测试、车载测试、嵌入式测试全部都能由 AI 包办。
这里我想要先给一个冷静判断:这套工具组合真正降低的是“从需求描述到测试代码草稿”的翻译成本,而不是测试设计本身。换句话说,AI 能帮你更快地把脑子里已经想清楚的测试思路写成代码,也能帮你搜索和拼接各种协议解析、数据构造、断言模板,但如果测试场景本身模糊、验收标准不明确、硬件边界不清晰,AI 生成的代码只会让错误更快地出现。
这篇文章不打算复刻视频里的操作过程,而是从测试开发的实际工作流出发,把 Claude Code、TRAE、Skill、Deepseek、智能体这些概念拆开讲清楚,并给出能在项目里落地的 Python 自动化测试、性能测试、车载测试和嵌入式测试示例。读者只要能跑通 Python 环境,跟着文章一步步做,就能把这套“AI 测试工具箱”变成日常工作的一部分,而不是停留在视频收藏夹里。
1. 这套 AI 测试组合解决什么问题?
先说一个容易混淆的地方:很多人把 Claude Code、TRAE、Deepseek、Skill、Agent 当成同一类东西,其实它们在一条工作链里扮演的角色完全不同。用测试开发来打比方:
- Deepseek是“大脑原材料”,提供大模型的推理和生成能力。在测试开发里,它可以被理解成一个知识面很广、但偶尔也会一本正经胡说八道的“测试专家咨询师”。
- Claude Code是运行在终端里的 AI 编程智能体,它能读取项目文件、执行命令、修改代码,像一个能直接操作电脑的“编码助理”。它适合把大段测试任务拆成步骤,然后真正把代码写进项目里。
- TRAE是 AI IDE,集成了代码补全、对话生成、文件级修改能力。它更适合开发者一边看代码、一边让 AI 修改某个具体文件的使用方式。
- Skill是把可复用的“测试经验”编码成 AI 能读取的规则或技能包。比如你告诉它“涉及支付接口的用例必须校验金额精度”,AI 下次生成代码就会遵守。
- 智能体 / Agent是更高一层的能力封装,指 AI 能自主完成“理解任务 -> 拆解步骤 -> 调用工具 -> 检查结果”这一整条链路。
这几个工具解决的实际问题,不是替代测试工程师,而是减少以下四类成本:
- 从用例设计到测试代码的编写成本:以前写一个接口自动化测试,要先查 requests 文档、写 fixture、处理断言,现在可以直接给 AI 描述需求,让它生成可运行的第一版。
- 跨技术栈的知识搜索成本:车载测试要用 CAPL、嵌入式测试要写 C 桩、性能测试要配 Locust,一个人很难全部精通。AI 可以扮演“随时在线的高级工程师”,帮你生成对应技术栈的骨架代码。
- 重复项目规则的记忆成本:AI 默认不理解你们团队的命名规范、断言惯例、环境变量体系,Skill 和项目规则文件可以把这些经验沉淀下来,让 AI 每次生成都贴近项目要求。
- 从手工执行到自动验证的衔接成本:Agent 可以调用命令行跑 pytest、读日志、看覆盖率,这比“生成代码后让你自己复制到项目里跑”先进很多。
不过要特别注意边界:AI 生成的代码默认是“看起来合理”,不是“已验证正确”。如果你的测试数据是脏的、断言是错的、任务描述有歧义,AI 会把这些问题原封不动地吸收进代码,甚至因为代码风格太流畅而让人放松警惕。这正是为什么后面每一节都会强调“验证”和“评审”。
2. 大模型测试开发:测什么、怎么测、用什么测
大模型测试开发这个概念包含两个方向,很多人混在一起聊,导致思路很乱。第一个方向是“用大模型辅助测试开发”,也就是让 AI 帮你写自动化测试代码;第二个方向是“对大模型应用本身做测试”,也就是当被测对象是 AI 产品时,如何验证它的输出质量。两种方向的能力要求不同,但可以共用同一套工具。
2.1 用大模型辅助测试开发:人与 AI 的分工
传统接口自动化测试的开发链条是这样的:阅读接口文档 -> 准备测试数据 -> 编写请求代码 -> 编写断言 -> 接入 CI -> 分析失败用例。引入 Claude Code 或 TRAE 后,链条可以压缩成:
- 测试人员把接口文档或需求描述喂给 AI。
- AI 生成 requests + pytest 的完整脚本。
- 测试人员只评审两个关键点:测试数据是否覆盖边界、断言逻辑是否符合业务规则。
- 让 AI 根据评审意见修改代码。
这里的核心变化是测试人员的角色从“写代码的人”变成了“提需求和做评审的人”。这并不意味着测试开发门槛降低,而是把门槛从“语法熟练度”移到了“测试设计能力”。
2.2 对大模型应用做测试:不能用传统断言思维
如果你测试的是 Deepseek、Claude 这类大模型应用,最常犯的错误是照搬传统接口测试的断言方式,比如“判断返回值是否等于某个字符串”。但大模型输出有随机性,同样的 Prompt 两次结果可能不同,直接断言某个词必然出现,会导致用例频繁抖动。
更务实的模型回归测试思路是分层验证:
- 基础可用性:模型接口是否正常返回、响应时间是否达标、是否返回错误码。
- 内容规则校验:输出内容是否包含或禁止某些关键词、是否符合 JSON 格式、是否遵守敏感信息过滤规则。
- 质量抽检:对于语义层面的质量,用规则很难覆盖,需要人工或更强大的模型来评估。
下面的示例演示如何用 Deepseek 的 OpenAI 兼容接口做一轮“模型回归测试”,用 Python 脚本批量执行测试用例,并给出最基础的规则校验结果。
from openai import OpenAI # 使用 OpenAI SDK 调用 OpenAI 兼容接口。 # 密钥和生产环境地址以你自己项目配置为准,不要把密钥写死在代码里。 client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.deepseek.com" ) model_name = "deepseek-chat" test_cases = [ { "name": "功能性问题", "prompt": "用一句话解释什么是软件测试中的断言。", "must_contain": ["断言", "预期结果"], "must_not_contain": ["我不确定"], }, { "name": "格式要求", "prompt": "输出一个 JSON,字段为 name 和 age,不要输出其他内容。", "must_contain": ["name", "age"], "must_not_contain": [], "is_json": True, }, ] def check_case(case): response = client.chat.completions.create( model=model_name, messages=[ {"role": "system", "content": "你是测试开发助手,请准确、简洁地回答问题。"}, {"role": "user", "content": case["prompt"]}, ], temperature=0.3, ) content = response.choices[0].message.content # 大模型输出可能存在抖动,所以这里是弱断言,而不是强断言。 missing = [word for word in case.get("must_contain", []) if word not in content] illegal = [word for word in case.get("must_not_contain", []) if word in content] if case.get("is_json"): try: import json json.loads(content) is_json_ok = True except Exception: is_json_ok = False else: is_json_ok = True return { "name": case["name"], "missing": missing, "illegal": illegal, "is_json_ok": is_json_ok, } for case in test_cases: result = check_case(case) print(f"用例: {result['name']}") print(f" 缺少关键词: {result['missing']}") print(f" 包含禁止词: {result['illegal']}") print(f" JSON 格式正确: {result['is_json_ok']}")这段代码的关键点在于它不适合做“精确匹配断言”,而更适合做“烟雾测试”。真实的大模型产品测试,需要把用例规模扩大到几十上百条,记录每次运行的输出、耗时、Token 消耗,并把语义评估结果汇总成报表。这些工作在最初阶段可以用脚本完成,但到了后期一定会走上“评测集 + 指标体系 + 分版本对比”的路线,这也是大模型测试开发和传统测试开发最深层的区别。
3. 环境准备:把 Claude Code、TRAE、Deepseek 组合起来
要跑通这套流程,需要先有一个能正常工作的 Python 环境、一个能执行命令的终端、一个可用的模型 API,以及至少一款 AI 编程工具。下面按工具分别说明,版本信息请以官方网站当前说明为准,本文不写死具体数字。
3.1 安装与使用 Claude Code
Claude Code 是 Anthropic 推出的终端编程智能体。安装前需要确认本机已经安装 Node.js,且版本满足官方要求。安装命令在多数系统上类似:
# 确认 Node.js 已安装 node -v # 全局安装 Claude Code npm install -g @anthropic-ai/claude-code # 启动交互环境 claude首次使用会要求登录 Anthropic 账号或配置 API Key。实际开发中更推荐通过环境变量注入 API Key,避免把密钥写进项目代码:
# Linux / macOS export ANTHROPIC_API_KEY="你的密钥" # Windows PowerShell $env:ANTHROPIC_API_KEY="你的密钥"进入 Claude Code 后,它可以直接读取项目目录,执行 shell 命令、修改文件、运行测试。这是它和普通网页聊天工具最大的区别:AI 能直接看到你的工程上下文,并且结果会落回真实项目。
3.2 安装与使用 TRAE
TRAE 有两种常见载体:桌面 IDE 版和 IDE 插件版。如果你正在用 VS Code 或 JetBrains 系列,可以直接查找 TRAE 插件;如果你想要一体化的 AI IDE 体验,可以下载桌面版。国内网络环境下优先选择官网下载,安装后通常需要登录字节系账号才能使用默认模型服务。
使用 TRAE 时,最有价值的功能不是单轮问答,而是“针对当前代码文件或项目目录进行修改”。例如你可以选中一个测试文件,在对话框里输入“把这段测试用例改成参数化,数据写在 JSON 文件里”,TRAE 会基于上下文生成改动建议。它比聊天工具更懂项目结构,也比直接在网页上复制粘贴代码更高效。
3.3 接入 Deepseek 等模型的边界
很多测试开发者询问“能不能让 Claude Code 接 Deepseek”。这里需要注意,是否支持第三方模型取决于 Claude Code 当前版本的官方能力,以及模型服务商是否提供兼容接口,不能简单凭想象配置。
从材料看,Deepseek 提供 OpenAI 兼容的 API 接口,因此你可以直接使用 Python 或 curl 调用它,完成自动化测试、模型回归测试等任务。如果希望某些 AI 编程工具使用 Deepseek,需要查看具体工具的模型配置说明,确认是否允许配置自定义 Base URL 和模型名称。比较稳妥的做法是先在官方示例代码里跑通模型接口,再考虑与 IDE 或终端工具集成,不要从网上随手复制一个配置文件就丢到生产环境。
下面的表格可以帮助你理解不同工具在当前工作流里的定位:
| 工具 | 主要定位 | 典型使用场景 | 关键注意点 |
|---|---|---|---|
| Deepseek | 大模型推理服务 | 接口调用、内容生成、模型回归 | 注意数据隐私,不要在请求中传敏感生产数据 |
| Claude Code | 终端 AI 编程智能体 | 批量生成代码、执行测试命令、修改文件 | 需要 Node.js 环境与模型访问权限 |
| TRAE | AI IDE / IDE 插件 | 日常开发中边看代码边修改 | 登录与模型配置以官方说明为准 |
| Skill | 可复用技能与提示词规则 | 把测试规范、代码风格固化给 AI | 需要根据自己的项目沉淀,不是开箱即用 |
| Python | 自动化脚本语言 | 接口测试、性能测试、数据处理 | 版本注意 3.8+,建议使用虚拟环境 |
4. 用 Skill 把测试经验固化给 AI
如果你已经用了一段时间 Claude Code 或 TRAE,会发现一个痛点:每次开始新项目,AI 都会忘记你上次强调的规则。比如你明确告诉它“接口测试脚本要使用 pytest,不要用 unittest”,但下一次它可能还是会生成 unittest 风格代码。Skill 这个概念就是为了解决这个问题。
Skill 的底层原理并不神秘,本质上是把一段结构化的“操作说明”保存成文件,让 AI 在相关任务触发时自动读取。它可以包含:
- 触发条件:什么场景下使用这个技能。
- 工作流程:先做什么、再做什么。
- 约束规则:必须遵守的代码风格、命名规范、禁止事项。
- 示例:提供一个可参考的代码片段。
下面是一个面向“Python 接口自动化测试”的 Skill 说明文件示例。这个文件不是某个工具官方插件,而是团队可以直接放在项目文档目录里的通用规则文件,Claude Code 和 TRAE 都能通过读取文档理解规则。
# 技能名称:python-api-autotest # 适用场景:生成或维护 Python 接口自动化测试代码 ## 工作流程 1. 先阅读接口文档中请求方法、鉴权方式、参数说明。 2. 使用 pytest 框架编写测试文件,禁止使用 unittest。 3. 测试文件按模块拆分,命名格式为 test_<接口名>.py。 4. 请求封装放在 client/ 目录,用例里不直接写请求 URL。 5. 断言必须覆盖状态码、关键业务字段和异常分支。 ## 禁止事项 - 不要在代码里硬编码生产环境账号密码。 - 不要跳过超时设置,默认请求超时时间为 10 秒。 - 不要只写正常流程用例,至少补充一个边界或异常用例。 ## 参考示例 - 参考本目录下 test_user_login.py。 - 断言优先使用 pytest.raises 处理预期异常。在实际项目中,可以把这个文件命名为skill_python_api_autotest.md,放到项目的docs/skills/目录下。每次开始新的测试代码生成任务前,你可以直接告诉 AI:“请先阅读 docs/skills/skill_python_api_autotest.md,然后按其中的规范生成用例。”如果你用的是 Claude Code,还可以把它整理成命令文件放到.claude/commands/目录,用斜杠命令直接触发。
这里想强调的是:Skill 的核心价值不是某个工具的隐藏功能,而是把团队规范从“口口相传”变成“机器可读”。哪怕不用 Claude Code,换成 TRAE 或其它 AI 编程工具,同一份规则文件也能发挥作用。
5. Python 自动化测试:AI 生成代码后如何验收
当 AI 能快速生成测试代码后,真正考验工程师的是“验收能力”。下面用一个最小接口自动化测试示例来说明:AI 生成代码只是第一步,你还需要做四件事——检查测试数据准备、检查断言、检查清理逻辑、检查是否引入了不安全的依赖。
假设被测接口是一个用户登录接口,返回 JSON 数据。AI 可能会生成下面的 pytest 脚本:
import requests import pytest BASE_URL = "http://127.0.0.1:8080" def login(username, password): url = f"{BASE_URL}/api/login" payload = { "username": username, "password": password } # 实际项目中 token 可能通过环境变量配置,不允许硬编码。 resp = requests.post(url, json=payload, timeout=10) return resp def test_login_success(): resp = login("admin", "123456") assert resp.status_code == 200 data = resp.json() assert data["code"] == 0 assert "token" in data["data"] def test_login_wrong_password(): resp = login("admin", "wrong-password") assert resp.status_code == 200 data = resp.json() # 业务约定:登录失败时业务状态码非 0 assert data["code"] != 0 def test_login_missing_username(): # 参数缺失场景,应校验是否返回参数错误提示 resp = requests.post(f"{BASE_URL}/api/login", json={"password": "123456"}, timeout=10) assert resp.status_code == 200 data = resp.json() assert data["code"] == 40001这个脚本“看起来”没有问题,但如果你直接拿它去跑,可能在测试数据上翻车。比如“admin / 123456”这个用户是否真实存在?运行测试的环境是测试环境还是本地 Docker?如果用例执行后产生脏数据,有没有清理机制?这些都是 AI 看不到、但测试工程师必须回答的问题。
验收 AI 生成的测试代码时,建议按下面的清单逐项核对:
- 常量是否可配置,比如 Base URL、账号、密码是否可以从环境变量读取。
- 是否设置了超时时间,避免接口卡住导致用例长时间不结束。
- 请求数据是否覆盖正常、异常、边界三种情况。
- 断言是否只检查了状态码 200,却忽略了业务返回字段。
- 用例之间是否相互依赖,是否共用可变数据造成执行顺序问题。
在 Claude Code 或 TRAE 中,你可以选中测试文件,让 AI 执行一次快速自检,提示词可以写:“请检查这个 pytest 脚本的断言覆盖、data isolation、环境变量使用情况,并指出可能失败的场景。”AI 会给出修改建议,但最终是否修改、怎么修改,仍然需要人来决定。
6. 性能测试:AI 生成 Locust 脚本与风险评估
性能测试是 AI 辅助比较容易出成果的领域,因为 Locust 这类工具提供了标准的 Python API,AI 可以很快生成一个压测脚本的骨架。但性能测试比功能测试更容易“闯祸”:如果压测目标选错、QPS 设置过高、没有观察服务端监控,一次不小心的大流量可能把共享环境打挂。
先用 Locust 写一个简单的用户登录接口压测场景:
# 文件路径:locustfile.py from locust import HttpUser, task, between class LoginUser(HttpUser): wait_time = between(1, 3) # 实际使用中应从配置读取压测账号池,避免所有请求都压同一个账号 def on_start(self): self.username = "loadtest_user_01" self.password = "test_password" @task(3) def login(self): payload = { "username": self.username, "password": self.password } # 压测时不要调用真实第三方登录,尽量使用 Mock 接口 with self.client.post( "/api/login", json=payload, catch_response=True, name="login" ) as resp: if resp.status_code != 200: resp.failure("login failed status=%s" % resp.status_code)运行方式很简单:
# 启动 Web 界面模式,浏览器打开 http://localhost:8089 可配置并发数 locust -f locustfile.py --host http://127.0.0.1:8080 # 也可以直接用命令行无界面模式 locust -f locustfile.py --host http://127.0.0.1:8080 --headless -u 50 -r 5 --run-time 30sAI 生成 Locust 脚本时,容易忽略的几个点包括:压测账号池设计、登录 Token 的复用、数据写入冲突、服务端监控对接。更关键的是,AI 不会告诉你这个压测应该在什么环境执行。任何性能测试都必须在测试环境或专门的压测环境里执行,并且提前确认目标服务有监控、有告警、有回滚方案。如果没有这些前提,压测脚本写得再漂亮也不能启动。
用 Claude Code 辅助性能测试时,比较高效的做法是让 AI 先审查现有压测脚本,而不是每次都从空文件生成。可以发出这样的指令:“分析 locustfile.py 的账号策略和断言方式,指出在高并发下的瓶颈,并给出修改建议。”AI 会给出低水平优化和风险提示,比如建议使用 on_start 初始化会话、使用 fast_uuid 代替 UUID 作为用户名、关闭日志输出降低 I/O 压力等。
7. 车载测试与嵌入式测试:哪些能交给 AI,哪些必须留在物理世界
车载测试和嵌入式测试会让人产生一种误解:既然 AI 能生成 Python 代码,那它也能直接搞定车载系统测试。实际上,这个领域比纯软件测试更依赖硬件、协议和工具链,AI 能落地的是“与硬件无关的代码骨架和数据处理”,不能落地的是“对真实硬件的判断”。
7.1 车载测试中的 AI 辅助场景
车载测试常见的场景包括 CAN 报文分析、UDS 诊断测试、HIL 台架测试。如果测试人能够把 CAN 日志导出成文本或数据库,Python 可以快速完成报文筛选和解析,这个部分非常适合 AI 辅助。
下面是一个离线解析 CAN 日志的 Python 示例。假设日志文件每一行包含时间戳、CAN 通道、报文 ID、数据字节:
# 文件路径:can_log_parser.py import csv def parse_can_log(log_path): parsed_rows = [] with open(log_path, 'r', encoding='utf-8') as f: for line in f: line = line.strip() if not line: continue parts = line.split(',') # 示例格式: # timestamp,channel,can_id,data # 实际报文格式以工具导出格式为准,这里做演示 if len(parts) < 4: continue timestamp = parts[0] can_id = parts[2] raw_data = parts[3] parsed_rows.append({ "timestamp": timestamp, "can_id": can_id, "bytes": raw_data, }) return parsed_rows def filter_by_id(rows, target_can_id): return [row for row in rows if row["can_id"].upper() == target_can_id.upper()] if __name__ == "__main__": rows = parse_can_log("sample_can.log") target_rows = filter_by_id(rows, "0x123") print(f"解析到 {len(rows)} 行,筛选到 {target_can_id} 的报文 {len(target_rows)} 行") print(target_rows[:5])这段代码的核心价值不在于解析逻辑有多复杂,而在于它把“人眼从大日志里翻报文”的体力活变成了可重复、可统计的数据处理流程。你还可以让 AI 继续生成按时间段统计报文频率、解析某个 DBC 文件中的信号值等更复杂的逻辑。
如果你负责编写 CAPL 脚本,AI 也能生成骨架,比如一个 UDS 诊断测试序列的 CAPL 伪代码。但这里必须强调:CAPL 脚本依赖 Vector 工具链的具体 API 和 DBC 工程配置,AI 生成的代码只能作为参考,不能直接烧进测试台架。正确路径是让 AI 生成基础框架,然后由熟悉工具链的工程师补全硬件地址、环境变量和诊断参数。
7.2 嵌入式测试中的 AI 辅助场景
嵌入式测试中,AI 能做的是生成 C 语言单元测试、Mock 函数、数据驱动测试用例。例如被测函数是计算数据校验和的 C 函数,AI 可以生成一个最小测试程序:
// 文件路径:test_checksum.c #include <stdio.h> #include <stdint.h> #include <assert.h> // 被测函数,实际代码中来自被测模块 uint8_t calculate_checksum(const uint8_t *data, int len) { uint8_t sum = 0; for (int i = 0; i < len; i++) { sum += data[i]; } return sum; } // 测试桩:模拟没有真实硬件时的输入来源 static uint8_t test_data[] = {0x01, 0x02, 0x03, 0x04}; void test_checksum_success(void) { uint8_t result = calculate_checksum(test_data, sizeof(test_data)); assert(result == 0x0A); printf("test_checksum_success passed\n"); } void test_checksum_empty_data(void) { uint8_t result = calculate_checksum(test_data, 0); assert(result == 0x00); printf("test_checksum_empty_data passed\n"); } int main(void) { test_checksum_success(); test_checksum_empty_data(); return 0; }在嵌入式测试中,最容易被 AI“坑”的地方在于:它不理解目标芯片的字节序、内存布局、硬件寄存器映射和编译选项。比如同一个校验和函数,在大端芯片和小端芯片上处理多字节数据时结果可能完全不同。所以 AI 生成嵌入式代码后,必须由有硬件经验的工程师做静态检查和交叉编译验证,不能因为代码看着规范就直接合入。
7.3 车载与嵌入式测试的边界提醒
这部分总结一句比较重要的话:AI 能做的是“生成”、“分析”、“推荐”,真正负责“验证”的必须是人、测试台架和经过校准的仪器。车载和嵌入式领域涉及行车安全、生产设备安全、人身安全,任何自动化操作都要在受控环境中进行,并且具备明确的授权和回滚方案。
8. 智能体与多智能体:测试自动化的下一步形态
视频里频繁提到的“智能体”,并不只是聊天机器人的另一个名字。在测试开发场景里,一个可用的智能体至少要具备四个能力:
- 理解测试任务目标,能把模糊需求拆成具体步骤。
- 能调用工具,比如执行 shell、读写文件、调用接口。
- 能根据不同步骤的结果调整后续行为。
- 能在关键节点停下来等待人类评审。
Claude Code 本质上就可以理解为一个跑在终端里的智能体。你给它一个任务,比如“执行 pytest,如果失败就读取最新日志,定位可能的断言错误,并把修改建议写入报告”,它会按照这个流程操作。
多智能体是这个概念的延伸:一个主 Agent 负责任务拆解,多个子 Agent 分别负责代码生成、代码检查、日志分析、报告输出。听起来很美好,但实际项目里“多智能体”的协调成本并不低,尤其在测试领域,误报、漏报和错误修改会互相影响,形成很难排查的问题链。
因此,一个更务实的路线是“单 Agent 为主,人工在关键节点介入”。目前并不需要一开始就追求复杂的多 Agent 框架,而是可以把一条测试任务手工按下面的流程拆解给 Claude Code 或 TRAE:
- 用 Claude Code 读取被测模块的代码,生成接口清单。
- 结合接口清单和需求文档,让 AI 生成 pytest 测试用例。
- 让 AI 执行测试,把失败结果写进日志。
- 如果失败,AI 读取日志并对失败的用例给出原因分析。
- 人工评审 AI 的修改建议,决定是否让 AI 直接改代码。
- 修改后重新执行回归测试,观察结果是否变好。
这个流程在没有 Agent 概念的传统工具里也能做,但有了 Agent 后,AI 可以自动衔接步骤 1 到 3,减少人工复制粘贴。真正有效率提升的是“步骤 3 到 4”的自动反馈闭环:测试失败后 AI 不再只是停在报错堆栈,而是能主动查代码、比对上一步改动、给出可执行的修复方案。
9. 常见坑位与排查思路
在组合使用 Claude Code、TRAE、Deepseek、Skill、Python 做测试开发时,我梳理了一些高频问题和排查建议。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 执行 AI 生成代码时提示缺少依赖 | 项目没有安装 requests、pytest 等包 | 查看报错 ModuleNotFoundError,检查 requirements.txt | 在虚拟环境中执行pip install -r requirements.txt |
| Deepseek 接口调用返回鉴权失败 | API Key 配置错误或没有权限 | 打印完整报错信息,确认 Key 是否有sk-前缀 | 重新配置环境变量,不要硬编码在代码里 |
| Claude Code 安装后无法启动 | Node.js 版本过低或安装权限不足 | 终端执行node -v、npm -v | 升级 Node.js,或使用系统权限重新安装 |
| AI 生成的测试只有成功用例 | 提示词只描述了正常流程 | 检查用例目录中异常和边界用例比例 | 在 Skill 规则中明确加入“必须补充异常用例” |
| 压测脚本 QPS 过高,压垮了测试库 | 并发数设置不合理 | 查看服务端 CPU、连接数监控 | 从小并发数开始逐步加压,确认监控链路正常 |
| 车载 CAN 日志解析结果与实际不符 | 报文 ID 大小写、字节序或分隔符不一致 | 打印原始行,人工对照几行日志 | 明确日志格式,在解析代码中增加行格式校验 |
| TRAE / IDE 更新后窗口意外退出 | IDE 插件版本与主程序不兼容 | 查看官方更新日志,查看崩溃日志目录 | 卸载重装、回滚到稳定版本,或向官方支持渠道反馈 |
除了这些具体问题,还有一个更容易被忽视的“软坑”:生成式 AI 输出的代码具有很强的“表面正确性”,当它能一次跑通时,你会倾向于信任它。但在测试开发里,代码能跑通只是最基础的一步,测试用例是否覆盖了真实业务风险、断言是否反映了需求、异常处理是否合理,这些都是代码运行结果无法直接告诉你的。因此收到 AI 生成的测试代码后,至少要在项目里做一次代码走查,而不是直接合并到主干。
10. 最佳实践与工程建议
既然这篇文章讨论的是“大模型测试开发”工作流,最后我想把多个项目场景下比较有效的经验沉淀成几条可以直接执行的最佳实践。
10.1 提示词工程要放在 Skill 前面
很多团队一上来就想搭复杂的 Skill 规则体系,但成员连提示词都写不清晰。更合理的推进顺序是:先在对话里把“任务背景 + 测试目标 + 约束条件 + 输出格式”说清楚,跑通几个示例后,再把反复使用的优秀提示词沉淀成 Skill 文档。顺序反了,Skill 只会变成一堆没人维护的 Markdown 文件。
一个高质量测试代码生成提示词至少包含:
- 被测对象描述和文件路径。
- 测试期望覆盖的场景列表(正常、边界、异常)。
- 框架和风格要求。
- 禁止事项(如不允许硬编码密钥、不允许依赖线上数据)。
- 验收标准描述。
10.2 给 AI 配置一个“项目规则说明书”
无论是 Claude Code 还是 TRAE,在开始新项目时都应该先让 AI 读取一份项目规则文件。这份文件可以叫AGENTS.md、CLAUDE.md、TEST_RULES.md,重点是让它覆盖以下内容:
- 项目目录结构。
- 测试环境地址和测试数据来源。
- 代码提交前必须执行的命令。
- 日志和报告输出位置。
- 团队技术栈和禁用项。
当 AI 能持续读到这份文件时,它的输出会比默认状态下稳定很多。
10.3 建立 AI 测试结果的评审闭环
AI 参与测试开发的完整流程并不是“生成代码 -> 运行通过 -> 结束”,而应该多一条人工评审线。如果一个测试用例是由 AI 生成的,建议至少有人确认三件事:用例是否对应真实需求、断言是否适合被测业务、是否会产生脏数据风险。对于模型测试类的用例,还需要记录 Prompt 版本和模型版本,否则后续结果波动无法溯源。
10.4 模型选择要考虑数据合规
在测试开发中使用 Deepseek、Claude Code 时,测试数据很可能包含公司内部系统地址、账号密码、业务逻辑说明。这些内容被发送到外部模型 API 后,数据流向和留存策略必须提前确认。比较稳妥的做法是:核心业务越敏感,越应该在脱敏后的测试环境里使用模型,同时只在项目文档中暴露必要信息,避免把完整数据库内容整段丢给 AI。
10.5 把 AI 当作结对测试工程师,而不是自动交付工具
一个值得长期坚持的心态是:把 AI 当成一个水平不错、但缺少项目记忆的结对工程师。它写的代码你要看,它给的建议你要验证,它做错的决策你要能纠正。这个视角会让工作流自然变成“人负责判断,AI 负责执行”,这也是当前阶段大模型测试开发里比较健康的协作关系。
11. 总结与后续学习方向
从 Claude Code 和 TRAE 这类 AI 编程工具,到 Deepseek 这类模型服务,再到 Skill 和智能体,这套工具的落地路径已经越来越接近普通测试开发者的日常。真正重要的不是追每一个新工具的名字,而是理解它们落在工作流中的位置:Deepseek 提供推理能力,Claude Code 和 TRAE 负责把能力变成项目里的真实代码改动,Skill 负责沉淀规范,Agent 负责把环节串起来,而 Python 依然是最终承载自动化测试和报告分析的技术底座。
如果你想顺着这篇文章继续深入,我建议按下列顺序实践:
- 先装好 Python 和 Claude Code 或 TRAE,跑通一个简单的登录接口自动化测试。
- 用 Skill 文档把你们团队的测试规范固化下来,观察 AI 生成的代码是否更贴合项目。
- 做一轮模型回归测试,理解大模型产品“弱断言 + 质量抽检”的测试思路。
- 在有测试环境授权的条件下尝试性能测试脚本,先小并发验证脚本正确性。
- 如果涉及车载或嵌入式测试,先从离线日志解析、代码桩生成这些“非硬件侵入”的场景入手。
把这套流程走完,你收获的将是比“看过很多 AI 视频”更重要的东西:一套能稳定产出、可评审、可回滚的 AI 辅助测试工作方法。