2010-08-18 34 views
2

你如何處理用戶故事/接受測試,像這樣一個長鏈,那麼/什麼時候混合在一起?最好是將其分解成單獨的驗收測試,其中一個測試對話框出現,然後第二個測試對話框顯示後的行爲?混合然後和當在BDD用戶故事/驗收測試

Feature: Confirmation before removing products from cart 
    In order to avoid accidentally removing an item from my cart 
    As a Customer 
    I want a confirmation dialog to ask me if I'm sure I want to remove an item 

    Scenario: I want to remove an item from my cart 
    Given I have added item "xyz" to my cart 
    When I click "Remove" 
    Then a confirmation dialog pops up 
    And it asks "Are you sure you want to remove this from your cart" 
    When I click "Yes" 
    Then item "xyz" should be removed from my cart 

回答

2

你的情況似乎有點長,而且與gui有很大關係。如果將其與系統的功能綁定,會發生什麼?

Scenario: I want to remove an item from my cart 
    Given I have a cart containing "xyz" 
    When I remove "xyz" from my cart 
    Then my cart should be empty. 

該場景現在描述了對用戶有用的東西,它更容易重構。

我很喜歡BDD,因爲我的情況非常像這樣。我們進行了120次驗收測試,主要是失敗。有人將確認對話框與您描述的非常類似,並立即打破了80個驗收測試。通過將它們轉化爲具有高級可重用步驟的場景,我們可以輕鬆地重構並保持測試正常工作,即使我們用於實現系統功能的機制發生變化。實際點擊按鈕發生在這些可重複使用的步驟內,並且每步有多個UI操作即可。

我寫到這裏的情景,其執行此,如果它是有用的(這是一個DSL,而不是英語,但你應該明白我的意思):

http://code.google.com/p/wipflash/source/browse/Example.PetShop.Scenarios/PetRegistrationAndPurchase.cs

+1

這個測試被捆綁在GUI因爲「新功能「由驗收測試所描述的是在刪除購物車項目之前添加確認對話框。在我們的特殊情況下,我們開始使用黃瓜+ webrat + selenium,因爲我們想測試我們的用戶界面 – Jake 2010-08-19 18:22:17

+0

啊,我明白了。我自己,我把它放在低級別的步驟中,讓其他人處於高級別 - 我不覺得有必要將情景與他們的父母故事緊密地聯繫起來。因人而異。 – Lunivore 2010-08-20 09:35:01

1

這個問題真的是「分支」之一。

如果有多個步驟,每個步驟都必須有用戶選擇。應該有多個「當」的。這應該形成一個豐富的樹,每個分支都有大量用戶選擇的替代方案。每個可能的結果都應該有自己的測試來做出各種選擇並達成結果。

具有兩個用戶選擇的三步序列是8個可能的路徑。不同的路徑可能會達到相同的結果(或可能不會)。但是你應該有多條路徑。

如果僅僅是連續的(因爲有人覺得像編寫連續的步驟)並且用戶沒有選擇,那麼它並不是真的通過考慮用戶的行爲來驅動,是嗎?

我沒有看到選擇。沒有選擇==難聞的氣味。但容易測試,因爲只有一個結果與一系列用戶幾乎沒有選擇的圈套步驟。

如果你正確地做出選擇,那麼每個步驟都有多個結果,每個步驟應該獨立進行測試。