📅  最后修改于: 2023-12-03 15:41:32.494000             🧑  作者: Mango
行为驱动开发(BDD)是一种高度可读性的软件开发方法,它强调在开发进程中必须从客户需求、用户场景出发,并且通过给出实例场景,构建测试用例,促进开发过程中需求和实现的一致性,让开发团队和业务团队更加高效地协作。
BDD的核心是故事(stories),它描述了一个特定的特性应该如何在特定上下文(或称为场景)中表现的完整描述,通过完整而清晰的描述,可以更好地理解业务需求。
BDD遵循三个主要的行为:Given (前提条件)、When(执行操作)和Then(结果)。
BDD流程可以概括为如下的几步:
在实践BDD前,需要确定你的团队让每个人都对应何种角色,定义好如下要素:
BDD测试中常用的测试工具和框架还是Cucumber和RSpec, BDD测试的代码实现遵循Gherkin语法。
Feature: 模拟核实登录
场景: 登录校验
假设网址 "http://localhost:3000"
Given 我是一个未登录的用户
When 我输入了正确的用户名和密码
Then 我应该被重定向到我的用户主页
场景: 登录
假设网址 "http://localhost:3000"
Given 我是一个未登录的用户
When 我输入了错误的用户名和密码
Then 我应该看到登录错误消息并且仍然停留在登录页上
前提(/^网址 "([^"]*)"$/) do |url|
visit url
end
假如(/^我是一个未登录的用户$/) do
end
当(/^我输入了正确的用户名和密码$/) do
fill_in 'username', :with => 'example_user_name'
fill_in 'password', :with => 'example_password'
click_button '登录'
end
那么(/^我应该被重定向到我的用户主页$/) do
expect(current_path).to eq(user_path)
end
当(/^我输入了错误的用户名和密码$/) do
fill_in 'username', :with => 'example_user_name'
fill_in 'password', :with => 'wrong_password'
click_button '登录'
end
那么(/^我应该看到登录错误消息并且仍然停留在登录页上$/) do
expect(page).to have_content('Error: Invalid password.')
expect(current_path).to eq(new_session_path)
end
行为驱动开发(BDD)是一种基于用户故事,从用户需求和实际业务场景出发,结合实例场景,编写高可读的测试用例,促进开发人员和业务团队的更好协作的开发方法。在实践中,我们可以在BDD测试框架中编写Gherkin风格测试用例,然后编写Ruby/Rails测试代码。在这个过程中,我们需要多加讨论、碰撞,在每个迭代中实现更好的质量和可维护性。