2016-07-19 167 views
0

正如我的無處不在的語言,我有一些短語,如小黃瓜單一特徵:多個角色

Feature : Display A Post 
In order to be able to check mistakes in a post 
As an admin or customer 
I want to be able to view the post 

Scenario : Display Post 
When : I select a post 
Then : the post should be viewed 

那是一個正確的用戶故事?這種情況在UI級別可能會有一些微小的差異。我是否應該違反DRY principle併爲其他角色重複該功能?

隨着時間的推移,不同的用戶可能需要不同的需求,我認爲這是我們通常爲每個用戶角色編寫用戶素材的原因。所以我應該擔心不同角色的需求會隨時間變化,或者我可以離開一個user story(和相同的測試代碼,生產代碼,databse ...)具有多個角色和refactor當他們的要求迫使我分開他們?

+0

對不起,在這裏看不到任何用戶故事。 –

+0

@Eugene S:對不起,我剛剛添加了更多信息 – Mohsen

回答

2

我不知道你在這裏的問題,並會嘗試猜測。所以首先,你的前三行只是一個描述而不是真正的步驟。這使添加不會運行的自定義文本成爲可能。

至於其他2個步驟,很難說它們是否好。正如您可能已經注意到的那樣,您不受Cucumber限制,無法擁有特定的場景流。黃瓜給你自由設計和編寫你的代碼的方式對你和你的業務邏輯更有意義。

說了這樣的話,我沒有看到重複類似步驟來測試另一個角色的問題。爲了使特徵文件更加乾燥,您可以使用Scenario Outline選項。它可能是這個樣子:

Scenario Outline: Display Post as <role> 
    When I select a post as <role> 
    Then the post should be viewed 

    Examples: 
    |role | 
    |role1| 
    |role2| 

在這種情況下,兩種情況接連而根據實例列表role值改變運行一個。

現在,關於您未來可能的變化。你不能總是預測未來會發生什麼,除非持續改變目前的要求對你或你的團隊來說是正常的做法,我不會太擔心這一點。如果在未來的當前情景中某個時候會過時,您將檢查它們並重新編寫它們或相應地添加新的。

+0

謝謝,我剛剛添加了更多信息。 – Mohsen

+0

@Mohsen看我的編輯 –

1

我認爲這裏的問題是你的語言需要改進以澄清你想在這裏做什麼以及爲什麼它是重要的。

在我看來,作爲一名管理員,希望在文章中解決錯誤,我需要的是能夠更改文章。

類似的事情適用於客戶(應該是作者?)。如果你研究一篇文章被錯誤編寫後他們會做什麼,那麼你可能會發現不同的角色以不同的方式進行交互。您將開始詢問有關如果客戶和管理員進行修復會發生什麼的問題,以及當管理員修復客戶不喜歡的情況以及各種其他情況時,客戶如何響應。

如果您這樣做,您可能會發現大部分重複數據都會消失,並且您將在此特定上下文中瞭解客戶和管理員行爲之間的差異。

1

如果某個功能需要多個角色,那麼這意味着它是史詩般的,而不是功能。分解每個功能是必須的,因此它只有一個角色,並且可以爲單個用戶組提供單個值。