霍格沃兹测试开发学社

《Python测试开发进阶训练营》(随到随学!)
2023年第2期《Python全栈开发与自动化测试班》(开班在即)
报名联系weixin/qq:2314507862

AI测试开发面经:50个Tool,Agent为什么总是选错?

关注 霍格沃兹软件测试开发 公众号,回复「资料」, 领取人工智能测试开发技术合集

最近 DeepSeek Harness、MCP、Agent Tool Calling 这些技术越来越热。

如果你正在准备 AI 测试开发岗位,我觉得有一类题很值得重点准备。

它不是问:

MCP 是什么?

也不是问:

Function Calling 怎么写?

而是直接给你一个真实业务问题:

公司做了一个企业客服 Agent,接入了 CRM、订单、物流、退款、知识库等多个 MCP Server,一共暴露了 50 多个 Tools。上线测试以后发现 Agent 偶尔会选错 Tool。

如果让你负责测试,你会怎么设计方案?

这道题看起来不复杂。

但往下追三四层以后,其实非常能区分:

会调用大模型 API 的候选人

真正有 AI 测试开发思维的候选人。

一、面试官第一问:Tool 能正常调用,为什么 Agent 还会出错?
很多传统测试工程师第一反应可能是:

我先把50个Tool全部做接口自动化测试。

当然应该做。

但这只是第一层。

假设:

get_order
get_refund
get_logistics
search_customer
所有接口:

100% PASS。

用户输入:

帮我查一下上个月那笔退款为什么失败了。

Agent 却调用:

get_order
而不是:

get_refund
接口本身没有任何 Bug。

真正出错的是:

User Intent

LLM Understanding

Tool Selection ← FAIL

Arguments

Tool Execution
所以我会先告诉面试官:

Agent Tool Testing 不能只测试 Tool 本身,还要测试模型对 Tool 的理解、选择和调用。

二、面试官继续追:那你准备怎么测“选没选对”?
这时候就需要构建:

Tool Evaluation Dataset
不能只准备:

输入 → Expected Output
而应该包含:

User Query
+
Expected Tool
+
Forbidden Tool
+
Expected Arguments
+
Expected Business Behavior
例如:

cases = [
{
"id": "tool_001",
"query":
"查一下订单A1024现在到哪了",

"expected_tools": [
"get_order",
"get_logistics"
],

"forbidden_tools": [
"create_refund"
]
},

{
"id": "tool_002",
"query":
"上个月那笔退款为什么失败?",

"expected_tools": [
"get_refund_record"
],

"forbidden_tools": [
"create_refund"
]
},

{
"id": "tool_003",
"query":
"这个客户已经退款8次了,
这次又要退5000元",

"expected_behavior":
"manual_review"
}
]
第三条非常重要。

因为 AI 测试不仅要验证:

什么时候应该调用 Tool。

还要验证:

什么时候不应该继续自动调用。

三、面试官:如果有多个Tool都能完成任务,Expected Tool怎么写?
这个追问就开始有点二面的味道了。

例如:

search_order
query_order
find_order
三个 Tool 都能查询订单。

如果 Case 写死:

assert selected_tool == "search_order"
可能会产生大量误报。

所以我不会简单定义唯一 Expected Tool。

而是根据业务定义:

case = {
"query":
"查询A1024订单状态",

"acceptable_tools": {
"search_order",
"query_order"
},

"forbidden_tools": {
"create_refund",
"cancel_order"
},

"expected_result":
"order_status_returned"
}
这背后其实是一个很重要的 AI 测试思想:

不要把“路径不同”直接等价成“结果错误”。

Agent 系统本身允许存在多条合理路径。

真正需要约束的是:

业务结果和行为边界。

四、面试官:那具体怎么自动化?
可以先写一个基础 Evaluator。

def evaluate_tool_selection(agent, case):

trace = agent.run(case["query"])

calls = [
event
for event in trace
if event["type"] == "tool_call"
]

selected_tools = {
call["tool"]
for call in calls
}

acceptable = set(
case.get("acceptable_tools", [])
)

forbidden = set(
case.get("forbidden_tools", [])
)

forbidden_called = (
selected_tools & forbidden
)

valid_selection = True

if acceptable:
valid_selection = bool(
selected_tools & acceptable
)

return {
"selection_pass":
valid_selection,

"forbidden_call":
list(forbidden_called),

"selected_tools":
list(selected_tools)
}
这段代码并不复杂。

真正重要的是测试思路:

我们开始把 Agent Trace 变成一种:

可自动断言的测试对象。
而不是只盯最终回答。

人工智能技术学习交流群
伙伴们,对AI测试、大模型评测、质量保障感兴趣吗?我们建了一个 「人工智能测试开发交流群」,专门用来探讨相关技术、分享资料、互通有无。无论你是正在实践还是好奇探索,都欢迎扫码加入,一起抱团成长!期待与你交流!👇

image

五、面试官继续问:50个Tool里偶尔选错,怎么知道到底是哪几个Tool有问题?
这里可以引出一个很有价值的指标:

Tool Confusion Matrix
假设我们跑5000条真实业务 Case。

得到:

真实意图
Order
Refund
Logistics
CRM
Order
97.1%
1.2%
1.1%
0.6%
Refund
5.8%
90.7%
2.0%
1.5%
Logistics
2.4%
1.1%
95.6%
0.9%
CRM
2.1%
1.6%
0.8%
95.5%
总体 Tool Selection Accuracy:

94.7%。

看起来还不错。

但是矩阵一拆:

Refund → Order 的误选率达到5.8%。
这时候测试团队就知道:

问题不是“Agent偶尔抽风”。

而是:

Refund 和 Order 两类 Tool 之间存在系统性的语义混淆。

六、面试官:发现Tool Confusion以后,你怎么定位原因?
如果只回答:

优化 Prompt。

我觉得分数不会很高。

因为真正可能影响 Tool Selection 的变量很多。

至少包括:

Tool Name

Tool Description

Parameter Schema

System Prompt

Tool数量

Tool排序

Context

Model

Routing Strategy
所以我会做:

Controlled Experiment
例如固定:

Model;

Temperature;

Dataset;

System Prompt;

其他 Tools。

只修改 Refund Tool Description。

版本A:

Get refund information.
版本B:

Query an existing refund record
and return refund status,
failure reason and refund amount.

This tool does NOT create
or modify refunds.
然后重新执行同一套 Dataset。

结果:

A B

Refund Selection 90.7% 96.8%

Refund→Order 5.8% 1.7%

Forbidden Call 0.4% 0.1%
这时候我们才有依据说:

Tool Description 优化有效。

而不是凭感觉改 Prompt。

七、面试官再追:Tool选对了,是不是就算PASS?
当然不是。

下一层是:

Argument Evaluation
Agent 正确选择:

create_refund
但是生成:

{
"order_id": "A1024",
"amount": 599
}
真实可退款金额:

199
Tool Selection:

PASS。

Business Result:

可能直接资损。

所以我们还要验证:

Argument Accuracy
例如:

def validate_refund_args(
tool_call,
business_context
):

args = tool_call["arguments"]

violations = []

if (
args["amount"]
> business_context["refundable_amount"]
):
violations.append(
"refund_amount_exceeded"
)

if (
args["order_id"]
!= business_context["order_id"]
):
violations.append(
"wrong_order"
)

return {
"pass":
len(violations) == 0,

"violations":
violations
}
这里开始体现:

AI Evaluation + 业务测试
真正结合起来了。

八、面试官:那LLM Judge要不要用?
要。

但不能什么都交给 LLM Judge。

这是现在 AI 测试面试里非常值得讲清楚的一点。

例如:

退款金额是否超过可退款金额。

完全可以:

assert refund_amount <= refundable_amount
为什么还要花 Token 让另一个 LLM 猜?

所以我会设计:

Hybrid Judge
Agent Trace

┌──────────┴──────────┐
↓ ↓
Rule Judge LLM Judge
↓ ↓
参数是否合法 回答语义是否合理
调用顺序 解释是否准确
禁止行为 用户意图是否满足
金额约束 复杂场景判断
└──────────┬──────────┘

Final Score
简单来说:

能用确定性规则判断的,就不要全部交给大模型。
LLM Judge 应该解决传统 Assertion 很难解决的问题。

九、面试官:MCP Server升级了,你怎么做回归?
这其实是传统测试工程师非常容易发挥优势的一道题。

假设:

Refund MCP V2.3
升级:

Refund MCP V2.4
研发说:

API没改,只改了一下Tool Description和Schema说明。

传统 API Regression:

全部通过。

是不是可以上线?

不一定。

因为对于 Agent:

Tool Description 本身就是运行逻辑的一部分。

所以我会自动执行:

MCP / Plugin Change

Schema Validation

API Regression

Tool Selection Eval

Argument Eval

Behavior Eval

Business Dataset

Old VS New

Quality Gate
十、面试官:Quality Gate怎么定?
比如:

def mcp_release_gate(report):

if report.api_pass_rate < 1.0:
return "BLOCK"

if report.critical_case_pass < 1.0:
return "BLOCK"

if report.forbidden_call_rate > 0:
return "BLOCK"

if report.tool_selection < 0.95:
return "BLOCK"

if report.argument_accuracy < 0.95:
return "BLOCK"

if report.p95_latency > 2.0:
return "REVIEW"

return "PASS"
为什么 Latency 超标只是:

REVIEW
而 Forbidden Call:

BLOCK
因为:

指标的业务风险等级不同。

这其实又回到了测试开发非常熟悉的:

Risk-Based Testing
十一、再给一道更难的追问:Tool越多,Agent是不是越强?
不一定。

假设:

10 Tools

Selection Accuracy
98.2%
增加到:

30 Tools

95.7%
再增加:

80 Tools

87.4%
这时候不能简单说:

模型能力下降了。

很可能是:

Tool Space过大。
尤其大量 Tool 的:

Name;

Description;

Schema;

业务能力

高度相似时,

Agent 的决策难度会明显提高。

这时候解决方案可能已经不是继续:

“优化Prompt。”

而是考虑架构:

User Query

Intent Router

Tool Group

Candidate Tools

LLM Selection

Execution
把:

80选1
变成:

5个Domain选1

Domain内部10选1
这时候测试工程师已经不只是在:

发现Bug。

而是在通过 Evaluation 数据:

推动Agent架构优化。

十二、这类面试题为什么特别适合传统测试工程师?
因为你仔细看:

里面真正用到的能力是:

接口测试;

契约测试;

数据驱动;

控制变量;

回归测试;

性能测试;

业务规则;

质量门禁;

故障定位。

这些都是传统测试开发工程师原本就应该具备的。

需要补充的是:

MCP
Tool Calling
Agent Trace
LLM Evaluation
Tool Selection Evaluation
Argument Evaluation
所以传统测试转 AI 测试开发,最好的思路不是:

把过去全部推倒重学。

而是:

把已有测试工程能力重新映射到AI系统。

十三、如果现在让我准备AI测试开发面试,我会真正做一个这样的项目
而不是简历上只写:

熟悉 LangChain、RAG、MCP。

我会做一个:

MCP Agent Evaluation Platform
至少支持:

Tool Dataset管理

Tool Selection测试

Argument测试

Trace记录

Rule Judge

LLM Judge

Confusion Matrix

版本对比

Regression

Quality Gate
哪怕只是自己做一个小型 Demo。

面试的时候都可以直接讲:

我发现 Tool 数量从10个增加到50个以后 Selection Accuracy 下降,所以我建立了 Confusion Matrix,发现两个订单 Tool 语义高度重叠,然后通过 Description A/B Test 验证,误选率从X降到了Y。

这句话的含金量,

远高于:

“我了解MCP协议。”

最后,再留一道AI测试二面题
企业 Agent 有:

80个Tools
目前:

Tool Selection Accuracy:93%

Argument Accuracy:97%

Task Success:91%
你做了一层 Intent Router,把每次提供给模型的 Tool 从80个减少到平均12个。

结果:

Tool Selection Accuracy:97%

Argument Accuracy:96%

Task Success:95%

P95 Latency:+18%

Token Cost:-23%
这个优化能不能上线?
一个好的回答不应该只是:

能。

而应该继续追问:

18%的延迟增加有没有突破SLA?

然后结合:

任务成功率;

业务场景;

Cost;

Latency;

Critical Case;

稳定性

做最终 Release Decision。

因为 AI 测试开发工程师真正需要解决的问题,从来不是:

这个模型得了多少分?

而是:

这个AI系统,在企业真实业务约束下,到底能不能上线?

当你能把这个问题讲清楚的时候,你和“会几个AI名词”的候选人,已经不是一个层级了。

推荐学习
智能化测试-测试用例生成公益训练营,从行业大模型特性讲起,带你搞懂AI测试的全链路:大模型能力评测、智能体Harness工程、Skill技能体系、CLI与MCP工具体系、RAG知识图谱——最后直接上手打造一个能自动生成测试用例的智能体。

image

关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。

学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。

我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。

在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。

同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。

posted @ 2026-08-31 12:41  霍格沃兹测试开发学社  阅读(12)  评论(0)    收藏  举报