4. 特性边界识别的通用方法
特性边界是AI产品功能、性能与安全维度的“红线”集合。本章提供一套可复用的通用识别方法,帮助评审团队系统化地界定功能边界(输入输出范围与状态约束)、性能边界(吞吐、延迟、资源阈值)和安全边界(权限、数据流、攻击面),为后续评审提供精确的评判依据。
适用场景
- 新功能立项评审:在PRD评审阶段同步完成三类边界的初步识别。
- 重大版本迭代前:对已有功能进行边界回归扫描,防止因边界扩张引入缺陷。
- 跨团队协作开发:多个团队依赖同一AI模块时,用边界契约对齐上下游预期。
- 安全合规审查:涉及用户数据、金融交易等敏感场景,需强制识别安全边界。
前置条件
- 已完成需求文档评审,核心用户故事已锁定。
- 已定义关键性能指标(如QPS、P95延迟、内存上限)。
- 已识别安全合规要求(如GDPR、等保2.0、数据加密规范)。
- 已准备好接口契约文档或API定义(Swagger/OpenAPI 等)。
操作步骤
步骤1:识别功能边界
采用输入输出定义法与用户故事映射法,明确每个功能点的数据范围、状态转换及异常分支。
- 输入输出定义法:列出所有输入参数(必填/选填、类型、取值范围、长度限制),输出结果(正常响应、错误码、超时行为),标记边界值(如最大/最小长度、枚举值边界)。
- 用户故事映射法:将用户故事拆解为“前置条件→操作→后置条件”,识别边界外场景(如未登录、数据不存在、并发冲突)。
案例提示:某AI文本生成接口的输入参数 “max_tokens” 定义边界为 [1, 4096],超出该范围应返回 400 错误码,而非截断或无限等待。
POST /api/v1/generate
请求体: {
"prompt": string, // 长度: 1-2000字符
"max_tokens": int, // 范围: [1, 4096],默认 512
"temperature": float // 范围: [0.0, 2.0],默认 1.0
}
响应体: {
"text": string,
"usage": { "prompt_tokens": int, "completion_tokens": int }
}
边界规则:
- prompt 为空或超过 2000 字符 → 400 InvalidPrompt
- max_tokens < 1 或 > 4096 → 400 InvalidMaxTokens
- temperature < 0.0 或 > 2.0 → 400 InvalidTemperature
步骤2:识别性能边界
采用负载压测推演法与资源耗尽假设法,量化系统在极限状态下的行为阈值。
- 负载压测推演法:根据预估并发量设计压测梯度,确定 P95/P99 响应时间、QPS 拐点、CPU/内存/网络IO 上限。
- 资源耗尽假设法:逐层假设资源耗尽场景(如磁盘写满、内存 OOM、连接池耗尽),验证降级策略是否生效。
案例提示:某AI图像识别服务的压测配置显示,当并发超过 800 时 P95 延迟从 350ms 陡增至 2.1s,该并发值即性能边界红线。
# 压测配置示例 (K6 脚本片段)
export let options = {
stages: [
{ target: 100, duration: "2m" },
{ target: 300, duration: "2m" },
{ target: 500, duration: "2m" },
{ target: 800, duration: "2m" },
{ target: 1000, duration: "2m" },
],
thresholds: {
http_req_duration: ["p(95)<500", "p(99)<2000"],
http_req_failed: ["rate<0.01"],
}
};
// 资源阈值告警规则
// CPU: < 75% (24核)
// 内存: < 80% (64GB)
// 网络IO: < 1.2 Gbps
步骤3:识别安全边界
采用攻击面分析法与权限矩阵校验法,枚举所有外部入口与数据流,定义角色-资源-操作的许可边界。
- 攻击面分析法:枚举所有外部接口(包括 Web、gRPC、消息队列、第三方回调),标记未认证、未授权或缺少输入校验的入口。
- 权限矩阵校验法:构建角色-资源-操作矩阵,识别越权操作路径(如普通用户访问管理员接口)。
注意:AI产品中模型推理接口常暴露原始特征数据,必须识别数据脱敏边界,防止敏感信息泄漏。
# 权限矩阵示例 (YAML 风格)
roles:
- name: "guest"
permissions:
- resource: "/api/v1/predict"
actions: ["POST"]
boundary: "输入长度 ≤ 500 字符,每日限 100 次"
- name: "developer"
permissions:
- resource: "/api/v1/predict"
actions: ["POST"]
boundary: "输入长度 ≤ 4000 字符,无调用频率限制"
- resource: "/api/v1/model/info"
actions: ["GET"]
- name: "admin"
permissions:
- resource: "/api/v1/*"
actions: ["GET", "POST", "PUT", "DELETE"]
boundary: "不可删除生产模型版本"
# 越权检测规则: 所有跨角色访问需触发 403 并记录审计日志
输入输出物
| 物品种类 | 名称 | 来源 | 格式/载体 | 关键内容 |
|---|---|---|---|---|
| 输入 | 功能需求文档 | 产品经理 | PRD / 用户故事 | 功能列表、验收条件、异常场景 |
| 输入 | 性能指标定义 | 架构师 | 性能规格书 | QPS、P95/P99延迟、内存/CPU上限 |
| 输入 | 安全合规要求 | 安全工程师 | 合规清单 | GDPR、等保2.0、加密标准、审计日志要求 |
| 输出 | 功能边界清单 | 本步骤 | 表格 / 矩阵 | 参数范围、状态转换、异常错误码 |
| 输出 | 性能边界阈值表 | 本步骤 | 数值表格 | 并发拐点、最大延迟、资源耗尽阈值 |
| 输出 | 安全边界矩阵 | 本步骤 | 权限矩阵 / 攻击面图 | 角色-资源-操作映射、数据脱敏规则 |
责任边界
| 角色 | 职责 |
|---|---|
| 产品经理 | 提供功能需求,确认功能边界是否覆盖核心用户场景。 |
| 架构师 | 定义性能指标,审核性能边界阈值是否合理可测。 |
| 安全工程师 | 识别安全合规要求,审核安全边界是否覆盖所有攻击面。 |
| AI产品评审专家 | 组织边界识别会议,汇总三类边界结论,输出评审报告。 |
记录材料
| 材料名称 | 内容要点 | 保存方式 |
|---|---|---|
| 特性边界评审记录表 | 功能边界清单、性能阈值表、安全矩阵,含版本号和 |