以前那会儿,我们团队内部沟通简直就是灾难。开发、测试、产品,三个人三个标准,每次开会吵得脸红脖子粗。最要命的是,需求文档写得跟天书一样,开发说他做完了,测试说不对,产品经理又说他们想要的根本不是这个。
我就琢磨着,得找个东西把咱们都绑一块儿,用一套大家都能看懂的语言说话,把验收标准从代码里解放出来,写成人话。

后来我翻资料,找到了BDD(行为驱动开发)。那套“Given-When-Then”(假如-当-那么)的写法,我一看就觉得靠谱。它把复杂的技术细节全藏起来了,只露出最直观的业务步骤。
第一步:统一语言,写 Feature 文件
我立马把产品经理抓过来,给他演示了一遍,告诉他,以后需求验收标准就得这么写,跟讲故事似的。我们把每个功能都写成一个个“Feature”文件,用的就是 Gherkin 语法。

我们不再写什么“测试用例ID:TC001”,而是直接写:
- 功能:用户登录
- 背景:用户已经注册并记住了密码
- 场景:正确的用户名和密码登录
- 假如我打开了登录页面
- 当我输入了正确的用户名“张三”和密码“123456”
- 并且我点击了登录按钮
- 那么我应该看到首页并显示“欢迎回来,张三”
这样写出来,谁也跑不掉。产品经理看到了验收标准,开发也知道边界在哪儿。这成了我们开发前的第一份“合同”。
第二步:撸起袖子干:搭框架和写步骤定义
光写故事没用,得让电脑自己跑起来。我选了Behave(Python那套),因为它上手快,跟我们的自动化框架接起来比较顺手。用Cucumber或者SpecFlow都行,核心思想都一样。
接下来就是最费劲的,我得把这个自然语言的 Feature 文件跟我们现有的自动化代码接起来,这叫“步骤定义”(Step Definition)。
比如上面那个例子:
假如我打开了登录页面
我得在我的自动化代码里,写一个函数,把“打开了登录页面”这句人话翻译成代码里的操作:调用浏览器,输入网址,等等。我用了 Playwright 库,所以代码就是一行行的页面操作。
我花了三天时间,把我们最核心的十几个业务步骤都封装成了可复用的代码片段。比如:“点击提交按钮”、“验证数据是否保存成功”、“输入有效数字”等等。
第三步:实现高质量验收脚本
一旦基础步骤定义搭好了,后面写新的脚本就快了。我们不再是写一行代码对应一个操作,而是直接调用那些已经封装好的步骤。脚本看起来就像一个填空游戏,效率飞涨。
我们现在跑自动化,直接给老板看 Feature 文件的执行结果。绿了,就是通过了,大家都没话说。如果跑红了,我们能一眼看到是哪个业务场景、哪个“当”或者“那么”出了问题,定位 bug 速度比以前快了三倍。
BDD 这东西,我实践下来觉得,本质不是什么高深的技术活,它是个沟通工具。我从一个只会写代码的测试,变成了一个能跟产品经理一起定义验收标准的‘沟通桥梁’。高质量的验收脚本,不是代码写得多漂亮,而是所有人对“高质量”这俩字理解是否一致。实践证明,这套路子,贼好使。

