昨天我通過Gojko Adzic瞭解了關於BDD的很棒的演示。我可能會錯過他說的一兩件事,所以這裏有一個問題,希望能夠爲我解決一些問題。您的BDD規格應該與UI測試分開嗎?
通常,當您在線看到BDD示例時,他們在UI中包含了一些步驟。在一個黃瓜語言,你可以經常看到類似的東西:
Scenario: Successful booking
Given I am on the page ...
When I enter the following ...
或類似的東西。
我的問題是,這真的與BDD有關嗎? BDD不應該針對該領域,然後通過UI或迴歸測試來進行這些測試。我所想的是像這樣利用小黃瓜的語法來描述預訂系統的somekind的:
BDD規格:
Scenario: Successful booking
Given I am an authenticated user
When I place an order with the following items
| item | price ($) |
| book1 | 5 |
Then I should expect to pay $5
And I should get a confirmation mail of my order
請注意,我不是mentoning的UI可言,我只是描述瞭如何域的作品,這個測試應該在每一個版本上運行。然後,你可以有你的UI測試(也小黃瓜):
Scenario: Successful booking
Given I am logged in on the site
And I go to the page for item book1
And I click add to basket
Then I should have a basket with 1 item and $5
When I click checkout
Then I should get to the checkout page
和再這樣下去,也許應該分爲兩個或三個方案但這不是重點。這類測試的運行較爲繁重,應該只能在夜間測試中運行。問題的關鍵仍然是:你是否應該將BDD規範與UI /迴歸測試分開?
既然你指的是Gojko Adzic,讓我從他的書「規範範例」中引用一句話: 「不要被困在用戶界面的細節中,用戶界面是可視的,所以很容易思考。我已經看到了團隊和客戶花費數小時來描述導航菜單鏈接的項目,但這部分用戶界面幾乎沒有風險,並且可能花費了時間來討論更重要的功能 [...] –
(quote繼續):「而不是停留在用戶界面的詳細信息,而是考慮通過網站的用戶旅程更有用。在協同指定時,根據其對業務的重要性,按時間投入部分規格。應該詳細探討重要和有風險的項目。那些不重要的可能不需要如此精確地指定。「 –
總而言之:BDD規範不需要用UI來表示,而且UI測試通常是端到端測試,它是 –