2025年9月12日,QECon大会,第六年来到其发源地魔都——上海,已经是第十四届,现场依旧火爆,说明行业非常关注 “质量&效能” 两个主题。
昨天在闭门会上,有位同学问到一个问题 “单元测试的价值在哪里?”,一语惊醒梦中人——我自己。我算是一个理想主义,但也深刻感受到现实是骨感的,许多基本的理念在国内许多公司还没有建立起来,质量与效能依旧是摆在我们面前的最主要的挑战。
6年前,我发起了QECon大会,就是看到国内软件行业对质量不够重视,而同时国家正在提倡高质量发展;另一方面,许多企业的软件研发团队规模也很大,从几千人到几万人、甚至十几万人,团队的效能成了管理层关注的问题,而且按照质量大师克劳士比的零缺陷管理思想,第一次把事情做对,效率是最高的,成本是最低的。我们非常有必要把质量(文化、意识)提升到一个新的高度。
回顾我在第一届QECon大会上的发言:,在六年后的今天依旧具有很好的有效性,甚至更具现实意义。
(从演讲中摘出几页PPT)
软件工程的发展史,是和复杂性、不确定性不断较量的历史,也是一部对效率与质量不懈追求的平衡史。从瀑布模型的严谨规划,到敏捷范式的快速迭代,每一次研发范式的跃迁,都伴随着对质量保障体系的重塑。敏捷开发通过“快速迭代、持续交付”的理念,已经对软件质量提出了远高于瀑布模型的要求。而今,当我们踏入大模型时代,一个看似完美的生产力奇迹出现了:超过一半的代码可由AI自动生成,开发速度被推向了前所未有的量级(虽然目前不一定有,未来会发生)。
然而,在这令人振奋的加速背后,一个严峻的问题也随之浮现:当开发速度提升了50%、甚至几倍之后,我们是否还能驾驭得住质量这匹“骏马”?答案是,这非但不容易,反而比以往任何时候都更具挑战。大模型时代,软件质量管理不再是简单的测试与修复,而是一场需要更高智慧、更强纪律、更先进理念的系统性工程。
“快”的代价:从敏捷的“小步快跑”到AI的“瞬时冲刺”
敏捷开发的核心是以短周期的迭代来应对需求变化,并通过CI/CD来确保每个小步都是稳健的。这个过程虽然快,但依然在人类可控的节奏之内,质量反馈循环(如Code Review、单元测试)尚能跟上。
大模型的介入,则彻底颠覆了这一节奏。开发过程可能会从“小步快跑”变成了“瞬时冲刺”。过去需要数天完成的模块,现在可能在几个小时、甚至几分钟内就由AI生成了雏形。这种指数级的加速,直接导致了两个严峻的质量挑战:
风险的指数级放大:一个微小的需求理解偏差或一个有瑕疵的设计,经过AI的“闪电般”放大,可能会瞬间演变成一个庞大而复杂的错误代码集群。过去在迭代中可以被及时发现和纠正的小问题,现在可能在极短时间内就被深埋于海量自动生成的代码之下,积重难返。
传统质量保障体系的失效:手动的代码审查和测试,在AI惊人的代码生成速度面前,无异于“杯水车薪”。质量保障活动如果不能跟上开发的步伐,就会迅速沦为整个流程中最严重的瓶颈,甚至被无奈地简化或跳过,为系统埋下巨大的质量隐患。
在这过程中,大模型也可以参与到质量保障体系之中,即LLM-as-a-Judge(以智能测智能,用另一个大模型评审其中一个大模型生成的内容)。
正如Zed创始人Nathan Sobo在其文章中所警示的,AI时代,我们最不需要的就是“码农”。如果仅仅满足于让AI海量产出代码,而人类工程师沦为修修补补的“监工”,那么我们产出的将是大量看似能用、实则脆弱不堪的“数字危房”。
AI生成代码的能力令人惊艳,但它并非完美无瑕。AI的“幻觉”(Hallucination)问题,意味着它可能一本正经地“创造”出逻辑不通、存在安全漏洞或性能陷阱的代码。这些问题往往比简单的语法错误更隐蔽,更具危害性。
因此,大模型时代比任何时候都更需要软件工匠精神的回归与升华。工匠精神的核心,是对质量的极致追求和对作品的责任感。当繁重的编码工作被AI接管,人类工程师的价值便从“如何写代码”转向了更高维度的思考:
深刻的业务理解:如何将模糊的业务需求,精准地转化为AI可以理解的技术规约?
精妙的系统设计:如何构建一个清晰、稳健、易于扩展的架构,让AI的生成能力在正确的轨道上发挥?
批判性的验证思维:如何不盲信AI的产出,而是用审慎和批判的眼光去验证每一行代码背后的逻辑?
在这个新范式下,工程师不再是代码的生产者,而是质量的定义者、架构的守护者、以及AI能力的引导者。
TDD的“凤凰涅槃”:为AI冲刺打造的“安全网”
既然传统的人工测试已无法跟上AI的速度,我们该如何构建新的质量防线?答案早已存在于敏捷思想的宝库中,并在大模型时代迎来了“凤凰涅槃”——测试驱动开发(TDD)。
在AI主导开发的模式下,TDD不再仅仅是一个优秀的工程实践,而是保障质量的必要前提,是为AI的极速冲刺铺设的一张至关重要的“安全网”。其价值体现在两个层面:
单元测试驱动开发(UTDD):在AI生成具体功能代码之前,让LLM进行测试需求分析生成验证点、生成单元测试用例(脚本/代码),人工对验证点、测试用例进行review,确保其质量。这些测试用例,实际上成为我们给LLM下达的最精准、最无歧义的“指令”。AI的目标不再是模糊地“实现一个功能”,而是清晰地“通过这些测试”。这从源头上保证了最基础代码单元的正确性和健壮性,为整个系统的质量奠定了坚实的基石。
验收测试驱动开发(ATDD):在更高的维度上,由LLM生成验收标准,再经产品经理、QA和开发工程师共同来评审/验证这些验收标准,从而生成面向业务场景的验收测试。这些测试用例描述了系统在用户眼中的行为标准,它们是连接业务需求和技术实现的桥梁,确保AI在“奋笔疾书”时,始终瞄准着正确的业务目标。ATDD保证了AI不仅“把事情做对”(Doing things right),更是在“做正确的事”(Doing the right things)。
UTDD与ATDD的结合,构建了一个从宏观到微观、从业务到技术的自动化质量验证闭环。这个闭环能够与AI的代码生成速度相匹配,形成“AI生成-测试验证-快速反馈-迭代修正”的高速、高质量研发循环。可以参见:
结论:拥抱速度,更要敬畏质量
大模型为软件开发带来了前所未有的速度与激情,但这绝不意味着我们可以放松对质量的要求。恰恰相反,当生产力工具变得无比强大时,使用者的智慧、责任心和方法论就显得愈发重要。
面对大模型时代软件质量管理的全新挑战,我们必须完成一次深刻的进化:
在思想上:重拾并光大“软件工匠精神”,将对质量的追求内化为一种本能。
在方法上:坚定地拥抱TDD,让测试先行成为不可动摇的铁律,用自动化的方式为AI的创造力保驾护航。
最终,大模型时代的卓越团队,绝不是那些让AI产出代码最快的团队,而是那些能与AI高效协同,持续、稳定地交付高质量、高价值软件的团队。