在这里插入图片描述

很多人讨论 ChatGPT、Codex、Pro、Plus 时,容易陷入一种表层叙事。

ChatGPT 能不能写文章。
Codex 能不能写代码。
Plus 日常够不够用。
Pro 是否适合复杂任务。
AI 会不会让程序员变轻松。

这些问题都现实,但如果站在 CSDN 技术读者的角度,真正值得深入讨论的并不是“AI 能不能生成”,而是:

AI 生成的东西,能不能被测试?

这就是 AI Testability。

也就是 AI 输出的可测试性。

在传统软件工程里,代码能不能写出来只是第一步。
更重要的是它能不能运行、能不能测试、能不能回归、能不能维护、能不能在未来变化中继续保持稳定。

同样,ChatGPT 和 Codex 的输出也不能只看“生成得像不像”。
而要看它是否可测试、可验证、可复现、可审查、可迭代。

一个 AI 生成的方案,如果无法验证,只能算灵感。
一个 Codex 生成的 patch,如果无法测试,只能算草稿。
一个 ChatGPT 生成的技术判断,如果没有检验路径,只能算观点。
一个 Pro 级复杂任务,如果没有测试闭环,复杂度越高,风险越大。
一个 Plus 日常工作流,如果没有基本验收标准,输出越多,噪音也越多。

所以,下一阶段真正成熟的 AI 工程能力,不是 Prompt 写得多漂亮,而是把 AI 输出变成可测试对象。

一、传统软件工程的核心不是写代码,而是让代码可验证

软件工程发展到今天,早就不是“写出功能”那么简单。

一个功能上线之前,通常要经历:

需求评审
技术方案
编码实现
单元测试
集成测试
代码审查
灰度发布
线上监控
回滚预案

这些环节的目的不是让开发变慢,而是让系统可控。

因为代码写出来不代表正确。

它可能:

逻辑错误
边界条件遗漏
性能不足
安全风险
兼容性问题
破坏旧功能
测试覆盖不足
长期维护困难

所以软件工程真正关注的是:

如何证明这个改动是正确的?
如何知道它没有破坏已有逻辑?
如何在未来修改时及时发现问题?

这就是测试和验证的意义。

而 ChatGPT 和 Codex 进入开发流程后,这个问题变得更重要。

因为 AI 可以更快生成代码,也可以更快生成错误代码。

生成速度越快,验证体系越重要。

二、AI 输出最大的问题:看起来正确,但不一定可测试

ChatGPT 和 Codex 的输出,经常有一个特点:

看起来非常完整。

ChatGPT 可以生成结构清晰的文章。
Codex 可以生成格式规范的代码。
Pro 可以支撑多轮复杂任务。
Plus 可以处理大量日常工作。

但“看起来完整”不是工程质量。

比如 ChatGPT 生成一个架构方案:

系统分为意图层、上下文层、规划层、执行层、验证层和记忆层。

这个表达很漂亮,但问题是:

每一层如何落地?
输入输出是什么?
边界在哪里?
失败怎么处理?
怎样证明这个架构有效?

再比如 Codex 生成一个功能 patch:

新增异常状态筛选
修改前端筛选组件
补充后端查询参数
更新测试文件

看起来也完整,但还要问:

测试真的覆盖了吗?
旧筛选条件有没有被破坏?
导出逻辑是否同步?
接口兼容性是否还在?
类型检查是否通过?

AI 输出的问题,不是一定错,而是它经常缺少天然可信度。

所以必须把 AI 输出转成可测试对象。

三、ChatGPT 的输出也需要测试

很多人以为只有代码需要测试,文章、方案、总结不需要测试。

这是误解。

ChatGPT 生成的非代码输出,也应该有测试思维。

比如一篇技术文章,可以测试:

是否符合主题?
是否包含指定关键词?
是否符合目标读者?
是否避免重复角度?
是否有清晰论点?
是否有结构递进?
是否有空泛套话?
是否有事实性错误?
是否满足 Markdown 格式?

一个方案文档,可以测试:

是否回答了核心问题?
是否给出边界条件?
是否列出风险?
是否有实施路径?
是否有验收标准?
是否区分事实和假设?

一个业务分析报告,可以测试:

数据来源是否明确?
指标定义是否一致?
结论是否被数据支持?
是否存在未经验证的推测?
是否给出反例可能?

也就是说,ChatGPT 的输出虽然不是代码,但仍然可以设计验收标准。

可以抽象为:

interface TextOutputTest {
  name: string;
  target: "article" | "report" | "plan" | "summary";
  checks: {
    item: string;
    method: "manual" | "schema" | "keyword" | "logic" | "fact_check";
    required: boolean;
  }[];
}

例如:

const csdnArticleTest: TextOutputTest = {
  name: "CSDN 技术文章验收",
  target: "article",
  checks: [
    {
      item: "标题包含 ChatGPT、Codex、Pro、Plus",
      method: "keyword",
      required: true
    },
    {
      item: "文章角度偏工程化,而不是体验文",
      method: "manual",
      required: true
    },
    {
      item: "包含程序结构或伪代码",
      method: "schema",
      required: true
    },
    {
      item: "结尾有明确技术判断",
      method: "logic",
      required: true
    }
  ]
};

这就是把 ChatGPT 输出纳入测试思维。

四、Codex 的输出必须进入工程测试链

Codex 的输出更应该被测试。

因为它影响代码库。

一个成熟的 Codex 工作流,不应该是:

用户提出需求
  ↓
Codex 修改代码
  ↓
直接使用

而应该是:

用户提出需求
  ↓
Codex 分析影响范围
  ↓
生成修改计划
  ↓
人工确认
  ↓
Codex 输出 patch
  ↓
类型检查
  ↓
单元测试
  ↓
集成测试
  ↓
人工 review
  ↓
合并

Codex 的 patch 必须经过测试链。

可以定义一个 Codex 测试管线:

interface CodexTestPipeline {
  taskId: string;
  checks: CodexCheck[];
}

interface CodexCheck {
  name: string;
  type:
    | "type_check"
    | "unit_test"
    | "integration_test"
    | "scope_check"
    | "dependency_check"
    | "security_check"
    | "manual_review";
  required: boolean;
  command?: string;
}

例如:

const orderFilterPipeline: CodexTestPipeline = {
  taskId: "order-filter-feature",
  checks: [
    {
      name: "TypeScript 类型检查",
      type: "type_check",
      required: true,
      command: "npm run typecheck"
    },
    {
      name: "订单查询单元测试",
      type: "unit_test",
      required: true,
      command: "npm run test:orders"
    },
    {
      name: "禁止目录检查",
      type: "scope_check",
      required: true
    },
    {
      name: "新增依赖检查",
      type: "dependency_check",
      required: true
    },
    {
      name: "业务逻辑人工 Review",
      type: "manual_review",
      required: true
    }
  ]
};

这才是 Codex 进入真实项目的正确姿势。

五、Plus 场景需要轻量验收,Pro 场景需要完整测试闭环

Plus 和 Pro 的区别,也可以从可测试性角度理解。

Plus 更常见于日常任务:

文章初稿
内容总结
轻量代码解释
简单脚本
日常方案拆解
普通资料整理

这些任务不一定需要复杂测试系统,但至少需要轻量验收。

例如:

是否符合目标?
是否满足格式?
是否遗漏关键信息?
是否需要人工修改?
是否有明显错误?

Pro 场景不同。

Pro 更常见于复杂任务:

长上下文推理
大型代码库分析
多轮 Codex 协作
复杂架构设计
连续内容体系
多阶段项目任务

这些任务必须有更完整的测试闭环。

因为复杂任务的错误可能累积。

第一轮上下文错一点。
第二轮计划偏一点。
第三轮代码改错一点。
第四轮验证漏一点。
最后输出看起来完整,但实际已经偏离目标很远。

所以 Pro 级工作流应该包括:

任务验收标准
上下文检查
阶段性验证
工具调用记录
代码测试
人工 Review
回归检查
最终验收

可以这样理解:

Plus:轻量测试
Pro:系统测试
Codex:工程测试
ChatGPT:语义测试

六、AI Testability 的核心:把模糊目标转成可验收条件

AI 任务最难测试的地方,是用户目标往往很模糊。

比如:

帮我写得高深点。
帮我优化一下。
帮我把代码整理好。
帮我分析这个项目。
帮我改得更专业。

这些话不能直接测试。

因为没有明确标准。

什么叫高深?
什么叫优化?
什么叫整理好?
什么叫专业?

所以 AI Testability 的第一步,是把模糊目标编译成验收条件。

例如“写得高深点”可以转成:

减少浅层体验描述;
增加抽象概念;
加入工程结构;
加入程序模型;
形成明确技术判断;
避免口水化表达。

“优化代码”可以转成:

降低重复逻辑;
减少函数复杂度;
不改变业务行为;
不修改公共接口;
增加测试覆盖;
输出风险说明。

“分析项目”可以转成:

列出目录结构;
识别核心模块;
标记高风险区域;
说明模块依赖;
指出测试缺口;
给出低风险改进建议。

可以定义结构:

interface AcceptanceCriteria {
  id: string;
  description: string;
  verificationMethod:
    | "manual_review"
    | "unit_test"
    | "type_check"
    | "snapshot"
    | "schema_check"
    | "semantic_review";
  required: boolean;
}

示例:

const criteria: AcceptanceCriteria[] = [
  {
    id: "AC-001",
    description: "文章必须从 AI Testability 角度展开,而不是普通体验文",
    verificationMethod: "semantic_review",
    required: true
  },
  {
    id: "AC-002",
    description: "正文必须包含 ChatGPT、Codex、Pro、Plus",
    verificationMethod: "schema_check",
    required: true
  },
  {
    id: "AC-003",
    description: "必须包含程序结构或 TypeScript 示例",
    verificationMethod: "schema_check",
    required: true
  }
];

验收标准是 AI 可测试性的入口。

没有验收标准,AI 输出只能靠感觉判断。

七、AI 输出可以分成三类测试

AI 输出的测试方式,可以分成三类。

1. 结构测试
2. 语义测试
3. 行为测试

1. 结构测试

结构测试关注输出是否满足形式要求。

例如:

是否是 Markdown?
是否包含标题?
是否包含指定章节?
是否包含代码块?
是否输出 JSON?
是否满足 schema?

这类测试最容易自动化。

例如:

interface MarkdownArticleSchema {
  title: string;
  sections: string[];
  codeBlocksRequired: boolean;
  requiredKeywords: string[];
}

function validateMarkdownArticle(
  content: string,
  schema: MarkdownArticleSchema
): boolean {
  const hasTitle = content.startsWith("# ");
  const hasCodeBlock = content.includes("```");
  const hasKeywords = schema.requiredKeywords.every(keyword =>
    content.includes(keyword)
  );

  return hasTitle && (!schema.codeBlocksRequired || hasCodeBlock) && hasKeywords;
}

2. 语义测试

语义测试关注内容是否符合目标。

例如:

是否围绕主题?
是否存在跑题?
是否区分事实和假设?
是否有逻辑跳跃?
是否有重复空话?
是否给出明确判断?

语义测试很难完全自动化,但可以半自动化。

比如让模型做自检,再由人类确认。

3. 行为测试

行为测试主要用于 Codex 输出。

例如:

代码是否能运行?
功能是否符合预期?
测试是否通过?
旧功能是否回归?
性能是否下降?
权限是否正确?

这类测试必须接入工程系统。

结构测试保证“格式正确”。
语义测试保证“意义接近”。
行为测试保证“运行可靠”。

三者结合,才是完整的 AI Testability。

八、Codex 生成测试,不代表测试就可靠

很多人会让 Codex 补测试。

这是好习惯,但要注意一个问题:

AI 生成的测试本身也需要审查。

Codex 可能写出看似合理但实际无效的测试。

比如:

测试只覆盖 happy path;
测试没有断言核心行为;
测试 mock 掉了真正风险;
测试为了通过而修改期望;
测试覆盖的是实现细节而不是业务规则;

所以 Codex 补测试时,应该要求它说明测试意图。

例如:

请为这次订单筛选修改补充测试。
每个测试必须说明:
1. 测试目标;
2. 覆盖的业务风险;
3. 输入条件;
4. 期望结果;
5. 为什么这个测试必要。

可以设计结构:

interface TestIntent {
  testName: string;
  businessRisk: string;
  inputScenario: string;
  expectedBehavior: string;
  failureMeaning: string;
}

示例:

const testIntent: TestIntent = {
  testName: "should pass abnormalStatus filter to order query API",
  businessRisk: "前端筛选项存在,但参数未传递给后端,导致筛选无效",
  inputScenario: "用户选择 abnormalStatus=manual_review",
  expectedBehavior: "请求参数中包含 abnormalStatus=manual_review",
  failureMeaning: "筛选 UI 和后端查询未正确连接"
};

这比单纯生成测试代码更重要。

因为测试的价值不在数量,而在它保护了什么业务风险。

九、AI 回归测试:防止下一轮 AI 推翻上一轮 AI

ChatGPT 和 Codex 的多轮协作有一个隐患:

下一轮 AI 可能推翻上一轮结果。

比如:

第一轮 ChatGPT 说文章要从 AI Testability 角度写。
第二轮又开始写成普通工具体验文。

第一轮 Codex 修改了订单筛选。
第二轮又“优化代码”时删除了筛选逻辑。

这就是 AI 工作流里的回归问题。

所以需要 AI Regression Test。

对于文章,可以有回归检查:

是否仍然保持原主题?
是否丢失指定关键词?
是否删除了关键章节?
是否改变了目标读者?
是否重新引入被禁止内容?

对于代码,可以有回归检查:

已有测试是否仍然通过?
旧接口是否仍兼容?
旧字段是否仍存在?
旧业务规则是否被保留?
上一次人工确认的边界是否被突破?

可以抽象为:

interface AIRegressionCheck {
  name: string;
  protectedRule: string;
  checkMethod: "snapshot" | "unit_test" | "manual_review" | "schema_check";
  required: boolean;
}

示例:

const regressionChecks: AIRegressionCheck[] = [
  {
    name: "保护文章主题",
    protectedRule: "文章必须围绕 AI Testability,不得变成普通 ChatGPT 体验文",
    checkMethod: "manual_review",
    required: true
  },
  {
    name: "保护订单导出逻辑",
    protectedRule: "订单筛选条件变更时,必须检查导出逻辑",
    checkMethod: "unit_test",
    required: true
  }
];

AI 进入长期任务后,回归测试会越来越重要。

十、从 Prompt 模板到 Test Template

很多人保存 Prompt 模板。

比如:

请你作为资深架构师,帮我分析以下系统……

但更高阶的做法,是保存 Test Template。

因为 Prompt 模板保证不了输出质量,Test Template 才能约束结果。

例如一个 CSDN 技术文章模板,不仅要有 Prompt,还要有测试:

{
  "template": "csdn_technical_article",
  "required": {
    "keywords": ["ChatGPT", "Codex", "Pro", "Plus"],
    "format": "Markdown",
    "code_blocks": true,
    "target_reader": "developer"
  },
  "forbidden": {
    "style": ["shallow_experience", "pure_marketing"],
    "content": ["unrelated_links"]
  },
  "checks": [
    "has_clear_thesis",
    "has_engineering_structure",
    "has_program_model",
    "has_conclusion"
  ]
}

一个 Codex bugfix 模板,也应该有测试:

{
  "template": "codex_bugfix",
  "required": {
    "analyze_before_patch": true,
    "minimal_change": true,
    "tests_required": true,
    "human_review_required": true
  },
  "forbidden": {
    "new_dependencies": true,
    "database_migration": true,
    "unrelated_refactor": true
  },
  "checks": [
    "type_check",
    "unit_test",
    "scope_check",
    "diff_review"
  ]
}

Prompt 模板解决“怎么让 AI 生成”。
Test Template 解决“怎么判断 AI 生成得对不对”。

两者结合,才是工程化使用。

十一、AI Testability 会改变代码库结构

未来适合 Codex 参与的代码库,可能会更重视测试结构和测试意图。

一个 AI-Ready Repository 可能包含:

project/
  src/
  tests/
  docs/

  .ai/
    acceptance/
      feature.criteria.json
      bugfix.criteria.json

    regression/
      protected-rules.json
      business-invariants.json

    test-intents/
      order-filter.intent.md
      auth-guard.intent.md
      payment-settlement.intent.md

    workflows/
      codex-feature.workflow.json
      codex-bugfix.workflow.json
      codex-refactor.workflow.json

其中 business-invariants.json 可能记录:

{
  "rules": [
    {
      "id": "ORDER_EXPORT_FILTER_SYNC",
      "description": "订单导出必须与订单列表筛选条件保持一致",
      "relatedModules": ["orders", "export"],
      "requiredTests": ["orderExport.test.ts"]
    },
    {
      "id": "AUTH_REFRESH_TOKEN_KEEP_LOGIN",
      "description": "有效 token 存在时,刷新页面不应回到登录页",
      "relatedModules": ["auth", "router"],
      "requiredTests": ["authGuard.test.ts"]
    }
  ]
}

这些不是给人看的普通文档,而是给 AI 和测试系统共同使用的工程上下文。

未来代码库不仅要可读,还要可测。
不仅要人可测,还要 AI 可测。

十二、AI Testability 与 Human Review 的关系

AI 可测试性不是为了取消人工 Review。

相反,它是为了让人工 Review 更有效。

没有测试的人工 Review,很容易变成凭经验看一遍。
有测试和验收标准的 Review,才更聚焦。

例如 Codex 提交一个 patch,人工 Review 可以直接看:

是否满足验收标准?
哪些测试通过?
哪些测试没跑?
是否触碰禁止区域?
是否有未验证假设?
是否有业务规则需要确认?

这比从头读所有代码更高效。

AI Testability 的目标不是替代人,而是把人从低层检查中解放出来,让人聚焦更高层判断。

机器负责:

格式检查
类型检查
单元测试
范围检查
依赖检查
回归测试

人负责:

业务判断
架构判断
风险判断
长期维护判断
产品价值判断

这才是合理的人机协作。

十三、Pro 级复杂任务必须分阶段验收

Pro 级任务常常不是一次完成。

比如:

写一组 20 篇技术文章;
重构一个大型模块;
分析一个完整系统;
构建一个长期内容体系;
让 Codex 多轮参与项目修改;

这类任务不能只在最后验收。

因为最后才发现方向错,成本太高。

应该分阶段验收:

阶段一:目标是否正确?
阶段二:上下文是否完整?
阶段三:计划是否合理?
阶段四:初稿或 patch 是否符合边界?
阶段五:测试是否通过?
阶段六:最终结果是否满足目标?

可以定义:

interface StageGate {
  stage: string;
  requiredChecks: string[];
  canProceed: boolean;
}

示例:

const proWorkflowGates: StageGate[] = [
  {
    stage: "Intent",
    requiredChecks: ["目标明确", "约束明确", "验收标准明确"],
    canProceed: true
  },
  {
    stage: "Context",
    requiredChecks: ["相关文件已加载", "历史规则已加载", "风险边界已加载"],
    canProceed: true
  },
  {
    stage: "Plan",
    requiredChecks: ["步骤合理", "风险分级完成", "需要人工确认点已标记"],
    canProceed: true
  },
  {
    stage: "Execution",
    requiredChecks: ["未越界", "小步修改", "输出 diff"],
    canProceed: false
  }
];

这就是 Stage-Gated AI Workflow。

复杂任务一定要分阶段验收。

十四、AI Testability 的最终目标:让 AI 输出进入 CI/CD

如果 Codex 真的参与工程开发,那么它的输出最终应该进入 CI/CD。

但不是直接进入主干。

而是:

Codex 生成 patch
  ↓
本地验证
  ↓
自动化测试
  ↓
静态检查
  ↓
安全扫描
  ↓
人工 review
  ↓
合并
  ↓
CI/CD

AI 生成的代码,不应该绕过工程体系。
它应该被工程体系吸收。

未来可能出现一种流程:

AI-generated Pull Request
  ↓
AI Trace
  ↓
Test Pipeline
  ↓
Human Review
  ↓
Merge Decision

PR 里不仅包含代码 diff,还包含:

任务目标
上下文摘要
修改原因
风险说明
测试结果
未验证假设
人工确认点

这会成为 Codex 工程化的重要方向。

十五、未来程序员的新能力:为 AI 设计测试

过去程序员写测试,是为了验证自己写的代码。

未来程序员还要为 AI 写测试。

这包括:

为 ChatGPT 输出设计验收标准;
为 Codex 修改设计测试管线;
为 AI 工作流设计回归检查;
为上下文系统设计污染检测;
为工具调用设计边界测试;
为 Pro 级长任务设计阶段验收。

这是一种新的工程能力。

可以叫:

AI Test Design

它和传统测试不同。

传统测试主要验证代码行为。
AI Test Design 还要验证语义、上下文、边界、计划和输出质量。

未来真正成熟的开发者,不只是会用 ChatGPT 和 Codex,而是会测试它们的输出。

十六、结语:AI 工程化的关键不是生成,而是可测试

ChatGPT、Codex、Pro、Plus 带来的最大变化,不是让生成变得更容易。

生成已经越来越容易。

真正困难的是:

如何证明生成结果是对的?
如何防止下一轮生成破坏上一轮结果?
如何让 Codex 的 patch 进入测试链?
如何让 ChatGPT 的方案具备验收标准?
如何让 Pro 级复杂任务分阶段可控?
如何让 Plus 日常输出减少噪音?

这就是 AI Testability 的价值。

ChatGPT 需要语义可测试。
Codex 需要工程可测试。
Plus 需要轻量验收。
Pro 需要完整测试闭环。

未来 AI 使用会从三个阶段演进:

第一阶段:能生成
第二阶段:能控制
第三阶段:能测试

能生成,只是体验层。
能控制,进入工作流。
能测试,才进入工程体系。

对 CSDN 技术读者来说,真正值得关注的不是 ChatGPT 或 Codex 一次能写出多漂亮的结果,而是:

能不能把 AI 输出纳入测试?
能不能让 AI 修改可回归?
能不能让 AI 工作流可验收?
能不能让 AI 结果可审查?

这才是 LLM-Native 软件工程真正成熟的标志。

未来优秀的团队,不会只问“AI 能不能写代码”。

他们会问:

AI 写出来的代码,如何测试?
AI 生成的方案,如何验证?
AI 参与的任务,如何回归?
AI 的输出,如何进入工程质量体系?

当这些问题被解决,ChatGPT、Codex、Pro、Plus 才不只是效率工具,而会成为真正的软件工程基础设施。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐