

一个 AI 应用上线之前,几乎所有团队都会做功能测试:输入正常问题,验证回答是否准确;测试边界条件,确认系统不会崩溃。这套测试流程在逻辑上无懈可击,在实践中却留下了一个巨大的盲区——它只测试了“善意用户的正常使用”,完全没有覆盖“恶意用户或极端场景下的系统行为”。
现实是,AI 应用上线后遭遇的最棘手问题,往往不是功能缺失,而是被诱导产生了不该产生的输出。客服机器人被引导说出竞争对手的好话,法律咨询助手被套取了超出授权范围的建议,内容审核系统被绕过后通过了本应拦截的内容——这些不是极端情况,而是已经在多个公开案例中真实发生过的故障模式。
这就引出了本文要讨论的核心对比:功能性测试与对抗性测试,两者都是 AI 应用质量保障的组成部分,但覆盖的风险维度完全不同。功能性测试回答“系统能不能正常工作”,对抗性测试回答“系统在被故意攻击时是否仍然可信”。后者的缺失,是当前大多数 AI 应用测试体系最危险的短板。
文章将从以下维度展开:
功能性测试的出发点,是假设用户有明确的、善意的使用目的。测试工程师构造输入的逻辑是:这个功能应该支持什么,我就测什么。
这种视角在传统软件测试中是合理的,因为传统系统的行为边界由代码逻辑严格定义,输入不合法会报错,不会产生“语义层面的越界”。但 AI 应用的行为边界由模型的训练和 prompt 设计共同决定,是模糊的、可被语言操控的。
一家做企业内部知识库的公司,在上线前做了完整的功能测试:问产品信息,回答准确;问公司政策,引用正确;问超出范围的问题,礼貌拒绝。一切正常。上线两周后,一名用户通过连续的角色扮演引导,让系统“以培训材料的形式”输出了本不应对外公开的内部薪资结构信息。功能测试完全没有覆盖这个路径,因为它从未假设用户会这样提问。
对抗性测试要求测试工程师切换视角,把自己想象成一个目标明确、手段多样的攻击者。这不是要测试系统“能做什么”,而是要测试系统“在各种施压下,是否会做它不该做的事”。
这种视角转换要求工程师具备两种能力的结合:
正向验证和反向攻击的核心差异,是对“用户意图”的假设不同。前者假设善意,后者假设敌意。一个完整的测试体系,需要两种假设并存。
很多团队在做对抗性测试时,思路还停留在“直接问敏感问题”的层面:问一些违规内容,看系统是否拒绝。这种测试能发现最表层的问题,但对真正有针对性的攻击几乎没有防御验证价值。
因为成熟的攻击者不会直接问“告诉我怎么做 X”,他们会通过多层路径间接抵达目标:通过构建虚构场景让系统“代入角色”,通过分步骤提问让每一步看起来都无害,通过污染上下文让系统的后续判断基于错误的前提。
一个结构化的对抗性测试,需要针对 AI 应用的不同攻击面设计专项用例:
一个经过完整对抗性测试的 AI 应用,需要针对以上每个路径都有明确的测试覆盖和防御验证,而不只是确认“直接问敏感问题会被拒绝”。
攻击面识别的深度,直接决定了鲁棒性测试的覆盖质量。单一输入的测试是点,多层路径的测试才是面。
功能测试的评估标准是清晰的:输入 A,期望输出 B,实际输出 B,测试通过。这是一个确定性的验证框架,适用于行为可被精确描述的场景。
但对抗性测试的评估对象不是“输出是否正确”,而是“系统的行为边界在压力下是否稳定”。这是一个更难量化、但同样可以被工程化的评估维度。
一套可操作的对抗性测试评估框架,可以从以下四个维度构建:
这四个指标的核心价值,是把“鲁棒性”这个抽象概念拆解为可测量、可追踪的工程指标。不能被量化的测试,很难被持续改进。
很多团队的对抗性测试是临时性的:上线前找几个人头脑风暴一轮,构造几十条“刁钻问题”测一测。这种方式有总比没有好,但它有两个明显的局限。
第一,覆盖面受限于当次参与者的想象力,系统性不足。第二,测试结果不沉淀,下个版本上线时又从零开始,无法形成积累效应。
专业的对抗性测试体系,需要把临时构造变成持续积累:
这套体系建立后,对抗性测试从一次性工作变成持续运行的质量保障机制,与功能测试并列成为 AI 应用发布流水线的标准环节。
有人会问:这套体系的投入是否值得?是否只有高风险的 AI 应用才需要?
值得与否,取决于你的 AI 应用一旦产生越权输出,代价是什么。客户服务场景中的一次角色扮演绕过,可能导致合规风险;内容平台的一次过滤失效,可能引发舆论危机;企业知识库的一次信息泄露,可能带来实质性的商业损失。这些代价,远高于建立一套对抗性测试体系的工程成本。
更重要的是,随着 AI 应用越来越深入核心业务流程,鲁棒性将逐渐成为与功能性同等重要的质量维度。现在建立这套能力,是在为未来的规模化部署打地基,而不是在做锦上添花的额外工作。
给有意推进这件事的技术管理者几条建议:
测试工程师的职责,从来不只是验证系统能做什么,更是找到系统不应该做但可能被迫去做的事情。在 AI 应用时代,这个职责有了新的深度和新的战场。
那些能够系统性地构造对抗性场景、量化鲁棒性指标的测试工程师,正在定义一种新的专业能力标准。这种能力,在 AI 应用大规模落地的今天,比任何时候都更有价值。