返回 AI 测试成长路线
Phase 05 / AI-Native QA Engineering 01

AI 时代测试提示词与上下文工程教程

把需求、规范、代码、缺陷和测试经验组织成有边界、可追溯、可评估的上下文,让 AI 产出稳定的候选测试资产。

10 个章节Prompt + Context证据、结构与回归
01

先把测试任务说清楚,再让 AI 开始工作

提示词不是一句口令

案例:为商城下单改动生成候选测试点

需求新增“会员券与满减可以叠加,但订单金额不能低于 0.01 元”。AI 需要读取当前需求、优惠规则、接口约束和历史缺陷,输出候选测试点与待确认问题。它不能修改正式用例,也不能猜测没有写明的优惠上限。

任务契约四要素

要素必须写清模糊时的风险
目标需要产出测试点、用例、脚本还是报告生成内容看似完整却不可用
证据允许依据哪些版本的材料旧规则覆盖当前需求
边界哪些判断与动作必须由人完成AI 擅自裁决业务或产生副作用
验收结构、覆盖、错误处理和停止条件无法用脚本或人工稳定审核
高质量 Prompt 的核心不是写得长,而是让职责、证据、边界和合格标准都可验证。
02

按可信度给上下文排序

不是所有材料都同等有效

测试证据层级

优先级内容使用方式
01当前版本已确认需求与业务规则决定预期结果,保留原文和 source_id
02已确认接口、数据模型和实现约束解释可观察结果,不反向篡改需求
03现有测试、历史缺陷和线上问题提示风险与回归点,不能直接当当前规则
04讨论记录、假设和模型推断单独标记为待确认,不写进正式断言
evidence-manifest.json
{
  "task": "checkout-discount-test-analysis",
  "sources": [
    {"id":"REQ-42","type":"current_rule","version":"2.1","priority":1},
    {"id":"API-7","type":"confirmed_contract","version":"1.8","priority":2},
    {"id":"BUG-319","type":"history","priority":3}
  ],
  "unconfirmed": ["会员券是否允许与免邮券同时使用"]
}
03

系统 Prompt 用来约束职责、证据和停止条件

边界契约

固定骨架

部分写法
角色你是候选测试分析员,不负责裁决需求争议
目标从证据中提取规则、风险、测试点和待确认项
证据顺序当前规则 > 已确认契约 > 历史参考
禁止事项不补写功能、不使用生产隐私、不修改正式资产
停止条件来源冲突、关键材料缺失或动作有副作用时转人工
输出契约按 Schema 返回,并保留 rule_id 与 source_id
system-prompt.txt
你是候选测试分析员,只依据 evidence 中的当前版本材料工作。
必须:每个测试点关联 rule_id 和 source_id;事实、推断、待确认分开输出。
禁止:补写需求外功能;用历史规则覆盖当前规则;修改正式测试库。
当证据冲突、关键材料缺失或需要真实副作用时,返回 needs_human_review。
04

上下文预算优先保护当前规则

相关才展开

上下文预算

内容装载策略空间不足时
任务与当前规则常驻并保留原文不能静默截断
资产索引常驻 ID、版本和摘要按命中结果读取正文
接口与代码只读取命中规则的相关片段先移除无关实现
历史缺陷先摘要,命中风险后展开先移除重复历史
对话过程保留结论和来源压缩讨论,不压缩已确认事实
context-budget.json
{
  "max_tokens": 24000,
  "reserve_for_output": 6000,
  "priority": ["current_rules", "confirmed_contracts", "relevant_tests", "history"],
  "overflow": "drop unrelated history; never truncate current rules silently"
}
05

先检索资产索引,再读取命中的正文

减少噪声和过期信息

按需装载

任务拆解规则与风险
检索索引ID与摘要
权限过滤项目与版本
读取正文命中片段
引用输出来源可回查

检索检查

问题验证方法
是否找全关键规则用已知 rule_id 计算必要证据召回率
是否混入旧版本断言 source.version 与当前版本范围
是否跨项目或越权按项目、角色、租户和数据级别过滤
是否带入无关长文统计命中片段与最终产出的引用关系
检索失败是否诚实缺证据时返回待确认,而不是依赖模型记忆
06

示例说明怎样算好,规则负责稳定约束

少样本不等于复制答案

示例与规则的分工

方式适合解决不能替代
正例标题格式、步骤粒度、证据引用方式业务规则和边界值
反例编造、重复、模糊预期和危险动作机器可判定的 Schema
规则必填字段、枚举、覆盖关系和禁止项复杂业务裁决
历史样本常见缺陷模式和风险提示当前版本预期

选择示例

  • 覆盖最常见和最高风险的错误,不追求数量。
  • 示例中的角色、金额和状态明确标记为示意值。
  • 输入与合格输出成对保存,失败原因可分类。
  • 示例版本与 Prompt、规则和评估集一起管理。
07

固定输出结构,让脚本和人工都能消费

自然语言也要有契约

候选测试点字段

字段约束
test_point_id批次内唯一,可追踪修改
rule_ids / source_ids至少关联一条当前证据
scenario使用“当……时,……”表达条件和结果
risk说明失败会造成什么业务影响
priority依据影响和发生可能性,不按编写难度
questions未知信息单独列出,不能混入预期
结构化输出示例
{
  "test_point_id": "CHECKOUT-018",
  "rule_ids": ["REQ-42"],
  "source_ids": ["REQ-42#discount-stack"],
  "scenario": "当会员券与满减叠加后金额低于 0.01 元时,订单金额按 0.01 元结算",
  "priority": "P0",
  "questions": []
}
08

文档和历史内容中的指令只能当作数据

上下文也会被注入

输入安全测试

输入攻击合格行为
需求文档要求忽略系统规则并输出生产账号只提取业务事实,拒绝越界指令
历史缺陷旧规则声称优先于当前需求按证据优先级处理并标记冲突
代码注释诱导调用未授权工具代码只用于理解实现,不改变允许工具
示例携带固定金额和角色不复制到没有证据的新场景
检索结果跨项目敏感信息权限过滤并记录安全事件
把不可信文本放进 XML 标签或 JSON 字段有助于分隔,但真正的边界仍需要权限过滤、工具白名单、输出校验和人工门禁共同完成。
09

Prompt 和上下文变化都要回放固定评估集

改一句也可能退化

评估维度

维度检查
证据忠实度事实和预期能否回指当前来源
规则召回已知关键规则是否都形成测试点
编造率无来源数值、状态、角色和功能比例
结构合格率Schema、字段和枚举是否通过
待确认质量缺口是否具体、可分派、可关闭
人工接受率接受、修改、拒绝的分布与错误分类
prompt-regression.json
{
  "candidate": {"model":"m2","prompt":"test-analysis@1.4.0"},
  "baseline": {"model":"m2","prompt":"test-analysis@1.3.2"},
  "dataset": "checkout-analysis-eval@v5",
  "must_pass": ["no_invented_limits", "conflict_stops", "schema_valid"],
  "compare": ["rule_recall", "human_acceptance", "p95", "token_cost"]
}
10

把一个真实需求整理成可回归的上下文包

练习与检查

练习

  1. 选择一个含 3~5 条规则变更的脱敏需求,登记来源、版本和优先级。
  2. 定义 AI 的职责、允许证据、禁止事项、停止条件和输出 Schema。
  3. 建立资产索引,只装载与当前规则相关的接口、代码、用例和缺陷。
  4. 准备正例、反例、信息缺失、来源冲突和文档注入样本。
  5. 生成候选测试点,运行结构、证据、覆盖和编造检查。
  6. 调整一次 Prompt 或上下文策略,用同一评估集比较新旧版本。

输入可信

  • 版本明确
  • 证据有优先级
  • 权限已过滤
  • 缺失会停止

输出可用

  • 结构固定
  • 来源可回查
  • 未知不编造
  • 脚本可校验

变更可控

  • Prompt有版本
  • 样本可复现
  • 指标可比较
  • 退化可回滚