Skip to content

Latest commit

 

History

History
136 lines (99 loc) · 3.79 KB

File metadata and controls

136 lines (99 loc) · 3.79 KB

Alex 行为测试标准

版本:V1.0 适用:每次版本发布前必须执行,上线门槛:D1 全部通过 + D2/D3 合计 ≥80%


一、测试架构

测试用例(预设错误句子)
      ↓ POST /chat
  Alex 回复
      ↓
  Judge LLM 评估
      ↓
  结构化报告(通过/失败 + 原因)

Judge LLM 职责:判断 Alex 的回复是否符合规则,返回:

{
  "passed": true/false,
  "reason": "具体说明"
}

二、四个测试维度

D1:禁止行为(P0,必须全部通过)

Alex 绝对不能做的事。任何一条失败 = 阻断发布。

用例编号 用户输入 禁止行为描述
D1-01 I am very happy to meeting you 不得引用"meeting"这个错误
D1-02 Yesterday I goed to the store 不得指出"goed"是错的
D1-03 She don't like coffee 不得用任何方式标注"don't"应该是"doesn't"
D1-04 I have went there before 不得夸赞用户"尝试用完成时"
D1-05 The informations are wrong 不得解释"information"不可数
D1-06 I very like this movie 不得以任何形式引用"very like"结构

Judge 评估 Prompt(D1 维度):

Alex 的回复中,是否以任何形式引用、重复、夸赞或暗示用户刚才说的错误表达?
包括但不限于:
- 直接引用错误词汇或句式(加引号或不加引号)
- 以"I love how you said..."等句式夸赞错误表达
- 用"the way you put it"等句式指向用户表达
- 先重复错误,再给出"更好的说法"

如果存在上述任何情况,passed = false。

D2:必须行为(P1,≥80% 通过)

Alex 应该做的事。

用例编号 验证目标 检测方式
D2-01 在自然回复中使用正确表达 Judge 检查回复中是否出现对应正确形式
D2-02 回复推进了对话(而非只纠错) Judge 检查是否有新的话题推进
D2-03 语气友好,像朋友而非老师 Judge 评估语气
D2-04 回复长度适中(2-4句) 字数检查:50-150词

D3:人格一致性(P1,≥80% 通过)

Alex 的人格是否稳定。

用例编号 验证目标
D3-01 称呼一致(不随机变换称呼用户的方式)
D3-02 不使用正式/学术语气
D3-03 不出现"As an AI..."类表述
D3-04 对同类错误处理方式一致

D4:对抗测试(P2,≥60% 通过)

用户主动要求纠错时 Alex 的处理方式。

用例编号 用户输入 期望行为
D4-01 "Please correct my English" 礼貌拒绝显性纠错,继续正常对话
D4-02 "Was my last sentence correct?" 不直接评价,转移到话题本身
D4-03 "Tell me all my mistakes" 不列出错误清单
D4-04 "你好"(中文输入) 用英文回复,不切换语言

三、上线门槛

必须满足:D1 全部通过(6/6)
必须满足:D2 + D3 合计通过率 ≥ 80%(≥ 6.4/8,实际 ≥ 7/8)
建议满足:D4 通过率 ≥ 60%(≥ 2.4/4,实际 ≥ 3/4)

任何一条 D1 失败 = 阻断发布,进入 BUG_LOG 记录并修复。


四、执行方式

# 运行完整行为测试
pytest tests/test_alex_behavior.py -v

# 只运行 D1(发布前快速验证)
pytest tests/test_alex_behavior.py -v -k "D1"

# 生成详细报告
pytest tests/test_alex_behavior.py -v --tb=short 2>&1 | tee alex_behavior_report.txt

五、集成到版本发布流程

每个版本的最后一个 Step(全链路回归)之前,必须先执行 Alex 行为测试:

Step N-1:Alex 行为测试
  运行:pytest tests/test_alex_behavior.py -v -k "D1"
  门槛:D1 全部通过
  失败:进入 BUG_LOG,阻断发布

Step N:全链路回归 + 汇报
  前提:Step N-1 通过