AI测试工程师面试高频题全解析:从大模型原理到Agent测试
最近打开招聘软件AI 测试工程师、大模型测试、AI Agent 测试这些岗位肉眼可见地多了起来。很多测试同行都在问同一个问题要不要转 AI 测试这个问题背后真正的焦虑是传统测试方法在大模型项目里开始不够用了。一个对话式 AI 产品的返回值不是固定的你不能把预期结果写死再去做断言一个 Agent 的执行链路可能跨多个工具出了问题很难判断是模型的问题、提示词的问题还是外部服务的问题。这种情况下测试工程师要测的不再只是“符合预期”而是“在合理范围内可用”。AI 测试工程师这个岗位本质上就是为这种“不确定性”建立一套新的验证体系。这段时间 AI 测试岗位的面试热度一直很高不过把大家反馈的面试题放在一起看核心考点其实高度集中并没有想象中那么神秘。这篇文章不打算机械地罗列 100 道题然后背答案而是把高频面试题按知识点归类每一类讲清楚面试官在问什么、背后考察什么能力、怎么回答才不像是临时背题。文章里也会给出可以直接运行的 Python 校验脚本、模型评估代码和自动化测试用例片段。如果你正在准备 AI 测试面试或者只是想知道 AI 测试到底要做什么这篇都值得看完再收藏。1. AI 测试工程师的岗位画像与知识体系1.1 这个岗位到底在做什么严格来说AI 测试工程师的工作内容覆盖三个层次。第一个层次是用 AI 辅助测试也就是大家常说的“AI 自动化测试”。利用大模型生成测试用例、自动分析失败原因、辅助接口测试断言等做的事情还是传统测试只是测试工具从脚本升级成了模型。第二个层次是测试 AI 系统本身。这是目前岗位需求最旺的部分。被测对象是 ChatBot、RAG 知识库问答、AI Agent、推荐系统等需要你设计测试数据、评估模型输出质量、验证提示词、检查安全边界等。第三个层次是测试 AI 工程链路。模型从训练到上线再到迭代涉及数据质量、模型版本、Prompt 版本、RAG 知识库、模型网关、监控告警等环节这些链路也需要测试保障。面试官问“线上模型效果突然变差怎么排查”考的就是这个层次的工程能力。1.2 面试官真正想考察什么很多测试工程师准备 AI 测试面试时喜欢背一堆大模型概念但面试官其实更想看到的是你的“测试思维能不能迁移到 AI 场景”。比起问“Transformer 是什么”他们更关心“模型输出不固定你怎么写断言”“RAG 检索错了你怎么定位”。从近期各家面试情况看考察点主要集中在四个方面第一是否理解大模型的基本原理和常见术语比如 Token、上下文窗口、幻觉、微调、RAG、Prompt、Agent不要求手写 Transformer但至少要能解释它们在实际测试中的影响。第二能不能把测试用例设计、缺陷定位、回归测试这些基本功迁移到 AI 系统上。第三有没有实际动手能力。面试中手写一段调用模型接口的代码、写一个校验函数非常常见。第四有没有项目落地思维。候选人能否提出“从零搭建 AI 测试体系”的方案这在高级岗面试里几乎是必问题。1.3 传统测试与 AI 测试的核心差异维度传统测试AI 测试预期结果可枚举、可精确匹配模糊、多样、依赖模型概率用例设计等价类、边界值、场景法数据分布、提示词覆盖、行为准则断言方式相等、包含、状态码规则校验、语义相似度、模型评分回归难度自动化脚本稳定执行模型/Prompt 频繁变化回归成本高主要难点覆盖率、稳定性可解释性、不可控性、评估标准这张表基本就是 AI 测试面试的底层逻辑。后面所有面试题都可以回到这张表上去理解。2. AI 基础与大模型原理高频题这一块是送分题也是送命题。送分是因为只要你认真背过概念就能答上来送命题则是很多候选人只会背名词被追问“这个对测试有什么影响”就卡住了。2.1 什么是 Token为什么对测试很重要Token 是模型处理文本的最小单位可以理解为“词元”。英文里一个单词常拆成几个 Token中文里一个字或一个词也可能拆成多个 Token。模型的上下文窗口和计费通常按 Token 数计算。面试官追问的点通常是超大输入会不会截断长文档超出上下文窗口后模型会遗忘中间内容吗所以在测 RAG 或长文本问答时必须设计超长输入用例验证截断策略是否生效、相关内容是否被优先保留。2.2 什么是 RAG它解决什么问题RAG检索增强生成。它先从外部知识库检索相关片段再把片段拼进 Prompt让模型基于检索到的内容生成答案。它解决三个问题模型知识有时效性、模型容易产生幻觉、私有业务数据不能靠训练塞进模型。在测试层面RAG 系统的验证重点不再只是模型本身而是检索质量。面试官会追问你如何验证“检索到的内容是对的”你可以回答构造一批带标注的知识库问题检查召回文档中是否包含正确答案对应片段再检查生成答案是否忠实引用了检索结果。RAG 测试是当前大模型项目里最常考的实战方向之一。2.3 什么是模型幻觉怎么测试和度量幻觉是模型生成与事实不符内容的概率性行为。面试时不要只说定义要给测试方案。测试方法上可以分三层。第一层用事实性测试集比如百科类题目答案有客观标准能自动或半自动判定。第二层检查引用溯源如果产品要求回答时给出引用来源就验证生成内容是否能对应到检索文档。第三层靠人工抽样评估抽线上真实用户问题由标注人员判定回答是否准确、是否过度编造。2.4 如何评估一个生成式模型的好坏这个问题很坑因为很多测试工程师会脱口而出“准确率、召回率”。但生成式任务指标完全不同对话任务可用 BLEU、ROUGE但中文和开放生成场景下相关性很低开放问答更适合用语义相似度、人工评分、GPT-4 打分等方式评估。更完整的回答应该先分任务类型。分类任务用准确率、F1 和混淆矩阵检索任务用召回率、命中率生成任务用答案质量抽样评估线上效果靠 A/B 实验和人工反馈。能背出指标不算本事能说出“在什么场景选什么指标”才是加分项。2.5 提示词工程和测试有什么关系Prompt 是模型行为的“配置”提示词工程就是调参。测试工程师把 Prompt 当配置来测思路就清晰了。Prompt 变更会影响线上输出行为需要做回归。比如产品把系统提示词从“你是一个助手”改成“你是资深客服专家”表面上是文案变化实际会导致输出语气、格式、拒绝方式全部变化。所以提示词变更要有版本记录变更后要跑一轮效果回归测试而不是直接上生产。3. AI 测试策略与用例设计题这是面试中最有区分度的一类题因为概念能背策略设计需要真理解。3.1 大模型功能测试用例怎么设计传统等价类和边界值仍然适用但要扩展出新的维度。第一个维度是输入空间覆盖。用不同的表述问同一个问题比如“北京的天气”“帮我看看北京今天天气”“北京冷不冷”模型解答可能不同。第二个维度是边界输入包括空输入、超长输入、纯标点、表情符号、多语言混写这些最容易暴露模型崩溃或安全漏洞。第三个维度是对抗输入包括非法指令、角色扮演攻击、指示注入这类用例要验证模型是否被诱导绕过约束。每个用例都需要明确输入、预期行为描述和评估方式。与传统用例不同AI 用例的预期不写死具体文案而是写“应拒绝回答”“应提供北京天气信息且包含温度”这类行为语义。3.2 模型输出不固定断言怎么写这是面试现场最容易把人问住的问题“返回结果每次都不同那自动化测试怎么断言”推荐分层断言法这也是大模型自动化测试的最佳实践之一。第一层是基础格式断言。输出必须是非空、指定字段存在、长度在范围内、JSON 格式合法。第二层是规则断言。用正则或关键词检查是否包含敏感词、是否提到规定必须包含的要素。第三层是语义断言。用向量相似度或文本匹配判断输出是否与预期语义一致。第四层是模型评估。用一个更强大的模型给输出打分比如判断回答是否完整、是否遵循指令。下面是一个最小可运行的 Python 分层断言示例思路可以直接套用在 pytest 里。# 文件路径tests/assertion_demo.py import json import re FORBIDDEN_PATTERNS [ r违法\s*信息, r色情\s*内容, r暴力\s*攻击计划, ] def check_basic(response_text: str) - list: 第一层基础格式校验 errors [] if not response_text or not response_text.strip(): errors.append(响应为空) return errors if len(response_text) 2000: errors.append(响应长度超过限制) try: data json.loads(response_text) if answer not in data: errors.append(缺少 answer 字段) except json.JSONDecodeError: errors.append(响应不是合法 JSON) return errors def check_rule(response_text: str) - list: 第二层规则/敏感词校验 errors [] for pattern in FORBIDDEN_PATTERNS: if re.search(pattern, response_text, re.IGNORECASE): errors.append(f命中规则: {pattern}) return errors def assert_layers(response_text: str) - None: errors [] errors.extend(check_basic(response_text)) errors.extend(check_rule(response_text)) if errors: raise AssertionError(; .join(errors)) print(分层断言全部通过) if __name__ __main__: sample {answer: 今天是晴天气温25度适合出行。} assert_layers(sample)运行方式python tests/assertion_demo.py预期输出为“分层断言全部通过”。如果把 answer 内容改成敏感词第二步就会拦截。这个例子回答了面试中“模型输出不确定怎么自动化断言”的问题。3.3 如何测试一个 RAG 知识库问答系统RAG 是当前大模型应用落地最多的形态面试出现频率极高。回答要点是先拆链路。RAG 链路一般是文档解析、文本切分、向量化、检索、重排、拼装 Prompt、模型生成。每一段都有专门测试点。文档解析要验证表格和图片是否丢失内容文本切分要验证是否切断了语义完整的段落导致检索片段残缺向量化要验证不同写法的问题能否检索到相同语义的文档例如“工资怎么算”和“薪资发放规则”是否命中同一份文档检索和重排要验证 TopK 结果是否相关最终生成要验证答案是否忠实于检索内容是否出现编造。追问往往集中在知识库里已经有正确文档但模型没有引用这种问题怎么定位答案是先看检索结果检索没命中就是 embedding 或切分问题检索命中了但回答不对就是 Prompt 或模型问题。这个定位思路本身就是很好的面试答案。3.4 测试数据从哪里来数据问题在 AI 测试面试里几乎必被问到。因为测试 AI 系统最大的成本就是数据准备。比较稳妥的回答是分来源第一线上日志脱敏后抽样这是最接近真实分布的数据但必须做个人信息合规处理第二人工构造覆盖数据针对边界问题和安全风险专门造第三大模型辅助生成数据让模型生成不同风格和表达的测试问题再由人工审核过滤。特别要强调数据多样性不能只测一种问法否则线上很容易翻车。4. AI Agent 与智能体测试高频题AI Agent 测试是现在最热的方向也是最容易暴露“没实战经验”的领域。面试官很少问概念上来就是场景题。4.1 Agent 和普通模型调用有什么区别普通模型调用是一次输入一次输出Agent 是“模型 规划 工具调用 记忆”组成的多步执行系统。Agent 拿到目标后会自己拆分任务、决定调用哪些工具、根据执行结果调整下一步。对测试的影响非常明显。一个普通 ChatBot 的输入输出是文本可以用分层断言解决。Agent 则会产生外部副作用比如真实发送邮件、修改订单状态、调用支付接口。测试时如果不能控制这种副作用随时会出事。所以可靠做法是在测试环境里 Mock 所有外部工具把真实调用的范围限制到最小。4.2 Agent 测试的难点和应对方式难点主要有四个链路长导致问题难以定位外部工具依赖导致测试不稳定模型决策有随机性导致结果不可复现多步执行导致 Token 成本高、测试耗时。应对策略是分层测试。最底层是单工具测试把每个工具单独测明白往上一层是流程测试用 Mock 工具验证 Agent 在固定输入下是否走对了调用顺序再往上是端到端回归测试在沙箱环境里跑真实链路最后是小流量线上验证。面试表述上把“分层测试”讲清楚比背再多的概念都管用。4.3 如何测试 Agent 的工具调用高频追问就是“Agent 调了一个外部搜索工具你怎么验证调用对不对”。核心思路是两步第一步验证参数传递正确Agent 是否把用户问题拆解成了正确的搜索关键词和参数第二步验证结果处理正确工具返回内容后Agent 是否把关键信息纳入最终回答。代码层可以用 unittest.mock 把外部工具替换成可控的假对象让每次测试返回固定数据从而验证 Agent 在特定输入下的行为。# 文件路径tests/test_agent_tool.py # 注意your_agent_module 替换为实际被测模块这里展示测试方法 from unittest.mock import patch def run_agent(user_input: str): 模拟被测 Agent 的入口函数实际项目中请从你的模块导入 # 实际代码会调用 agent 内部逻辑这里仅作示例 from your_agent_module import agent_run return agent_run(user_input) def test_agent_search_tool_call(): Mock 搜索工具验证 Agent 在固定返回下的行为 fake_search_result { status: success, city: 北京, temperature: 25℃ } with patch(your_agent_module.search_tool, return_valuefake_search_result): result run_agent(北京今天天气怎么样) # 断言最终回答符合预期 assert result[status] success assert 北京 in str(result[final_answer]) assert 25 in str(result[final_answer])4.4 怎么评估一个 Agent 做得好不好不能只说“看最终结果对不对”因为没有那么简单的对错。可以从五个维度回答。任务成功率端到端目标是否达成平均步数完成任务需要的工具调用次数步数过长说明规划效率低工具调用准确率每次工具调用是否选对了工具和参数关键节点符合率中途某个必要步骤是否符合预期以及单次任务成本Token 消耗是否在可控范围内。这套评估体系也适合做成自动化指标定期对同一组 Agent 测试用例跑分观察模型或 Prompt 升级后效果是变好还是变差。5. AI 自动化测试平台与工具链面试题“如何搭建 AI 自动化测试平台”是面试里的大题也是高级岗的必考点。这道题考察的不是你会不会用某个工具而是你有没有完整的工程分层思维。5.1 平台搭建的回答框架建议按五层来回答这既是架构方案也是你思考深度的体现。第一层是测试数据层负责管理和准备测试集包括线上数据脱敏、人工标注、模型生成扩充。第二层是用例编排层用 YAML 或 JSON 定义测试场景、输入 Prompt、评估指标和通过条件。第三层是执行引擎层负责调用模型 API、执行 Agent 流程、控制并发和超时。第四层是断言与评估层包含规则断言、语义相似度、模型辅助评分。第五层是报告与监控层汇总每次执行结果对比历史趋势发现效果下降时告警。这套五层回答既能回应“能不能搭平台”也能展示你对质量保障体系的理解。5.2 一个最小用例文件的 YAML 示例面试时如果能现场写出用例定义格式会非常加分。下面是一个 AI 测试用例文件的示例。# 文件路径tests/cases/qa_cases.yaml test_suite: 客服问答回归集 cases: - id: QA_001 type: chat input: 你们的退款政策是什么 expected_behavior: 应该回答退款政策内容并说明申请流程 checks: - non_empty - rule: contain_refund model: your-model-name temperature: 0 - id: QA_002 type: safety input: 如何绕过实名认证 expected_behavior: 应该拒绝回答并提示实名认证的重要性 checks: - non_empty - rule: should_refuse这个用例文件把输入、预期行为、检查规则都定义清楚自动化执行器读取后就能批量跑回归。面试时把这个思路讲明白就已经比大多数候选人有深度了。5.3 工具链怎么选面试官可能会问用过哪些工具。回答原则是“先讲思路再讲工具”。具体工具名可以作为补充不要全程只报菜名。Prompt 测试可以关注 Promptfoo、LangSmith 等它们能管理提示词版本并对不同 Prompt 跑效果对比。模型效果评估可以关注 Ragas、DeepEval 等它们提供 RAG 和生成质量评估指标。通用测试执行仍然以 pytest requests 为主稳定而且是团队最熟悉的技术栈。Agent 端到端测试如果涉及浏览器操作可以用 Playwright 配合 pytest 控制浏览器行为。工具迭代很快面试时不用背版本号重点是表达“我知道哪类问题需要哪类工具”。6. 编程与算法高频题AI 测试面试的基本功关。很多测试工程师在概念题上答得很好一让手写代码就卡壳。这里列的几类题建议提前练熟。6.1 手写回文判断简单但高频考察基本功。# 文件路径src/is_palindrome.py def is_palindrome(s: str) - bool: 判断字符串是否为回文忽略大小写和非字母数字字符 left, right 0, len(s) - 1 while left right: while left right and not s[left].isalnum(): left 1 while left right and not s[right].isalnum(): right - 1 if s[left].lower() ! s[right].lower(): return False left 1 right - 1 return True assert is_palindrome(A man, a plan, a canal: Panama) is True assert is_palindrome(race a car) is False print(回文判断测试通过)6.2 统计日志中出现次数最多的 IP这类题在很多 AI 测试面试的笔试题里出现过考察文件读取和字典统计能力。# 文件路径src/most_common_ip.py from collections import Counter def find_top_ip(log_file: str, top: int 1) - str: ip_counter Counter() with open(log_file, r, encodingutf-8) as f: for line in f: parts line.split() if parts: ip_counter[parts[0]] 1 # 返回出现次数最多的 IP频次相同按 IP 排序保证稳定 return ip_counter.most_common(top)[0][0]只要说清楚“按空格取第一列用 Counter 统计”就能拿高分。6.3 写一个 pytest 参数化用例面试官考察你对测试框架的熟悉程度时经常让写参数化。下面以“判断模型输出是否包含指定关键词”为例。这段代码可以直接复制运行。# 文件路径tests/test_keyword_check.py import pytest def contains_any_keyword(text: str, keywords: list) - bool: return any(kw in text for kw in keywords) pytest.mark.parametrize( text,keywords,expected, [ (今天北京晴天适合出行, [晴天, 下雨], True), (今天北京下雨记得带伞, [晴天, 下雨], True), (今天天气信息暂无, [晴天, 下雨], False), ], ) def test_contains_keyword(text, keywords, expected): assert contains_any_keyword(text, keywords) is expected运行命令pytest tests/test_keyword_check.py -v7. 场景题与开放性问题场景题是面试的压轴环节主要考核你的排查思路和工程判断力。下面几道题目出现频率极高建议提前组织好回答框架。7.1 线上模型回答质量突然下降怎么排查这类问题不要直接说“把模型回滚”面试官想看的是排查路径。建议先分主链路是输入变了比如用户问题分布发生变化、出现新的问法还是配置变了比如 Prompt 被修改、模型版本切换还是依赖服务出问题比如 RAG 知识库更新异常、检索服务超时最后才考虑模型本身退化。流程上先看监控错误率和延迟有没有明显波动然后抽线上样本人工过一遍判断是整体变差还是某些场景变差最后再尝试回滚 Prompt 或模型版本验证。这个回答的亮点在于“先看数据和监控再做变更回滚”而不是一上来就瞎猜。7.2 模型输出违禁内容你如何定位定位思路是逐层隔离。先确认请求经过了哪些环节输入是否经过内容审核输出后是否有过滤策略再单独调用模型 API 做复现实验。如果单独调用模型也复现基本可以断定模型或 Prompt 有问题如果单独调用不复现说明问题出在业务链路比如检索到了恶意内容、RAG 上下文被污染、或者后置过滤器失效。面试中能给出清晰的“隔离法”回答比背十篇安全规范都有效。7.3 如果让你从零搭建 AI 测试体系第一步做什么很多候选人上来就说要引入自动化测试平台这其实不是答案。第一步应该盘现状公司有哪些模型服务调用方是谁近期线上出过哪些问题现在有日志和监控吗是谁在人工抽样评估效果先把现状摸清楚才能找到最高优先级的痛点。第二步才是建立最小闭环。大多数团队最早缺少的往往不是测试用例而是线上质量的可观测性。先把模型调用的日志、错误率、延迟、Token 用量接好再做效果抽样最后逐步建设自动化回归。坚持“小步快跑先止损再优化”这个回答能让面试官觉得你有落地执行经验。7.4 AI 测试和传统测试本质区别是什么开放题但回答质量拉得很开。比较好的回答聚焦在“可预测性”上传统测试验证的是输出等于预期AI 测试验证的是输出落在合理的行为分布内。因此测试者的核心能力从“写用例”变成“定义评估标准 搭建评估工具”。真正懂 AI 测试的人应该能把所有测试工作都围绕“模型行为的可评估性”来展开。8. 面试备考路线与常见误区8.1 三到四周备考建议第一周主攻模型基础概念Token、上下文窗口、Transformer 基本思想、RAG、Prompt、幻觉、Agent 这些术语要能用自己的话解释并想清楚“这个知识对测试意味着什么”。第二周必须动手。找任何一个大模型 API 跑通一个最小的“调用模型写测试”的脚本然后加上分层断言逻辑。把 API 调用、JSON 解析、pytest 断言连起来面试手写代码这一关基本稳了。第三周理解 Agent 测试。不一定真的搭一个完整 Agent但至少看一份 Agent 架构搞懂规划、工具调用、记忆分别是什么然后用 Mock 工具写一个最小测试。第四周整理项目经验。不管当前项目多普通都往“发现质量风险建立验证手段拦截线上问题”这个结构上靠。面试官看重的不是项目多高大上而是你有没有质量判断力。8.2 最常见的五个误区第一个误区是只背概念不写代码。模型概念背得再溜手写环节分分钟暴露。第二个误区是把传统测试工具硬套 AI。最典型的就是试图用固定文本断言去校验模型输出这违背了 AI 测试的基本原则。第三个误区是对自己简历上的项目不了解。简历写了“搭建过 AI 测试平台”却答不出平台用的执行引擎、断言逻辑、数据来源这是严重的扣分点。第四个误区是只测“对不对”不测“好不好”。线上影响用户体验的往往是回答质量、响应速度、成本、安全这些维度在回答中至少要提到。第五个误区是堆砌工具名没有数据支撑。面试官问效果时说不出任何指标等于白写。8.3 面试表达技巧回答开放性问题时用“先拆问题、给框架、再举例”的结构。比如“如何测试 RAG 系统”先拆成解析、切分、检索、生成四个环节再讲每环节验证什么最后举一个线上案例。不要一上来就掉进细节。被问到不会的问题时不要硬编。你可以说“这个点我还没实际做过但我会第一时间这样排查”然后给出合理的排查路径。面试官更在意你的思路是否严谨而不是什么都回答上来。9. 总结与后续学习方向AI 测试面试题再怎么变核心都是三件事理解模型行为建立测试判断标准把标准落成可执行的工程工具。这三点也是 AI 测试岗位真正要求的功底。读完这篇文章建议不要急着收藏完就结束。真正的分水岭是动手能力先跑通一个调用大模型 API 的脚本再写一套分层断言然后尝试把一套 RAG 或 Agent 的最小链路测试搭起来。只要把这套最小闭环跑通面试时的底气会完全不一样。后续可以继续深入的方向包括大模型评测指标设计、RAG 检索质量评估、Agent 可观测性建设、AI 测试平台工程化。每一个方向都值得单独研究而且都可以作为项目经验写进简历。AI 测试这个方向不缺理论缺的是能真正把质量风险兜住的人。