2013-07-30 46 views
2

我对行为驱动的开发非常陌生,我试图围绕一些基本的东西:测试系统和规范系统之间的区别。使用测试系统与规格系统

到目前为止,我一直在使用基于Ruby的MINITEST /测试库,其中一个典型的单元测试会是这个样子:

require "minitest/test" 

class TestMeme < Minitest::Test 
def test_that_kitty_can_eat 
    assert_equal "OHAI!", @meme.i_can_has_cheezburger? 
end 
end 

在另一方面,从MINITEST一个规范/规格看起来像这样:

require "minitest/autorun" 

describe Meme do 
describe "when asked about cheeseburgers" do 
    it "must respond positively" do 
    @meme.i_can_has_cheezburger?.must_equal "OHAI!" 
    end 
end 
end 

那么测试和规格之间究竟有什么区别?我应该选择,还是可以同时使用?

回答

3

你所展示的只是测试的风格。您可以使用minitest API创建测试,也可以使用spec DSL创建测试。正如你所指出的,它们在功能上是等同的。差异是一个偏好问题。

更大的问题是TDD与BDD。都提倡通过编写测试来推动软件的设计。首先你写一个失败的测试,然后你只写出让它通过的代码,然后重构你的代码,使它保持正确,同时保持你的测试通过。这被称为TDD周期。

BDD更进一步,指定开发人员如何与用户交互以定义开发人员所从事的故事。它倡导与大多数TDD从业者使用不同的模拟角色。但与两种方法学所认同的非常大的区域相比,这些差别很小。

您可以使用规格样式测试练习TDD,并且可以使用测试样式测试练习BDD。您可以混合使用匹配规格describeit块,assert_*断言或测试样式类和方法定义must_*期望。测试风格和spec风格语法之间的差异是肤浅的。

1

BDD测试是业务分析师友好的单元测试,同时单元测试只是对开发人员友好。 BDD定义了一种语言来在开发者和BAs之间进行交互。

理想情况下,BA可以生成一个以人为本但自动生成可执行文档,与敏捷很好地集成,格式化为用户故事。

我想你只需要阅读更多关于BDD,wiki有很好的文章。