老城区有家“王记面馆”,王师傅的招牌牛肉面汤头浓郁、面条筋道,街坊们吃了二十年。这些年,王师傅不断改良配方——换了更鲜的酱油、试了新款的压面机、调整了熬汤的火候。奇怪的是,无论怎么改,老顾客总说:“味道还是那个味道。”为什么?因为王师傅有个习惯:每一次改动之后,他都会自己先煮一碗,闭上眼睛尝一口,确认那口熟悉的味道没跑偏。这一“尝”,就是软件世界里的回归测试。 AI Agent 和牛肉面本质上是一回事。Agent 是一个会“想”会“动”的智能体,你给它升级模型、改提示词、调工具调用逻辑——每一次改动都像王师傅换酱油。你当然希望它变得更聪明,但你更怕它把已经会做的事情做砸了:以前能正确查天气的,现在答非所问;以前能流畅调 API 的,现在参数传错。Agent回归测试(Agent Regression Testing),就是给 AI Agent 建立的“王师傅尝面”体系——一套系统化的方法,确保每一次版本迭代,老功能不退步、老问题不复发。本文要讲的,正是这套体系里最重要的六个环节:测试策略、测试用例设计、基线对比、环境隔离、自动化测试管线、质量度量与发布门禁。

岗位关联

对于 AI 测试工程师和 AgentOps 从业者,掌握 Agent 回归测试是你从“调参手”走向“质量守门人”的必修课——它决定了你交付的 Agent 是可靠的“金字招牌”,还是不可控的“盲盒”。

目录
  1. 可视化演示
  2. 回归测试策略
  3. 测试用例设计
  4. 基线对比机制
  5. 环境隔离方案
  6. 自动化测试管线
  7. 质量度量体系
  8. 发布门禁控制
  9. AgentOps工具链
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态演示Agent回归测试的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Agent回归测试:Agen Agent回归测试策略与测试金 测试用例设计与场景覆盖方法 核心机制可视化 Agent回归测试整体架构与关键组件

回归测试策略

王师傅的厨房墙上贴着一张发黄的纸条:“换酱油必尝汤,换面条必尝筋道。”这张纸条,就是面馆的回归测试策略。它回答三个问题:改了什么要重点尝什么?哪些是雷打不动的核心味?什么时候需要从头到尾全部尝一遍?Agent 的回归测试策略,也是同样的三问。

Agent 是一个复杂的系统——底层大模型、提示词、工具调用逻辑、记忆机制,任何一环变了都可能让整体行为“变味”。回归测试策略(Regression Test Strategy) 的第一件事是范围定界:这次改动涉及哪个模块?是换了底座模型,还是改了工具调用 prompt?范围定界告诉你“重点尝哪碗面”,避免每次改动都对整个 Agent 全量试吃,浪费算力和时间。

第二件事是风险分级。面馆里,招牌牛肉面是雷打不动的核心,小菜可以偶尔变化。对 Agent 而言,用户高频使用的核心路径(如对话主流程、关键工具调用)属于“招牌菜”,必须优先回归;低频边缘功能可以排在后面。全量回归则是终极保险——就像过年时王师傅把菜单上每一道菜都做一遍,请老街坊盲测打分。Agent 发布前,同样需要一次完整的全量回归,把所有测试用例跑一遍,确保万无一失。

测试用例设计

光有“每次必尝”的规矩还不够,王师傅还得知道“具体尝哪几口”。是汤的咸淡?面的软硬?还是牛肉的火候?测试用例设计(Test Case Design) 解决的就是“尝哪几口”的问题。

Agent 的行为空间极其庞大——同一句话可能有十种合法回复,同一个任务可能有多条工具调用路径。把每一种可能都写成测试用例不现实。真正有效的做法是从真实对话记录中提取场景:把线上用户和 Agent 的历史交互捞出来,挑选出现频率最高、最能代表核心价值的对话,转化成回归用例。这就像王师傅记下顾客点得最多的十道菜,把它们作为“必尝清单”。

用例设计还要覆盖三类路径:正常路径(顾客点一碗牛肉面,Agent 准确下单)、边界路径(顾客语气含糊、订单信息不完整)、异常路径(顾客要求不存在的东西、工具调用超时)。正常路径保证“该做的事还做得好”,边界路径保证“临界情况下不掉链子”,异常路径保证“出了岔子也能优雅收场”。最后,所有用例进入用例库,按“核心→重要→一般”分层排列,核心用例每次回归必跑,一般用例按风险决定跑不跑。

基线对比机制

王师傅尝面时,心里总有一碗“标准面”——那是他二十年练出来的味觉记忆。这碗“标准面”,在 Agent 回归测试里叫基线(Baseline)。

基线对比(Baseline Comparison) 的核心逻辑很简单:在改动之前,让旧版 Agent 跑一遍测试用例,把它的决策路径、工具调用、最终输出全部记录下来,存成“基线快照”。改动之后,让新版 Agent 跑同样的用例,然后把新旧两条“决策轨迹”逐轮对比。

对比不是简单的“字面相等”。Agent 的输出天然带有随机性——同样一句“帮我订餐厅”,这次回复和下次回复措辞可能不完全一样,但意图和动作是对的。所以基线对比必须引入容差阈值:设定一个可接受的偏差范围,在这个范围内视为“等价”。比如“动作序列完全一致 + 最终输出语义相似度 > 0.9”就算通过。而像“工具调用参数传错”“关键动作缺失”这类偏差,不管文本多相似,都必须判定为回归失败。

IsRegression={1,if ActionsDiffer(Anew,Abaseline)>τact1,if Similarity(Onew,Obaseline)<τsim0,otherwise\text{IsRegression} = \begin{cases}1, & \text{if } \text{ActionsDiffer}(A_{new}, A_{baseline}) > \tau_{act} \\1, & \text{if } \text{Similarity}(O_{new}, O_{baseline}) < \tau_{sim} \\0, & \text{otherwise}\end{cases}
王师傅的标准面:基线不是一天建成的,而是反复迭代沉淀下来的“味道档案”。每次改动前先尝标准面,改动后再尝新面——基线对比就是这碗“标准面”的数字形态。
  1. 动作差异判定比较新旧 Agent 的工具调用序列 $A_{new}$ 与 $A_{baseline}$,若差异超过阈值则回归失败
    Anew=[a1,a2,a3],Abaseline=[a1,a4,a3]A_{new} = [a_1, a_2, a_3], \quad A_{baseline} = [a_1, a_4, a_3]
  2. 语义相似度判定计算新旧最终输出 $O_{new}$ 与 $O_{baseline}$ 的语义相似度,低于下限即回归失败
    Similarity(Onew,Obaseline)=共同语义特征总语义特征\text{Similarity}(O_{new}, O_{baseline}) = \frac{\text{共同语义特征}}{\text{总语义特征}}
  3. 综合判别任一条件触发,即判定为回归缺陷
    IsRegression∈{0,1}\text{IsRegression} \in \{0, 1\}

环境隔离方案

王师傅有个习惯:试新配方时,一定在角落里那口小灶上试,绝不用给客人出餐的大灶。为什么?怕串味,也怕把大灶搞坏。Agent 回归测试同样需要这样的“小灶”——环境隔离(Environment Isolation)。

Agent 运行依赖外部环境:API 服务、数据库、第三方接口。如果测试环境和开发环境、生产环境混在一起,会出现两类灾难:一是“串味”,你在测试环境里改了一笔数据,把线上用户的数据污染了;二是“互相干扰”,测试跑到一半,开发环境的同事改了个配置,测试结果立刻变得莫名其妙。

环境隔离有三个层次。第一层是独立测试环境:准备一套和生产结构一致但数据独立的测试环境,回归测试统一在这里跑。第二层是依赖隔离:对第三方 API 和外部服务使用 Mock 替身(模拟服务),让测试结果不被外部波动影响——就像试菜时用固定水源,不管外面自来水水质怎么变,小灶的水永远是同一桶。第三层是快照固定:每次迭代开始时,把测试环境的依赖版本、数据状态、配置参数打一个快照,整个回归周期都用这份快照。这样,测试出的任何问题都只和 Agent 代码本身有关,而不是“环境偷偷变了”。

自动化测试管线

王师傅年纪大了,不可能每天每道菜都亲手尝。于是他雇了一个学徒,把“尝面”这件事做成了一套固定流程:早上几点煮面、放多少盐、尝几口、记什么味道。这个固定流程,就是 Agent 回归测试的自动化测试管线(Automated Testing Pipeline)。

自动化测试管线把“手动跑用例、人工看结果”升级为“代码提交自动触发、用例自动执行、结果自动判定、报告自动生成”的完整闭环。它的第一个组件是触发机制:开发人员把代码推送到仓库的那一刻,管线就自动启动回归测试,不需要任何人喊“该测了”。第二个组件是并行执行:大量测试用例按环境拆分成多个并行任务,同时跑,半小时跑完过去一天的活。第三个组件是失败通知:一旦有用例失败,立即把失败信息(哪个用例、哪一步、基线是什么、实际是什么)推送到相关开发者的聊天工具。第四个组件是报告生成:每次回归跑完,自动汇总一份报告,清晰展示通过率、失败分布和趋势曲线。

这套管线最妙的地方在于“无人值守”——白天开发,晚上回归,第二天早上打开电脑,所有回归结果已经在看板上等你。它把回归测试从“需要主动想起的苦力活”变成了“自动巡逻的哨兵”。

质量度量体系

王师傅怎么知道自己的“尝面体系”到底靠不靠谱?光靠感觉不行,他需要一个质量度量体系(Quality Metrics)——一套数字化的评分卡。

度量指标通常有三个。第一个是用例通过率:本次回归跑的用例里有多少比例通过。通过率 95% 看起来不错,但要看绝对值——100 个用例挂 5 个和 1000 个用例挂 5 个,严重程度完全不同。第二个是回归缺陷密度:每千次回归中发现的缺陷数量。这个指标反映的是 Agent 代码的“脆度”——如果一个模块每次改动都产生回归缺陷,说明这个模块的耦合度太高、可维护性太差,该重构了。第三个是覆盖维度追踪:回归用例是否覆盖了 Agent 的全部核心能力维度(意图识别、工具调用、多轮记忆、异常处理)。覆盖率不足,意味着存在“没被尝过的菜”。

度量的价值不在数字本身,而在趋势。王师傅用一本账记录每天的试吃结果,三个月下来就能看出“哪道菜越来越稳,哪道菜反复出问题”。Agent 团队同样需要建立度量看板,持续追踪这些指标的变化曲线——回归不是一次性的动作,而是持续的质量监视。

RegDefectDensity=缺陷数回归次数×103\text{RegDefectDensity} = \frac{\text{缺陷数}}{\text{回归次数} \times 10^3}
王师傅的账本:他不在单个菜上纠结,而是看整本账的趋势。某道菜连续三次翻车,他就知道这道菜的配方得重新设计——度量让他看见“单次尝不出来”的长期规律。
  1. 统计缺陷总数在一个统计周期内,记录所有被回归测试拦截到的缺陷数量 $\text{缺陷数}$
    缺陷数=∑i=1n第 i 次回归发现的缺陷\text{缺陷数} = \sum_{i=1}^{n} \text{第 } i \text{ 次回归发现的缺陷}
  2. 统计回归次数记录同一周期内执行回归测试的总次数,乘以 $10^3$ 得到归一化基数
    回归次数×103\text{回归次数} \times 10^3
  3. 计算密度两者相除,得到每千次回归的缺陷密度
    RegDefectDensity=缺陷数回归次数×103\text{RegDefectDensity} = \frac{\text{缺陷数}}{\text{回归次数} \times 10^3}

发布门禁控制

有了度量体系,王师傅的面馆立了一条规矩:新配方想上菜单,必须先过“试吃会”这道门——试吃不通过,配方再好也不准上。这条规矩,就是 Agent 的发布门禁(Release Gate)。

发布门禁是质量保障体系里的“最后一公里”。它把回归测试的结论和发布流程绑定起来:设定一组硬性门槛条件——核心用例通过率 100%、全量用例通过率 ≥ 95%、零个“严重”级回归缺陷。门槛不达标,发布流程自动拦截,代码无法走向生产环境。这就是门禁的第一层力量:机器仲裁,不讲情面。

第二层是人工审批。有些回归失败属于“预期中的变化”——比如用户引导语从“请问有什么可以帮你”改成了“嗨,我是助手”,用例输出文本对不上,但语义完全一致。这类情况需要人工介入:查看基线对比的详细差异,判断是真缺陷还是“合理的改变”。人工审批是门禁的“安全阀”,避免机器过度僵化。第三层是发布后监控——门禁不是终点。发布之后,持续观察线上 Agent 的行为指标和回归基线,一旦出现线上行为偏离,立即回滚或热修复。

AgentOps工具链

最后,所有理念都要落地到工具上。王师傅的“尝面体系”再厉害,如果只靠脑子记,迟早出错——他需要一个工具链(Toolchain) 来支撑整个品控流程。

AgentOps 场景下的回归测试工具链,包含三个核心组件。第一个是CI/CD 集成:把回归测试管线嵌入到现有的持续集成/持续交付流程中,每次代码提交自动触发回归,和构建、部署流程无缝衔接。第二个是基线仓库:所有历史版本的基线快照、测试用例、对比结果集中存储,版本可追溯——想知道“上个月 Agent 在这条路径上是什么表现”,一条命令就能调出来。第三个是可视化看板:通过趋势图、热力图、用例状态面板等形式,把质量数据变成团队一眼能看懂的仪表盘——通过率在跌?哪个模块红的?哪个新功能引入了多少回归缺陷?看板上全部一目了然。

这套工具链的意义在于把“回归测试”从事件变成习惯——不是发版前才想起来测一把,而是每次改动都在“无形的手”的推动下自动完成验证。工具链是方法的载体,也是质量文化的基石。

AI 应用场景

场景一:客服 Agent 版本升级前的回归体检

阶段:测试验证

解决的问题:某电商平台的客服 Agent 要升级底层大模型,从 GPT-4 切到性能更强的 GPT-4o。传统做法是让产品经理手动和 Agent 聊几轮,但人工测试覆盖不了几百种用户提问方式。更危险的是,新模型可能在“退换货”这类核心场景上,工具调用参数从“order_id“变成了”orderId”,导致线上接口对接失败。

具体案例:质量团队用基线仓库保存了旧模型在 5000 条真实用户对话上的决策快照。升级后,自动化管线用同样的 5000 条对话跑新模型,逐轮对比动作序列和输出语义。结果发现了 32 处回归差异,其中 7 处属于“工具参数命名变化”的真缺陷,在发布前拦截了下来。

场景二:RAG 知识库更新的回归验证

阶段:持续监控

解决的问题:一个 ToB 的智能问答 Agent 每周更新知识库文档,每次更新都可能影响答案的准确性——新文档可能“带偏”了旧问题的答案。传统方式靠人工抽查,覆盖不全。

具体案例:团队把 300 个高频问题做成回归用例库,知识库更新后自动触发回归测试,用基线对比检查每个问题的答案相似度。若某个高频问题的答案相似度低于阈值(比如从“支持 7 天无理由退换”变成“不支持退换”),立即告警。这个机制让知识库更新从“高危操作”变成了“带保险的日常操作”。

场景三:Agent 工具调用链变更的回归守护

阶段:发布门禁

解决的问题:一个办公自动化 Agent 要接入新的日历 API,工具调用链发生变更。过去的经验是:接口联调没问题,但上线后发现和旧工具的编排冲突,导致“创建会议”和“提醒设置”两个动作互相覆盖。

具体案例:发布门禁要求所有涉及工具调用的用例通过率 100%。回归测试发现 2 个用例失败——新 API 的鉴权流程比旧 API 多了一步,Agent 在“静默模式”下不会触发鉴权弹窗。缺陷在门禁前被拦截,避免了一次线上事故。

Python 演示

python109 行
"""演示一个轻量级 Agent 回归测试框架:记录基线输出 -> 运行新版 Agent -> 逐轮对比 -> 生成回归报告"""import randomfrom dataclasses import dataclass, field  @dataclassclass TestCase:    name: str    prompt: str    expected_actions: list    expected_answer: str  @dataclassclass Agent:    version: str    drift_level: float = 0.0    free_lists: list = field(default_factory=list)     def run(self, prompt):        actions = ["查库存", "生成订单"]        if random.random() < self.drift_level:            actions.append("额外动作")        answer = "您的订单已生成"        if self.drift_level > 0.3:            answer = "您的订单可能有问题"        return {"actions": actions, "answer": answer}  def build_suite():    return [        TestCase("订购主流程", "我要下单",                 ["查库存", "生成订单"], "您的订单已生成"),        TestCase("查询订单", "我的订单到哪了",                 ["查订单状态"], "您的包裹正在派送中"),        TestCase("异常输入", "给我来十个",                 ["澄清需求"], "请问您需要什么?"),    ]  def extract_actions(result):    return result["actions"]  def extract_answer(result):    return result["answer"]  def actions_similar(base, new):    return base == new  def answer_similar(base, new):    def normalize(text):        return "".join(text.split())    return normalize(base) == normalize(new)  def compare_result(base, new, act_threshold=1, sim_threshold=0.9):    act_diff = sum(1 for a, b in zip(base["actions"], new["actions"]) if a != b)    act_diff += abs(len(base["actions"]) - len(new["actions"]))    is_act_fail = act_diff > act_threshold    is_sem_fail = not answer_similar(base["answer"], new["answer"])    return is_act_fail or is_sem_fail  def run_regression(agent, suite):    baseline_suite = [case for case in suite]    results = []    failed_case_count = 0    for case in baseline_suite:        base = {            "actions": case.expected_actions,            "answer": case.expected_answer,        }        new_result = agent.run(case.prompt)        failed = compare_result(base, new_result)        results.append((case.name, new_result, failed))        if failed:            failed_case_count += 1    return results, failed_case_count  def main():    suite = build_suite()    print("=== Agent 回归测试 ===")    for drift in (0.0, 0.35, 0.6):        agent = Agent(version=f"v2-{drift:.2f}", drift_level=drift)        results, fail_count = run_regression(agent, suite)        print(f"\n新版 Agent 漂移系数 = {drift:.2f}")        for name, result, failed in results:            mark = "FAIL" if failed else "PASS"            print(f"  [{mark}] {name}: {result['answer']}")            if failed:                print(f"       实际动作 = {result['actions']}")        total = len(suite)        pass_rate = (total - fail_count) / total * 100        print(f"通过率 = {pass_rate:.0f}% ({total - fail_count}/{total})")        if fail_count > 0:            print(">>> 门禁拦截:存在回归缺陷,禁止发布 <<<")        else:            print(">>> 门禁通过:可以发布 <<<")  if __name__ == "__main__":    main()
目的:演示一个最小可用的 Agent 回归测试闭环——用“漂移系数”模拟新版 Agent 的行为退化,通过基线对比自动判定回归失败,并按发布门禁逻辑给出是否可发布的结论。
  1. free_lists: list = field(default_factory=list)使用 dataclass 时,可变类型必须用 field(default_factory=...) 而非直接 [],避免多个实例共享同一个列表的经典陷阱
  2. drift_level模拟新版 Agent 的行为漂移程度:值越大,越容易产生“回归缺陷”
  3. agent.run(case.prompt)新版 Agent 在测试用例上的实际输出,是回归对比中的“被检方”
  4. case.expected_actions基线的标准动作序列,来自旧版 Agent 的可靠记录
  5. compare_result(base, new_result)核心对比函数:动作序列差异 + 输出语义相似度,任一超标即判回归
  6. failed_case_count += 1统计失败用例数,是计算通过率和触发门禁的基础
  7. pass_rate通过率 = 通过用例数 / 总用例数,是发布门禁的核心指标

常见误区

误区我以为回归测试很简单,就是把所有历史测试用例都跑一遍,全绿就万事大吉。

正解全量重跑只是回归测试的一种执行形式,而非全部。真正的回归测试是“有策略、有基线的对比”——你要知道哪些用例覆盖了这次改动的风险区、哪些是核心路径必须不折不扣地过、哪些可以降级跳过。没有策略的全量重跑,就像把整本菜谱每道菜都做一遍却不对比标准味道,费了功夫却看不出哪道菜变了味。

为何常见:因为传统软件测试中“回归”往往确实表现为全量重跑,而 Agent 测试用例数庞大,反直觉地更需要做减法而非加法。

误区新版 Agent 的回复文字和旧版一模一样,我认为这就算测试通过。

正解Agent 的价值不只在于“说了什么”,更在于“做了什么”。一个回复“好的,为您预订了”的 Agent,可能这次根本没有调用预订 API——它在撒谎。回归对比必须同时检查动作序列和最终输出,动作错了哪怕文字全对也是回归失败。王师傅尝面不光尝味道,还要看面条是不是真的下了锅。

为何常见:传统软件测试看输出,而 Agent 是“输出 + 行为”的双重系统,只盯输出是人类直觉,容易忽略工具调用链这个关键维度。

误区为了省成本,我直接把生产环境的数据复制一份当测试环境,认为这样测出来更真实。

正解这恰恰是环境隔离的大忌。回归测试需要的是“稳定可控”的环境,不是“真实”的环境。测试过程中产生的脏数据、Mock 服务的行为差异、并发干扰,都会污染测试结果。更危险的是,测试脚本的误操作可能波及生产数据。正确的做法是独立搭建一套结构等价但数据脱敏的环境,配合依赖 Mock 和快照,确保测试可复现。

为何常见:人们贪图“真实感”,却没意识到真实环境的不可控性正是可复现测试的头号杀手。

误区回归测试挂了一个用例,但我觉得问题不大,直接手动放行上线。

正解门禁存在的意义正在于“拒绝单点情绪决策”。手动放行不是不行,但必须先走人工审批流程——查明失败原因是代码缺陷还是预期的行为变更,在基线仓库里留下审批记录,并且明确该风险由谁承担。每一次“跳过门禁”都是在积累技术债。王师傅的规矩是“试吃不通过不许上菜单”,但偶尔也有例外——例外必须由店主本人签字,而不是帮厨顺手放行。

为何常见:开发者对“自己写的代码”有天然自信,高估了个人判断、低估了回归失败的连锁反应。

面试题

Q1. 下列关于 Agent 回归测试的描述,最准确的是?

单选题 · easy

  • A.只测试新功能的正确性
  • B.验证改动后已有功能是否退化← 正确答案
  • C.只测试模型推理速度
  • D.替代所有单元测试

答案:B。回归测试的核心目标是验证“改动没有弄坏已有功能”。A 是功能测试的范畴,C 是性能测试,D 夸大了回归测试的作用——它补充而非替代单元测试。

Q2. 基线对比在 Agent 回归测试中的作用是?

单选题 · easy

  • A.提高模型训练速度
  • B.记录旧版本行为作为比较标准← 正确答案
  • C.自动修复代码缺陷
  • D.减少测试用例数量

答案:B。基线是旧版本 Agent 在测试用例上的标准行为记录,回归测试用它和新版行为逐轮对比,识别偏差。它不能训练模型、不能修复缺陷、也不直接减少用例数。

Q3. Agent 回归测试的环境隔离首要目的是?

单选题 · easy

  • A.节省测试成本
  • B.防止测试之间相互干扰← 正确答案
  • C.让测试数据更真实
  • D.提升开发速度

答案:B。环境隔离的核心价值是“可复现”——独立环境、依赖 Mock、快照固定,确保测试结果只受 Agent 代码影响,不受外部环境和并发任务干扰。

Q4. 下列哪种情况最应当被判定为 Agent 回归缺陷?

单选题 · mid

  • A.回复措辞略有不同但语义一致
  • B.工具调用顺序发生了变化但结果正确
  • C.意图识别正确但关键工具参数传错← 正确答案
  • D.回答比旧版本更简洁

答案:C。工具参数传错是典型的行为级回归缺陷,直接影响下游系统。措辞差异在容差范围内可接受,动作顺序变化若结果正确需看具体约定,回答更简洁通常不算缺陷。

Q5. 在自动化测试管线中,触发回归测试的最优时机是?

单选题 · mid

  • A.每天深夜定时执行
  • B.代码提交到仓库时自动触发← 正确答案
  • C.产品经理手动点击
  • D.用户投诉后临时执行

答案:B。提交触发能第一时间发现回归问题,把修复成本降到最低。深夜定时也可以有,但提交触发才是管线的核心机制;用户投诉后再测是救火,不是质量保障。

Q6. Agent 回归测试中,基线对比应重点关注哪些维度?

多选题 · mid

  • A.意图识别的语义相似度← 正确答案
  • B.工具调用的参数与顺序← 正确答案
  • C.最终输出的文本相同
  • D.中间过程的时序与状态转换← 正确答案

答案:ABD。基线对比需覆盖意图、动作、时序等多个维度。C 不正确——文本完全一致既无必要(允许措辞变化),也不充分(文本一样但动作错仍是回归失败)。

Q7. 发布门禁在 Agent 回归测试体系中的作用是?

单选题 · mid

  • A.阻止所有代码发布
  • B.在质量指标不达标时自动拦截发布← 正确答案
  • C.替代人工代码审查
  • D.优化模型推理性能

答案:B。门禁是质量底线——核心用例必须全过、全量通过率达标、无严重缺陷,不满足则自动拦截。它不阻止合理发布,也不替代人工审查,更与推理性能无关。

Q8. 模型升级后,下列哪种基线对比策略最能有效发现隐蔽回归?

单选题 · hard

  • A.只比较最终回复文本
  • B.同时比较动作序列与中间状态← 正确答案
  • C.只比较工具调用次数
  • D.仅对比响应耗时

答案:B。隐蔽回归往往藏在“中间行为”里——动作序列对了但中间状态错了、某个记忆变量被污染、工具调用的时序变了。只比最终文本或调用次数都会漏掉这类问题,响应耗时更与功能正确性无关。

Q9. 在 Agent 回归测试中,下列哪些实践属于良好策略?

多选题 · hard

  • A.只回归最近改动过的模块
  • B.用真实对话记录构建用例库← 正确答案
  • C.为高风险路径设计专门用例← 正确答案
  • D.对每次改动执行全量用例回归

答案:BC。真实对话记录保证用例贴近线上场景,高风险路径专用用例保证关键环节不疏漏。A 太片面——改动影响是辐射的,不能只测自己那部分;D 成本过高,正确做法是“风险分级 + 关键节点全量”。

Q10. 关于 Agent 回归测试的质量度量与门禁,以下说法正确的是?

多选题 · extreme

  • A.回归缺陷密度应持续跟踪其趋势← 正确答案
  • B.门禁通过即可高枕无忧无需监控
  • C.覆盖维度追踪能发现“测不到的场景”← 正确答案
  • D.人工审批可处理预期中的行为变化← 正确答案

答案:ACD。缺陷密度趋势反映 Agent 底盘健康度,必须持续跟踪;覆盖维度追踪能暴露盲区;人工审批是门禁的安全阀,用于区分真缺陷与合理变化。B 错误——发布后仍需持续监控,门禁不是终点。