欢迎光临
我们一直在努力

Codex 全 AI 辅助测试操作指南

1. 文档目标

这份文档专门解决一个问题:如何让 Codex 深度参与测试工作,而不是只在最后帮你看一眼报错。

读完后,你应该能够:

  • 理解 Codex 在测试全流程中可以承担哪些工作
  • 建立一套 AI 辅助测试操作流程
  • 让 Codex 帮你设计测试点、测试用例、测试数据和验证清单
  • 让 Codex 协助分析失败原因和输出回归建议
  • 将这套方法用到 Java / Spring Boot 项目、接口测试、联调测试和缺陷修复测试中

2. 什么是“全 AI 辅助测试”

全 AI 辅助测试,不是“把测试全交给 AI”,而是让 Codex 参与测试工作的每一个关键环节:

  • 理解需求和实现
  • 识别风险点
  • 设计测试范围
  • 生成测试用例
  • 准备测试数据
  • 生成测试脚本或测试步骤
  • 协助分析失败日志
  • 补充回归测试清单

本质上,Codex 扮演的是一个“测试分析师 + 测试设计助手 + 缺陷定位助手 + 回归检查助手”的组合角色。

3. Codex 在测试中的典型能力

3.1 需求理解与风险识别

适合做的事:

  • 阅读需求说明
  • 结合代码分析影响范围
  • 判断哪些模块最容易出问题
  • 提醒你哪些边界条件容易漏测

3.2 测试点拆解

适合做的事:

  • 从一个需求中拆出功能测试点
  • 区分正常场景、异常场景、边界场景
  • 区分前端校验、后端校验、数据库校验

3.3 测试用例生成

适合做的事:

  • 生成接口测试用例
  • 生成页面操作测试步骤
  • 生成异常分支和边界值场景
  • 输出回归测试清单

3.4 测试数据准备

适合做的事:

  • 帮你设计前置数据
  • 整理哪些数据需要提前建好
  • 推导不同场景下的输入参数组合

3.5 缺陷定位与日志分析

适合做的事:

  • 分析接口报错和堆栈
  • 对照测试步骤与日志判断根因
  • 输出需要重点排查的类、方法、SQL 和配置

3.6 回归测试补全

适合做的事:

  • 根据本次改动补回归范围
  • 提醒你哪些旧功能可能被连带影响
  • 整理上线前的检查清单

4. 什么测试场景最适合用 Codex

下面几类测试工作,最适合引入 Codex。

4.1 新需求测试

例如:

  • 新增字段
  • 新增接口
  • 新增页面功能
  • 新增业务规则

这类任务适合让 Codex 帮你从需求和代码双视角拆测试点。

4.2 接口联调测试

例如:

  • 前后端联调
  • 三方接口接入
  • 参数和返回结构验证

Codex 很适合帮你补充联调清单和异常返回校验点。

4.3 Bug 修复验证

例如:

  • 修了空指针
  • 修了事务问题
  • 修了分页筛选错误

Codex 不只可以帮你验证“这个 bug 解决了没有”,还可以帮你找“有没有引入新的副作用”。

4.4 回归测试

例如:

  • 一个需求改动了多个模块
  • 一个 bug 修复涉及公共逻辑

这时 Codex 很适合做影响面分析和回归清单生成。

5. 什么场景不适合完全依赖 AI

下面这些场景可以用 Codex 辅助,但不能完全依赖它:

  • 涉及真实生产数据和敏感信息
  • 需要非常强业务经验判断的复杂逻辑
  • 强依赖人工视觉体验的页面细节验证
  • 需要真实压测、性能压测、并发压测的深度测试
  • 安全测试、渗透测试、合规测试等高专业门槛场景

一句话理解:Codex 可以大幅提高测试效率,但不能替代最终的业务判断和结果确认。

6. 全 AI 辅助测试标准流程

下面是一套推荐的操作流程。

#mermaid-svg-XsywvXBuciEN3Rc1{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-XsywvXBuciEN3Rc1 .error-icon{fill:#552222;}#mermaid-svg-XsywvXBuciEN3Rc1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-XsywvXBuciEN3Rc1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-XsywvXBuciEN3Rc1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-XsywvXBuciEN3Rc1 .marker.cross{stroke:#333333;}#mermaid-svg-XsywvXBuciEN3Rc1 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-XsywvXBuciEN3Rc1 p{margin:0;}#mermaid-svg-XsywvXBuciEN3Rc1 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 .cluster-label text{fill:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 .cluster-label span{color:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 .cluster-label span p{background-color:transparent;}#mermaid-svg-XsywvXBuciEN3Rc1 .label text,#mermaid-svg-XsywvXBuciEN3Rc1 span{fill:#333;color:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 .node rect,#mermaid-svg-XsywvXBuciEN3Rc1 .node circle,#mermaid-svg-XsywvXBuciEN3Rc1 .node ellipse,#mermaid-svg-XsywvXBuciEN3Rc1 .node polygon,#mermaid-svg-XsywvXBuciEN3Rc1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-XsywvXBuciEN3Rc1 .rough-node .label text,#mermaid-svg-XsywvXBuciEN3Rc1 .node .label text,#mermaid-svg-XsywvXBuciEN3Rc1 .image-shape .label,#mermaid-svg-XsywvXBuciEN3Rc1 .icon-shape .label{text-anchor:middle;}#mermaid-svg-XsywvXBuciEN3Rc1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-XsywvXBuciEN3Rc1 .rough-node .label,#mermaid-svg-XsywvXBuciEN3Rc1 .node .label,#mermaid-svg-XsywvXBuciEN3Rc1 .image-shape .label,#mermaid-svg-XsywvXBuciEN3Rc1 .icon-shape .label{text-align:center;}#mermaid-svg-XsywvXBuciEN3Rc1 .node.clickable{cursor:pointer;}#mermaid-svg-XsywvXBuciEN3Rc1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-XsywvXBuciEN3Rc1 .arrowheadPath{fill:#333333;}#mermaid-svg-XsywvXBuciEN3Rc1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-XsywvXBuciEN3Rc1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-XsywvXBuciEN3Rc1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-XsywvXBuciEN3Rc1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-XsywvXBuciEN3Rc1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-XsywvXBuciEN3Rc1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-XsywvXBuciEN3Rc1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-XsywvXBuciEN3Rc1 .cluster text{fill:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 .cluster span{color:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-XsywvXBuciEN3Rc1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-XsywvXBuciEN3Rc1 rect.text{fill:none;stroke-width:0;}#mermaid-svg-XsywvXBuciEN3Rc1 .icon-shape,#mermaid-svg-XsywvXBuciEN3Rc1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-XsywvXBuciEN3Rc1 .icon-shape p,#mermaid-svg-XsywvXBuciEN3Rc1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-XsywvXBuciEN3Rc1 .icon-shape .label rect,#mermaid-svg-XsywvXBuciEN3Rc1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-XsywvXBuciEN3Rc1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-XsywvXBuciEN3Rc1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-XsywvXBuciEN3Rc1 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

1. 理解需求与代码

2. 识别风险点

3. 设计测试范围

4. 生成测试用例

5. 准备测试数据

6. 执行测试 / 生成脚本

7. 分析失败结果

8. 补回归清单

9. 输出测试结论

6.1 第一步:理解需求与代码

先让 Codex 同时理解两件事:

  • 需求希望达成什么目标
  • 代码目前是怎么实现的

示例提示词:

请先帮我理解这个需求和当前实现,不要急着生成测试用例。

需求:
会员资料增加 customerLevel 字段,支持新增、编辑、分页查询和列表展示。

请阅读相关 Controller、Service、Mapper、VO、前端页面,
输出:
1. 当前功能链路
2. 涉及的模块
3. 哪些点最值得重点测试

6.2 第二步:识别风险点

在测试工作里,风险识别比堆更多用例更重要。

建议让 Codex 重点识别:

  • 参数校验风险
  • 空值和边界值风险
  • 查询条件拼接风险
  • 数据保存和更新风险
  • 前后端字段不一致风险
  • 权限和异常提示风险

6.3 第三步:设计测试范围

常见拆分方式:

  • 功能正确性测试
  • 异常流程测试
  • 边界值测试
  • 联调测试
  • 回归测试

这一步的目标不是写详细测试步骤,而是先圈定“测什么”。

6.4 第四步:生成测试用例

这时再让 Codex 输出具体内容:

  • 测试点
  • 用例标题
  • 前置条件
  • 输入参数
  • 操作步骤
  • 预期结果

6.5 第五步:准备测试数据

这一步很容易被忽略,但往往决定测试是否顺畅。

可以让 Codex 帮你整理:

  • 需要哪些账号
  • 需要哪些数据库初始数据
  • 哪些字段必须为空
  • 哪些字段必须重复
  • 哪些状态组合必须提前准备

6.6 第六步:执行测试或生成脚本

如果是接口测试,Codex 可以帮助你:

  • 生成接口测试参数示例
  • 生成 Postman / curl 风格请求示例
  • 生成单元测试或集成测试思路

如果是页面测试,Codex 可以帮助你:

  • 生成步骤化操作清单
  • 列出每一步应该关注的页面反馈

6.7 第七步:分析失败结果

一旦测试失败,不要只问“为什么失败了”,而要把上下文一起给 Codex:

  • 测试步骤
  • 输入数据
  • 返回结果
  • 日志或堆栈
  • 涉及代码位置

6.8 第八步:补回归清单

一条缺陷修复完成后,应该让 Codex 反推:

  • 哪些旧功能需要回归
  • 哪些类似场景可能也会出问题
  • 是否有公共方法、公共 SQL、公共组件被影响

6.9 第九步:输出测试结论

最后要形成一份清晰结论:

  • 本次测试覆盖了什么
  • 发现了哪些问题
  • 哪些问题已修复
  • 哪些风险仍需人工确认

7. 推荐的 AI 辅助测试拆分模型

7.1 模型一:按测试阶段拆

  • 需求理解
  • 风险识别
  • 用例设计
  • 数据准备
  • 执行验证
  • 缺陷分析
  • 回归补充
  • 适合大多数项目。

    7.2 模型二:按测试类型拆

    • 功能测试
    • 接口测试
    • 异常测试
    • 边界测试
    • 回归测试

    适合需求较复杂、角色分工明确的团队。

    7.3 模型三:按系统层次拆

    • 页面层测试
    • 接口层测试
    • Service 逻辑测试
    • Mapper / SQL 校验
    • 数据库结果验证

    适合 Java / Spring Boot 等典型分层项目。

    8. Java / Spring Boot 项目实战实例

    下面用一个典型后端需求演示“全 AI 辅助测试”。

    需求背景

    会员资料管理增加 customerLevel 字段,要求支持:

    • 新增
    • 编辑
    • 分页筛选
    • 列表展示
    • 前后端联调

    8.1 第一步:让 Codex 先做测试范围分析

    请基于这个 Java / Spring Boot 项目,帮我做测试范围分析。

    需求:
    会员资料增加 customerLevel 字段,支持新增、编辑、分页查询和列表展示。

    请重点查看:
    1. Controller
    2. Service
    3. Mapper / XML
    4. ReqVO / RespVO
    5. 前端列表和表单

    输出:
    1. 功能测试点
    2. 异常测试点
    3. 边界测试点
    4. 联调测试点
    5. 回归测试点

    8.2 第二步:让 Codex 生成测试用例

    请基于刚才的测试点,生成详细测试用例。

    要求:
    1. 按“用例名称 / 前置条件 / 测试步骤 / 输入数据 / 预期结果”输出
    2. 区分正常、异常、边界场景
    3. 覆盖新增、编辑、分页查询、列表展示四类功能

    8.3 第三步:让 Codex 准备测试数据

    请帮我整理测试 customerLevel 需要准备的数据。

    要求输出:
    1. 哪些会员数据要预置
    2. 哪些 customerLevel 值需要覆盖
    3. 哪些空值、非法值、极端值需要测试
    4. 哪些旧数据需要验证兼容性

    8.4 第四步:让 Codex 输出接口联调清单

    请基于这个接口改动,输出前后端联调清单。

    包括:
    1. 请求参数检查
    2. 返回字段检查
    3. 列表展示检查
    4. 编辑回填检查
    5. 异常提示检查

    8.5 第五步:让 Codex 做回归分析

    请基于 customerLevel 字段改动,帮我输出回归测试范围。

    要求:
    1. 哪些旧接口可能受影响
    2. 哪些列表查询逻辑要回归
    3. 哪些导入导出、详情页、统计页需要复查
    4. 给出上线前最小回归清单

    图示流程

    #mermaid-svg-Np3nttloRTqoAl23{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Np3nttloRTqoAl23 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Np3nttloRTqoAl23 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Np3nttloRTqoAl23 .error-icon{fill:#552222;}#mermaid-svg-Np3nttloRTqoAl23 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Np3nttloRTqoAl23 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Np3nttloRTqoAl23 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Np3nttloRTqoAl23 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Np3nttloRTqoAl23 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Np3nttloRTqoAl23 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Np3nttloRTqoAl23 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Np3nttloRTqoAl23 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Np3nttloRTqoAl23 .marker.cross{stroke:#333333;}#mermaid-svg-Np3nttloRTqoAl23 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Np3nttloRTqoAl23 p{margin:0;}#mermaid-svg-Np3nttloRTqoAl23 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-Np3nttloRTqoAl23 .cluster-label text{fill:#333;}#mermaid-svg-Np3nttloRTqoAl23 .cluster-label span{color:#333;}#mermaid-svg-Np3nttloRTqoAl23 .cluster-label span p{background-color:transparent;}#mermaid-svg-Np3nttloRTqoAl23 .label text,#mermaid-svg-Np3nttloRTqoAl23 span{fill:#333;color:#333;}#mermaid-svg-Np3nttloRTqoAl23 .node rect,#mermaid-svg-Np3nttloRTqoAl23 .node circle,#mermaid-svg-Np3nttloRTqoAl23 .node ellipse,#mermaid-svg-Np3nttloRTqoAl23 .node polygon,#mermaid-svg-Np3nttloRTqoAl23 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Np3nttloRTqoAl23 .rough-node .label text,#mermaid-svg-Np3nttloRTqoAl23 .node .label text,#mermaid-svg-Np3nttloRTqoAl23 .image-shape .label,#mermaid-svg-Np3nttloRTqoAl23 .icon-shape .label{text-anchor:middle;}#mermaid-svg-Np3nttloRTqoAl23 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Np3nttloRTqoAl23 .rough-node .label,#mermaid-svg-Np3nttloRTqoAl23 .node .label,#mermaid-svg-Np3nttloRTqoAl23 .image-shape .label,#mermaid-svg-Np3nttloRTqoAl23 .icon-shape .label{text-align:center;}#mermaid-svg-Np3nttloRTqoAl23 .node.clickable{cursor:pointer;}#mermaid-svg-Np3nttloRTqoAl23 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Np3nttloRTqoAl23 .arrowheadPath{fill:#333333;}#mermaid-svg-Np3nttloRTqoAl23 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Np3nttloRTqoAl23 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Np3nttloRTqoAl23 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Np3nttloRTqoAl23 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Np3nttloRTqoAl23 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Np3nttloRTqoAl23 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Np3nttloRTqoAl23 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Np3nttloRTqoAl23 .cluster text{fill:#333;}#mermaid-svg-Np3nttloRTqoAl23 .cluster span{color:#333;}#mermaid-svg-Np3nttloRTqoAl23 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Np3nttloRTqoAl23 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Np3nttloRTqoAl23 rect.text{fill:none;stroke-width:0;}#mermaid-svg-Np3nttloRTqoAl23 .icon-shape,#mermaid-svg-Np3nttloRTqoAl23 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Np3nttloRTqoAl23 .icon-shape p,#mermaid-svg-Np3nttloRTqoAl23 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Np3nttloRTqoAl23 .icon-shape .label rect,#mermaid-svg-Np3nttloRTqoAl23 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Np3nttloRTqoAl23 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Np3nttloRTqoAl23 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Np3nttloRTqoAl23 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    需求:增加 customerLevel

    理解代码与需求

    生成测试点

    生成测试用例

    准备测试数据

    联调与执行

    分析失败日志

    补回归测试清单

    9. Bug 修复验证实战实例

    AI 辅助测试特别适合 Bug 修复验证,因为它不仅能确认“修没修好”,还能帮助你找“会不会连带影响别的地方”。

    场景

    订单分页接口在带手机号筛选时返回空数据,但不带手机号时正常。

    9.1 测试分析提示词

    请帮我为这个 bug 设计验证方案。

    现象:
    订单分页接口在手机号筛选场景下返回空数据。

    背景:
    项目是 Spring Boot + MyBatis。

    请输出:
    1. 需要验证的正常场景
    2. 需要验证的异常场景
    3. 需要验证的组合筛选场景
    4. 可能的回归影响范围

    9.2 失败分析提示词

    这是我执行测试后的现象和日志,请帮我分析失败原因。

    提供信息:
    1. 请求参数
    2. 返回结果
    3. SQL 日志
    4. 相关 Mapper XML

    请输出:
    1. 更像是参数问题、Java 逻辑问题还是 SQL 条件问题
    2. 最值得优先排查的位置
    3. 修复后应该重点回归哪些筛选条件

    图示流程

    #mermaid-svg-IassmXvuupYgzw8B{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-IassmXvuupYgzw8B .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-IassmXvuupYgzw8B .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-IassmXvuupYgzw8B .error-icon{fill:#552222;}#mermaid-svg-IassmXvuupYgzw8B .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IassmXvuupYgzw8B .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-IassmXvuupYgzw8B .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IassmXvuupYgzw8B .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IassmXvuupYgzw8B .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-IassmXvuupYgzw8B .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IassmXvuupYgzw8B .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IassmXvuupYgzw8B .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IassmXvuupYgzw8B .marker.cross{stroke:#333333;}#mermaid-svg-IassmXvuupYgzw8B svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IassmXvuupYgzw8B p{margin:0;}#mermaid-svg-IassmXvuupYgzw8B .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-IassmXvuupYgzw8B .cluster-label text{fill:#333;}#mermaid-svg-IassmXvuupYgzw8B .cluster-label span{color:#333;}#mermaid-svg-IassmXvuupYgzw8B .cluster-label span p{background-color:transparent;}#mermaid-svg-IassmXvuupYgzw8B .label text,#mermaid-svg-IassmXvuupYgzw8B span{fill:#333;color:#333;}#mermaid-svg-IassmXvuupYgzw8B .node rect,#mermaid-svg-IassmXvuupYgzw8B .node circle,#mermaid-svg-IassmXvuupYgzw8B .node ellipse,#mermaid-svg-IassmXvuupYgzw8B .node polygon,#mermaid-svg-IassmXvuupYgzw8B .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IassmXvuupYgzw8B .rough-node .label text,#mermaid-svg-IassmXvuupYgzw8B .node .label text,#mermaid-svg-IassmXvuupYgzw8B .image-shape .label,#mermaid-svg-IassmXvuupYgzw8B .icon-shape .label{text-anchor:middle;}#mermaid-svg-IassmXvuupYgzw8B .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-IassmXvuupYgzw8B .rough-node .label,#mermaid-svg-IassmXvuupYgzw8B .node .label,#mermaid-svg-IassmXvuupYgzw8B .image-shape .label,#mermaid-svg-IassmXvuupYgzw8B .icon-shape .label{text-align:center;}#mermaid-svg-IassmXvuupYgzw8B .node.clickable{cursor:pointer;}#mermaid-svg-IassmXvuupYgzw8B .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-IassmXvuupYgzw8B .arrowheadPath{fill:#333333;}#mermaid-svg-IassmXvuupYgzw8B .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IassmXvuupYgzw8B .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IassmXvuupYgzw8B .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IassmXvuupYgzw8B .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-IassmXvuupYgzw8B .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IassmXvuupYgzw8B .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-IassmXvuupYgzw8B .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IassmXvuupYgzw8B .cluster text{fill:#333;}#mermaid-svg-IassmXvuupYgzw8B .cluster span{color:#333;}#mermaid-svg-IassmXvuupYgzw8B div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IassmXvuupYgzw8B .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-IassmXvuupYgzw8B rect.text{fill:none;stroke-width:0;}#mermaid-svg-IassmXvuupYgzw8B .icon-shape,#mermaid-svg-IassmXvuupYgzw8B .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IassmXvuupYgzw8B .icon-shape p,#mermaid-svg-IassmXvuupYgzw8B .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-IassmXvuupYgzw8B .icon-shape .label rect,#mermaid-svg-IassmXvuupYgzw8B .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IassmXvuupYgzw8B .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-IassmXvuupYgzw8B .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-IassmXvuupYgzw8B :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    发现 Bug

    让 Codex 设计验证范围

    执行测试并收集结果

    让 Codex 分析日志与失败原因

    确认修复建议

    补回归场景

    输出测试结论

    10. AI 辅助测试中的常见风险

    10.1 风险一:测试点看起来很多,但没有真正覆盖风险

    防范建议:

    • 先做风险识别,再做用例扩展
    • 不要只要“更多用例”,要优先要“更关键的用例”

    10.2 风险二:AI 生成的测试步骤脱离真实项目

    防范建议:

    • 一定要给代码上下文、接口定义、页面结构
    • 不要只给一句需求就要完整用例

    10.3 风险三:只验证当前改动,没有考虑回归影响

    防范建议:

    • 每次修复后都让 Codex 生成回归清单
    • 重点关注公共方法、公共 SQL 和公共组件

    10.4 风险四:把 AI 输出当成最终结论

    防范建议:

    • AI 负责辅助分析
    • 人工负责最终确认测试结果和业务合理性

    11. 高质量提示词模板

    11.1 测试范围分析模板

    请帮我做测试范围分析。

    需求/问题:
    [描述需求或 bug]

    上下文:
    [项目技术栈、相关模块、相关文件]

    输出要求:
    1. 功能测试点
    2. 异常测试点
    3. 边界测试点
    4. 联调测试点
    5. 回归测试点

    11.2 测试用例生成模板

    请基于以下测试点生成详细测试用例。

    要求:
    1. 按“用例名称 / 前置条件 / 测试步骤 / 输入数据 / 预期结果”输出
    2. 区分正常、异常、边界场景
    3. 输出尽量可直接执行

    11.3 缺陷验证模板

    请帮我设计这个 bug 的验证和回归方案。

    问题描述:

    上下文:

    输出要求:
    1. 修复验证步骤
    2. 可能的副作用检查点
    3. 回归测试清单
    4. 上线前检查建议

    11.4 失败分析模板

    请基于以下测试失败信息,帮我判断问题根因。

    提供信息:
    1. 测试步骤
    2. 输入参数
    3. 返回结果
    4. 日志/堆栈
    5. 相关代码

    输出要求:
    1. 根因判断
    2. 优先排查位置
    3. 修复建议
    4. 修复后的回归建议

    12. 团队落地建议

    如果你想把这套方式推广到团队里,建议这样做:

  • 先在一个真实需求或真实 bug 上试点
  • 固化“测试范围分析模板”和“缺陷验证模板”
  • 让开发、测试、产品都能复用同一套提示词
  • 把高频场景沉淀到 AGENTS.md 或团队测试文档
  • 每次回归后复盘:哪些测试点是 AI 提醒出来的,哪些还需要人工经验补充
  • 13. 一句话总结

    Codex 全 AI 辅助测试的核心,不是让 AI 替你做判断,而是让 AI 帮你更快理解需求、更系统设计测试、更高效定位问题,并把测试过程沉淀成可复用的方法。

    14. 快速上手清单

    • 先让 Codex 理解需求和代码
    • 再让它识别风险点
    • 再输出测试范围和测试用例
    • 同时整理测试数据和联调清单
    • 测试失败后,把步骤、日志和代码一起给它分析
    • 修复后一定补回归清单
    • 最后输出一份清晰测试结论
    赞(0)
    未经允许不得转载:171主机测评 » Codex 全 AI 辅助测试操作指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址