背景
我正在尝试帮助我的团队为一个新的移动应用项目进行组织。我们选择遵循BDD(也可以参见BDD definition),以捕获每个单独用户故事的简单英语要求,这些要求形成了利益相关者和开发人员之间的合同。
我们使用验收测试来记录每个用户故事的要求。验收测试在冲刺计划之前编写。开发人员在冲刺计划期间完善并添加测试。
我们将验收标准定义为一系列规则(例如:输入验证、默认值等),将验收测试定义为Cucumber场景列表。我们计划使用Calabash进行移动测试。
我认为验收标准/测试是更敏捷且更好的解决方案,因此不需要更正式的需求文档。
我认为我已经找到了一个有效的解决方案,但我想了解其他人如何收集需求并编写验收测试。
问题
在Cucumber社区中,存在命令式与声明式测试步骤的辩论。我倾向于使用命令式,因为开发者必须知道可交付的用户故事是什么样子。我认为UI耦合(也称为脆弱测试)不是问题。有方法可以将UI与测试解耦(例如:页面对象)。我也不认为详细的步骤会使非技术利益相关者难以理解(除非他们不知道如何使用Web浏览器或移动设备,但这是另一个问题)。
我可能误用了“验收测试”这个术语。在我的使用中,验收测试不是与单元测试相同级别的范畴。我将验收测试视为高级集成测试。 示例
- 作为一个访客
- 我想要登录
- 以便访问应用程序功能
- 场景:有效登录
- 假设我在“登录”屏幕上
- 当我在“电子邮件”中输入“email@domain.com”
- 并在“密码”中输入“password1”
- 然后我点击“登录”
- 那么我会看到“登录成功”
- 场景:有效登录
- 假设我有一个有效的账户
- 那么我可以登录
问题是如何使用声明性步骤捕获功能要求?