瑞典马工

取代程序员,AI测试工程师成为核心岗位

即使明天全球政治家决定不再进一步发展 AI,软件工程师们的职业生涯也已经被今天的 AI 给毁了。Claude Code和Gemini CLI,实际上,已经让软件工程走向了一条单行道。大家熟悉的现行的软件工程各种岗位,已经成为1911年的满清文臣武将,正在被淘汰。

自软件诞生以来,软件测试工程师的地位一直低于开发工程师。这个规律如此明显,以至于大家把它当作无需证明的公理。不论是薪酬,晋升,内部话语权,外部代表权,测试工程师都占弱势。在某些公司,测试工程师甚至拿不到编制,只能拿外包合同。

这种安排有一定道理: 软件编码比软件测试难太多了。举例来说,很多测试工程师无法写一个能安全运作的多线程程序(尽管很多开发工程师也不会)。因此,能写的人就去做开发,不能的就只能做测试。而且写代码非常费劲,需要大量的耐心,有大量的编译失败,格式错误,行为不符,突然崩溃,内存腐败等等负反馈。

但是,Claude Code改变了这一切。Claude Code生成代码的成本是如此的低,以至于每个工程师都能用两个小时生成一千行合格的代码。瑞典马工所在的团队,今天有个同事一天提交了9个PR。马工本人在度假之前的一个下午,提交了5个PR。

这种几乎等同于DDoS攻击的开发速度,已经冲击了传统的软件工程流程。现在我们已经很难仔细的review代码了。同样,也不需要开太多的架构会议了。因为对于两个不同的方案,我们更倾向于让Claude Code快速把代码实现出来,所需要的时间比开会的时间还短。

简单地说,我们现在就像雇佣了一千个勤劳,从不抱怨,不要加班费,不过节假日的南亚软件外包程序员,而且他们的月薪只有一百美元。我们自己的专注点,则往项目经理和产品经理靠拢。

但是,如同外包开发者一样,Claude Code交付的东西也会有很多缺陷。从我有限的个人经验看,缺陷主要来自于

1. 需求本身的模糊性。我和LLM通过不精确的自然语言沟通,并没有一个办法确保LLM对我的理解和我想传递的信息是一致的。这种表达-接收的分歧,自然就会导致软件缺陷。在这一点上,产品经理和人类开发者面临的问题是一样的。

2. LLM的幻觉。众所周知,LLM有大量的幻觉。它非常勤快,毫无怨言的去做你要求他做的任何任务。但是很多时候,它会捏造出一些不存在的API或者软件特性,以便自己完成任务。

3. 环境的不一致。目前为止,开发环境和生产环境是严格分开的。Claude Code(或者cursor,或者Gemini CLI,或者Amazon Q)都只能访问开发环境,缺乏生产环境的知识。这就使得它会产生一些针对开发环境过拟合的代码。

这个问题如果得不到处理,那团队就会进入一个奇怪的状态: 效率极高,你早上要什么下午就能交付什么,但是质量极烂,今天交付的东西明天就出故障。(腾讯云的工程师想必对这个情况很有共鸣。)

那么问题就变成了: 怎么针对这大量的产出做质量控制?

我的答案很直接:测试,大量的测试,多环节的测试,自动的测试,全面的测试,端到端的测试。

软件测试,是一个把软件行为和预期行为相比较的过程。

1. 首先明确软件应该如何行为。比如”微信启动的时候,界面要显示Michael Jackson的头像”是一个期望行为。

2.然后实际运行被测试的软件。假设,微信V5.5.5启动的时候,显示了董明珠的头像。

3.比较并且下结论。一般来说,期望迈克尔杰克逊但是得到了董明珠,是一个严重缺陷,可能导致部分用户摔手机。但是也有可能张小龙说”杰克逊,董明珠,没什么区别啦。我看董大姐更本地化”,那么就不会被判为缺陷。

传统测试工程师大部分时间花在了第二步,运行软件并且截图。

在AI为中心的软件工程流程中,成为软件团队核心的测试工程师将把主要精力放在第一步和第三步。

第一步,其实就是理解产品的需求,并且翻译为可以技术性比对的测试项。比如产品经理马化腾说”网站要整得喜庆,不要搞北欧性冷淡风”,你不能直接把这个扔给LLM,你得翻译成”界面有二十七(含)种以上的颜色和十二(不含)以上的字体”。这样就可以比对了。

第三步,其实是一个项目决策的问题。比如你测试出了你们的母婴网站没有加密个人信息,可能导致DBA窃取用户电话号码卖给奶粉厂家。你可以判定为缺陷,也可以说”管他妈的,反正产妇的电话已经被妇幼保健中心卖出去了”。

至于传统的第二步,完全可以交给LLM去做。至于是Claude Code,还是Cursor,还是Gru.ai ,目前不得而知。

唯一可以确定的是,能和产品经理沟通的测试工程师的地位将大大提高,成为团队核心决策者。而只会编码的码农将不得不和100美金一个月的Claude Code竞争岗位。基本上,用川普的话来说,程序员们,You are fired!

和基于AI的软件工程系列文章一样,本文没有严谨的论证,更多的是基于我用 AI 开发软件过程中的探索经验和一些大胆的猜想。有不同意见的读者,请在留言区留言,或者扫描文末的二维码加微信群,大家一起讨论。

Image
Image