2016-04-03 78 views
2

我是黃瓜的新人。我試圖寫一個測試是否有一個以上的黃瓜場景是正確的?

  1. 一個新的下拉現有頁面
  2. 上和選擇這個新的值條目的特徵文件進入一個新的數據庫表

我寫了這個功能文件。這看起來不正確。

  • 我不確定是否可以有兩個Then s。
  • 或者有什麼方法可以讓我們擁有相互依賴的功能,比如新的下拉菜單和數據庫條目的功能之一?

特徵文件就像

Scenario: Admin user should be able to assign ReadOnly role to a searched user via Change User page 

Given user logs into webapp with Admin role 
And Navigates to Change User page 

When user searches for user with id 123 
And clicks select link corresponding to correct id 

Then Change User page loads 
And it has a new drop down with Read Only role 
And when user selects MS distributor in drop down # note when with small w 
And Presses Submit button then a new entry is saved in DB table # then with small t 

或者,也許我可以使用以下命令:

Scenario: Admin user should be able to assign ReadOnly role to a searched user via Change User page 

Given user logs into webapp with Admin role 
And Navigates to Change User page 

When user searches for user with id 123 
And clicks select link corresponding to correct id to open Change User page 
And it has a new drop down with Read Only role # need to check this new value in my selenium test case 
And when user selects MS distributor value in drop down # note when with small w 
And presses Save button 

Then a new entry is saved in DB table 

我期待着從你的經驗中學習。

回答

1

隨着我瞭解,到目前爲止,我會寫你的情況是這樣的:

Scenario: Admin user should be able to assign ReadOnly role to a searched user via Change User page 
    When I log in as an admin 
    And I navigate to the Change User page 
    And I search for the user with ID 123 
    And I click the link to user 123's Change User page 
    And I select the MS distributor value from the dropdown with the Read Only role 
    And I press the Save button 
    Then a new entry is saved in the database table 

主要的一點是,有沒有必要斷言下拉存在。只要使用它。如果下拉列表不存在,則該方案將失敗。

When(和And之後的When s)用於用戶操作。 Then(和And之後的Then s)用於斷言。在單個場景中有多個When/Then部分是很好的;這裏沒有必要這樣做。我喜歡在第二個和之後的When之前的空白行,以便更容易地看到有多個這樣的部分。

其他景點:

  • 每一步都應該有一個明確的主題,這意味着句子的主語:「用戶」或「I」。爲簡潔起見,我使用「我」而不是「用戶」。整個過程也可以使用「用戶」。

  • 我會在前兩步使用When而不是Given,因爲它們的措辭就好像它們是用戶正在執行的一系列操作的一部分。或者,你可以寫措辭雖然他們說什麼都已經是這樣了兩個步驟,並利用它們與Given

    Given that I am logged in as an admin 
    And I am on the Change User page 
    
  • 「的新條目保存在數據庫表」是模糊的,過於堅果和用於場景語言的螺栓。重新說明具體內容並說明商業條款中發生的事情。

2

當你寫完你的代碼,而這一切的作品,什麼都會有人(或類似的自動化系統),能夠做到這一點,他們以前不能做的?

你能想到一個這樣的例子嗎?

我很確定會發生什麼不是將字段放入數據庫。不,除非有人在使用該數據庫,即使如此,他們有能力將讀你只是把信息

你告訴我的驗收標準是這樣的:

Admin user should be able to assign ReadOnly role to a searched user via Change User page 

你能舉個例子嗎?你能給我一個管理員用戶的例子嗎?他們能做什麼?還是無法做到?用戶不能做什麼?你能給我一個他們可能想要編輯的條目的例子嗎?

每當我看到任何通用的(例如「一個用戶」),我會問你一個例子。給我一個名字!即使這是一個愚蠢,有趣的。

這裏(的例子)我指的是那種東西:

Given Andy Admin has privileges for changing users 
And Reggie Writer is a user with privileges for writing entries 
And a page on "Dancing with Unicorns" is editable to writers 
When Andy Admin changes Reggie Writer's privileges to be Read Only 
Then Reggie Writer should no longer be able to edit the page "Dancing with Unicorns". 

你會看到,語言是不依賴於執行。您無法分辨Andy和Reggie是使用網頁,手機上的應用程序還是舊式的DOS提示符。這是關於問題,而不是解決方案。數據庫通常是解決問題的一種方法。

此外,數據庫條目有沒有值,除非它實際上被使用。場景必須具有有價值的結果。

它當然可以有那些的不止一個:

Given Martin Moneybags has plenty of money <-- we could define how much if we wanted 
And he's authenticated himself with the cash machine 
When he asks for £1000 
Then the cash machine should give him £1000 
And it should debit his account by £1000. 

你不會想忘記,最後一個,畢竟。

完全可以有多個給定,並且多於一個然後。

有些人有規則,當應該只有一個。但是,如果重要的行爲是關於兩個人行爲的交互,或者與時間傳遞等事物的交互,那麼可以有多個時間。雖然這是一種罕見的情況。

如果您有七個以上的步驟,請查看是否存在一些非常常見的上下文或結果,並且您可以將其移入不同的功能。例如,我希望看到所有處理透支的人都有不同的特點,儘管他們可能會分享一些相同的步驟。

比任何事情都重要的是與瞭解問題的人交談。請他們舉個例子。進行對話。如果你是爲自己做的話,至少要和一隻橡皮鴨說話。這是您希望與未來對話的替身 - 你。

如果您沒有對話,那麼您沒有在做BDD。

+0

感謝例如多個然後使用和最後...但我的情況是有點不同...首先我檢查是否存在下拉,然後我用它來增加數據庫的價值。 – Lav

+0

@Lav是的,我可以看到。國際海事組織,你正在看場景的方式,以及場景本身的細節,是你正在經歷的困惑的重要組成部分。我還可以告訴你,你還沒有與業務人員討論這種情況。如果你繼續沿着這條路走下去,你很可能會發現你的場景變得脆弱和難以維繫。有關更多信息,請查找「聲明式與命令式」。 – Lunivore