过去几十年间,软件测试领域经历了显著变革:自动化测试取得巨大进步,强大测试工具实现了深度测试,团队质量建设转向整体化。但在从业十八年的测试生涯中,从未见过像人工智能(或每日提及数千次的AI)这般引发如此多狂热与期待,同时又伴随等量质疑与抗拒的技术浪潮。
无论立场如何,AI的存在已不可忽视。它既已到来,必将持续发展。但AI在软件测试中的真实能力边界何在?何处能提升测试效能?何处会形成阻碍?近期我有幸深度实践多种AI工具,某些场景下它为我节省数小时工作量,另些场景却因调试耗时反超手动操作。这些经验促使我对当前AI测试方案的价值及对测试人员的影响形成若干观点。
理解 AI 在软件开发生命周期(SDLC)中的角色定位
在深入测试细节前,需界定本文讨论的AI范畴。AI涵盖自然语言处理、机器学习与大语言模型(LLM)等广泛领域。本文将聚焦生成式AI(Generative AI)与代理式AI(Agentic AI) —— 这两类工具不仅是我重点实践对象,也是当前测试与开发领域日益普及的技术形态。
尽管重点探讨AI如何辅助软件测试,但若忽略AI在整体SDLC中对测试的影响,这篇文章便不够全面。
您测试的代码中有多少是由AI生成的?工程师们是否审查了AI生成的代码,还是仅仅看到它能运行就提交了?这些代码是否完全由智能体编写?这些智能体在过程中是否还做出了未被注意/不想要的额外修改?智能体是否编写了单元测试?这些代码的质量标准是否与现有代码一致?我并不是说这些代码更差,这需要根据具体场景判断,但生成这些代码的过程与不使用AI时截然不同。
那么您的用户故事呢?它们是完全由人类编写的吗?是那个参与了所有客户对话的同一个人吗?还是由AI根据会议记录和产品负责人提供的碎片信息生成的?它们的审核情况如何?
这引出我对AI应用的早期观察:它将放大质量标准的缺失。若团队在SDLC中缺乏质量控制,引入AI将引发混乱与质量下降 —— 正如当年引入自动化时的情形。团队必须先建立对"优质标准"的共识及度量方法,才能以可控的方式引入 AI,在维持现有流程的同时寻求优化。根据当前经验,那些基础薄弱的团队贸然采用AI时,往往会把混乱归咎于AI技术本身,而实际上他们从未做好使用AI的准备。这种情况会让那些指望AI能解决所有问题的管理者大失所望。
近年来,质量工程备受关注,随着质量工程师岗位的兴起以及人工智能的引入,这项工作的重要性愈发凸显。虽然并非每个团队都需要专职质量工程师,但所有团队都必须建立质量控制机制,这首先需要明确"优秀标准"的定义。如果无法达成共识,就难以充分发挥人工智能的潜在价值。我认为测试人员和质量工程师能在这方面创造巨大价值。
AI与传统自动化:范式转变
AI正加速我十年前预见的范式转变:自动化不等于测试自动化。这正是2014年我提出"测试中的自动化(Automation in Testing)"术语的核心原因。测试自动化本应指利用软件辅助测试活动,可惜现实中被窄化为"自动化测试"。如今我已接受这一现状,不再试图扭转这种认知。自动化本质是利用软件辅助流程执行,除了测试自动化工具外,我们还有多种类型的软件可辅助软件测试工作。我曾开发过数百款简化测试工作的工具:数据生成器、测试自动化框架、日志分析器、复杂的bash脚本等。现在,我们可以把AI也加入这个清单,主要通过ChatGPT、Claude、Co-pilot等LLM聊天工具来实现。
我们当下选择空前丰富,但需要学会使用时机与方法。哪些差异化特性会扩展我们的选择范围,哪些更常形成限制?
自动化测试现状观察
讨论"传统自动化"现在听起来有些滑稽,却印证了AI对行业的冲击。这里的传统自动化指基于规则的确定性自动化脚本 —— 由人工编写,包含其通过系统交互归纳的编码信息。这些脚本具备可预测性与可重复性,严格遵循预设步骤。我们创建它们,是因为观察到系统存在特定行为模式,且认为该信息至关重要:一旦系统行为偏离,我们必须立即知晓。
近年该领域新增两大技术:代码/测试生成与测试代理。请注意我称之为“新增”而非“替代”,因为它们是不同的技术,在某些场景可以创造高附加值。但归根结底,我认为它们仍属于自动化测试范畴,或是自动化测试创建流程的组成部分。
测试代码生成
让我们从测试代码生成工具切入。这类工具接收人类输入的提示(通常为聊天指令),为模型提供关键背景信息。背景信息可能包含用户故事、测试数据、质量标准、测试数量、关注重点,或简单指令“生成测试用例!”。两种输入将输出质量迥异的测试代码:输入垃圾,产出必为垃圾。这与代码生成同理:需求越模糊,生成的代码越泛化。
但在合适场景中,工程师正确使用工具可大幅提速。要获得更好的结果,我们可以:
- 提供上下文 —— 我们为模型提供的上下文越丰富,效果就越好。解释应用程序的领域、需规避的风险、期望的代码模式及断言逻辑。正如自动化悖论一文中提到的,这近乎将测试用例写成提示语 —— 若想获得理想输出,就必须这样做。
- 明确需求 —— 尽可能提供示例,清晰说明所用工具的版本。尽管AI号称智能,但其知识具有广谱且生成式特征明显,细节明确有助于优化模型输出。
- 验证输出 —— 务必测试输出!切勿复制粘贴后即宣告完成。关注AI的实现方式:使用了哪些变量命名?评估代码质量是否符合现有标准?应用与人工编写代码相同(甚至更严格)的审查标准。
- 确立优质标准 —— 亲自打好基础,确立优质标准,不要盲目相信AI的判断。当然可以借助AI辅助这一过程,让它解释决策依据、扩展代码实现,但同时要通过技术文档、博客、视频等渠道进行自主学习。毕竟最终成果代表的是您的工作,即使全程使用AI,您也有责任确保其达到高标准。
测试智能体与自主测试
测试智能体是测试工具箱的新成员,本节特指能执行自主测试的智能体。自主测试指训练AI智能体自主探索应用的测试形式,犹如探索性测试与自动化测试的混合体 —— 至少目前是这样宣传的。该领域潜力巨大,但根据我的早期经验,距替代人类测试员还有很长的路要走。对我来说,它们更像是略微智能的网络爬虫:虽然我们可以让它们完成特定行为(传统自动化测试无法实现),但其实现路径完全未知。相比传统自动化测试中我们需要确认具体流程是否有效,这是个劣势。但另一方面,这也是可以利用的优势。
Richard,所以为何如此谨慎?这些智能体往往缺乏人类所拥有的完整上下文,而且难以向其提供全局视角。目前我们只能提供碎片化信息,但众所周知,真正的价值来自团队中人类成员之间的互动 —— 正是这些互动将拼图完整连接。若缺乏全局上下文,它们对我们的应用程序理解只能浮于表面。
这并不意味着它们没有价值,它们确实能发现部分问题,但由于缺乏洞察力,往往难以将问题置于具体情境中。最佳状态下,这些智能体如同精力充沛的初级测试员:能干、快速且充满好奇心,但需要引导和培养。如果放任不管,它们会产生大量干扰信息,却能持续探索 —— 它们无需休息、休假(但请给您的初级员工这些待遇)。如果能将其审慎地融入团队的测试策略,它们可以标记值得深入排查的潜在问题区域,成为"潜在问题指示器"。短期内它们无法替代人类探索性测试员甚至传统自动化测试,但可能成为其工具包组成部分,但很可能成为测试工具包的组成部分。
将AI作为测试助手
尽管上述工具与技术确有进展,但它们只有在作为人类助手、补充现有测试工作时才能发挥作用。我首先选择这些用例,是因为它们更贴近行业对测试自动化的主流认知。而AI的真正价值在于:它使构建海量新型工具变得前所未有的简单 —— 这些工具理论上始终可行,如今实现门槛骤降。
测试由众多相互关联的流程组成,如今我们不仅能利用AI辅助其中多个环节,甚至可以让AI为我们实现流程间的智能衔接。
测试方案生成
软件测试的早期流程之一就是构思测试方案。初始阶段通常没有绝对的对错之分,何不借助AI?短短五分钟,它就能生成数百个测试方案,甚至评估您的想法。您可以选择沿用原有方案,这完全没问题,而且选择时会更有把握。或者,补充未曾设想的新方向。关键在于提升效率 —— AI永远无法生成完美的测试方案,强求只会徒劳无功。不如专注于利用它来激发自己的思维过程。
数据/信息处理
许多测试流程依赖于收集和组织数据以便后续利用。比如收集所有冲刺故事、将其映射到拉取请求、将这些变更关联到测试用例并预估风险所在等流程。AI可以替我们完成这些工作。我们可以利用一组AI智能体设计工作流,在几分钟内完成数据收集和中断处理。虽然仍会出错,但只要流程设计得当,并能提供原始数据,就能为我们打下坚实的基础。获取原始数据是关键一步,没有它,AI可能会蒙蔽或误导我们。掌握数据源后,我们就能验证其决策合理性,或在出错时进行修正。
关于AI助手的结论
测试数据生成、失败测试分析、故障构建调查、自动化测试评审等应用场景不胜枚举。现在正是实验探索适用方案的黄金期。
需谨记以下原则:
- AI永远不会“正确”,因为它不知道什么是正确 —— 它是生成式的。所以务必自主判断。
- AI高度依赖于训练数据,可能产生误导信息。需与自身知识交叉验证。
- AI通常缺乏完整的上下文。
- AI通常知识常滞后,因为它的训练数据可能过时。
适应AI辅助的测试时代
随着AI日益深度融入工具、软件及流程,测试人员的未来何在?
1.转变技能,而非取代
未来测试员不会被AI取代,但可能败给善用AI的同行。测试自动化曾犯同样错误 —— 标榜替代测试员。AI的价值在于辅助,我们需避免重蹈覆辙。
2.AI素养
如同十年前掌握测试技术或自动化工具成为必备技能,熟悉AI辅助测试平台将成新基准。理解这些平台的前提假设、偏差、边界与可能性,将与掌握语法同等重要。人们常讨论"Google搜索的艺术",说有些人就是更擅长获取精准结果 —— 这套逻辑同样适用于AI助手。
3.测试人员担任伦理守护者
随着AI日益融入软件产品,测试在保障伦理结果方面的责任加重。这意味着我们不仅测试功能,还要验证公平性、偏差、可解释性与安全性。
4.强化人机回圈(Human-in-the-Loop)测试
最有效的AI测试策略并非取代人类,而是聚焦于人机协作。人类应始终掌握主导权,对AI生成的内容进行验证、质疑与完善。正如拼写检查器无法替代编辑工作,AI也不会取代测试 —— 它只是辅助工具,正确使用将使工作更愉悦。
5.拓展测试边界
我们必须改进关于测试的讨论方式,摒弃将测试视为简单几步流程的陈旧观念。我们需要持续扩展流程环节,并在多个环节中引入AI。
最终思考:AI时代下的质量思维
在日益由速度、规模和复杂性主导的技术图景中,AI提供了加速前进的强大工具。但测试/质量从来不仅关乎工具,更关乎思维方式:好奇心、怀疑精神、共情能力和系统思维。AI非但不会降低测试需求,反而会提升对深度测试的需求。
软件测试的未来不是AI或人类之争,就像它从来不是在手动或自动化之间二选一。这是掌握工具技能的熟练人类,而我们的工具箱正在变得前所未有的丰富。
我还认为,AI将成为一种催化剂,促使团队开始更认真地对待质量工程。随着 AI 开始协助编写代码、生成需求、创建测试、执行测试和分析构建失败,质量的重要性正在发生质变,可能性变得无限广阔。我们需要更多地思考:"这合理吗?","这是正确的做法吗?","这公平吗?","这是否让流程更加完善?"。
未来的测试人员(或在团队中承担测试职责的成员)不再仅验证功能,更需验证AI辅助的决策。他们要确保连接这些自主组件的"粘合剂"安全可靠、符合逻辑且真正服务于用户。他们需要识别AI创造价值的领域,以及潜藏风险的环节。
那么AI在软件测试的未来中扮演什么角色?
它将与我们并肩同行。不是作为替代者,而是强大的副驾驶,按需配对的工程伙伴,驾驶席仍需人类全称掌控。
关于自动化测试系列博文
您现在看到的是我们与Richard Bradshaw合作的自动化测试系列最终篇。本系列将深入探讨测试自动化的多个方面及其实现方式。