Featured image of post 十四年后,再谈“测试已死”

十四年后,再谈“测试已死”

2011年GTAC上提出“test is dead”,十多年过去,测试这个职业真的消亡了吗?

引子

回到十四年前,2011年10月,在Google的GTAC(Google Test Automation Conference)大会上,Alberto Savoia 身着死神装扮走上讲台,以一种戏剧性地方式宣称 “软件测试已死”。

savoia演说现场

不久以后,测试界大牛Jame Whittaker 在另一个测试大会 EuroSTAR 上也以同样的主题,宣布Test is Dead.

这些言论的重点,在于认为软件测试不再需要作为软件开发过程中一个独立的角色。在软件流程和工具已经成熟的情况下,宏观的质量问题不再需要一个相对大型、专职的团队来进行保证。相反,测试应该演变成一系列微观的活动,分散给其他角色,例如项目经理、开发人员,甚至最终用户。 把测试活动分散到研发的其他环节。

而随着这个宣言的广泛流传,包括google、微软在内的大量科技巨头开始裁撤专职测试岗位,测试转型为测试开发或软件效能部门。

但十多年过去,测试这个职业真的消亡了吗?相反,包括 Wittaker 本人也于去年(2024)发表了一篇 《软件测试业的复兴》重新审视测试行业的演变 (原文参见 https://medium.com/@docjamesw/the-resurrection-of-software-testing-634423cd8411)

这篇文章,我们就再来深入探讨一下这个话题

“测试已死"论调的反复出现

从"测试已死"的论调提出,到如今其实已经被多次提及。这种说法至少在三个时期反复出现:

  1. Selenium开源时代:当自动化测试工具逐渐走进企业的日常应用,机器代替人工似乎近在眼前
  2. 自动化测试框架和平台泛滥时期:市场上涌现出大量的自动化测试解决方案,都宣称可以极大减少测试工作
  3. 现今AI时代:现今AI大行其道,老调重弹,认为AI已经可以替代测试人员的工作

为什么?

其实仔细思考一下,这种周期性出现也并非偶然,它反映的是技术变革与行业认知之间的常见错位。每当有新技术出现,人们就倾向于过度乐观地认为它可以完全替代人类的判断和创造力。

除此之外,测试行业本身对测试的认知,也很大程度上在为这种论调提供论据。

大量培训机构,包括很多测试人员自己也并不将测试视作一门技术

  • 0基础入行
  • 小白也可做测试
  • 测试不过是“点点点”
  • 学会写自动化脚本就是高级测试

企业混淆了自动化和测试

很多企业,大力推广自动化,设立测试开发岗。

但并没有真正认识到,所谓自动化测试,更多做得其实只是检查,和真正的测试 相距甚远。

测试开发花费了大量的时间去搭建框架、建设平台,想方设法用工具提升效率,但鲜有真正在测试思维拓展和挖掘深层质量问题上拿出成果的案例。

对测试目标不清晰

如先前所说,认为测试就是为了验证需求的大有人在。测试人员更像是拿着检查表的“质检员”,以是否满足规格说明而非产品能否提供价值为标准。

正是这些流行于整个测试行业的错误认知,恰恰对测试行业本身带来巨大伤害。

但即便是削减了测试岗位以后呢?TDD,BDD,以终为始,开发其实承担了测试职责;或者让终端客户,在不知情的情况充当测试者,在客户发现问题后想办法去快速修复。

所以并不是测试已死,只是执行测试的责任方和职责划分出现转移。

什么样的“测试”才真的应该消亡?

正如我之前多篇文章都强调过软件测试的真正目的。【】

测试真正的目的既不是简单地去验证需求,也不仅只是为了发现Bug。

测试检查 也应该有着明确的区分。随着技术的进步,那些测试中的 检查 才是应该逐渐从测试职责中逐渐弱化的部分。

而自动化测试,那些测试用例清单和CI仪表盘上的绿色进度条,其实并不能算是真正地在面向质量进行测试,带来的只有虚假的安全感。

这些按照既有脚本进行逐项Check的"勾选框活动”,才是真正应该区分于测试,应该消亡的那部分。

把大量的时间用于编写、维护这些形式化的测试用例、测试脚本,反而减少去探索产品、洞察风险的真正测试时间,实际上,正是在伤害测试的真正价值。

自动化测试 vs 真正的测试

我们必须澄清如下核心认知:

自动化测试:通常只用于检查已知的部分,即我们预期系统完成的行为。 真正的测试?是关于未知的。它是需要调查、探索、设问、推理、试验、求证的技术。没有脚本或AI能够完全替代。

真正的测试价值永远应在于探索未知,是去发现那些通过自动化无法预见的问题

测试价值的重新定义

测试不仅仅是关于发现bug,也不仅仅是关于工具。它的价值应该包括:

  • 理解产品风险:识别可能影响用户或业务的潜在问题
  • 沟通不确定性:清晰传达关于产品质量和风险的发现
  • 建模用户行为:预测真实用户如何与系统互动
  • 发现他人遗漏的问题:提供独特的视角和洞察

这些价值在任何软件开发生命周期中都是不可或缺的。当组织真正理解这些价值时,测试就必然会在软件研发过程中承担重要角色,即便不是由专职测试人员,也会由开发人员或其他角色来完成。

结论

测试从未消亡,只会不断重生!

“测试已死"的论调每隔几年就会出现一次,但测试从未真正消亡。 它只是在不断演变——从手工测试到自动化,从独立角色到分布式责任,从验证已知到探索未知。每一次演变都是测试适应新环境、新技术的结果。

今天,当我们面对AI的浪潮时,同样的故事正在重演。有些人预言AI将取代测试人员,但历史告诉我们,技术会改变测试的方式,但不会消除测试的需求。AI可以自动化更多任务,但人类测试者的批判性思维、创造力和系统思维仍然不可替代。

测试的未来不在于抵抗变化,而在于拥抱进化。测试人员需要发展新技能,采用新工具,但更重要的是,要坚守测试的核心价值——探索未知,评估风险,保障质量。

使用 Hugo 构建
主题 StackJimmy 设计