Claude 重写 Yadda 3.0:BDD 在 AI 时代的复兴
Yadda 3.0.0: BDD in the Age of AI Agents
我刚刚发布了 Yadda 3.0.0,这是一个专为 JavaScript 打造的 BDD 库。这次更新不仅是现代化的重构,更是一次由 Claude 主导的 AI 编程实验。我利用 Claude Code 完成了从移除过时功能到引入 TypeScript 定义的全过程,仅用一天便完成了发布。随着 AI 编码能力的飞跃,瓶颈已从代码编写转移到了人类对多智能体并行工作的协调上。BDD 的可执行规范为 AI 提供了宝贵的领域上下文,使其成为连接人类意图与机器行为的完美契约。当 AI 能轻松将需求转化为规范,BDD 的价值在智能体时代反而更加凸显。
BDD 最初是为了让软件规范对人类更有用,但可执行规范在软件主要由机器编写时,可能会变得更有价值。
HN 评论区
28- wesselbindt
所以,我理解在测试和待测系统之间加一层抽象的想法。你把“做什么”和“怎么做”解耦开来,从而得到健壮、易维护甚至更可复用的测试套件。我亲眼见过它的效果,这确实是个好主意,我自己也受益匪浅。很棒的东西。
但我一直不太明白,为什么有些人选择用自然语言来做这层抽象。这看起来真是个奇怪又昂贵的选择。我们在代码库里添加的大多数抽象层,都是用我们选定的编程语言本身写的,它们就是函数、类之类的东西。可偏偏就这一种特定类型的抽象,大家却跑去用自然语言。
我能想到的唯一潜在好处是,非技术同事也能阅读甚至编写这些规范。但在实践中,我一生中只见过一次这种情况,而且那还是用的更传统的 DSL,而不是自然语言。
是不是有什么我忽略了的隐藏好处?
- jesol
我也认为 BDD 是 UI 验收测试的强有力工具!我现在已经在两个 AI 代码库(一个是工程化的,另一个是“氛围编码”的)中尝试添加它,到目前为止效果 mostly positive(主要是积极的)。能让非工程师看到他们的代码变更对 UI 产生的影响,这点很棒;而且我发现拥有高层级的 API 和 UI 测试,能迫使第一层清理工作(通过模型/服务标准化数据库访问,以及统一的 API SDK)。
我也非常感兴趣用 typespec 来标准化 REST 接口,用 DBML 来标准化数据库模式。我认为用高层级规范创建这些闭环,是让 AI 项目真正能被团队掌控的最佳方式之一。
- lifeisstillgood
那个“转录初始项目讨论,将其转化为 BDD,以此作为引导 AI 的轨道”的例子……要么是天才般的洞见,要么是蛇吞自己的尾巴。
不过,我觉得这确实值得一试……