2013-07-30 45 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有很好的文章。