2012-10-22 140 views
3

我仍然試圖完全理解BDD,並且我正面臨一些疑問。 從我的一點經驗來看,我一直在使用它來自動進行用戶驗收測試,我想知道是否可以使用它來測試Web API,而無需UI。BDD測試Web服務/ API

在過去,我使用BDD使用給定的時間行話和映射到UI交互的步驟。我已經在ASP.NET中使用Specflow或在軌道上使用ruby進行了cucumber/capybara。 因此,例如我們可以有場景是這樣的:

Given I am in the home page 
When I click login button 
Then I should see the login page 

目前的項目,我在工作是不同的。我們正在實施一個基於Web服務的API,它將被不同類型的客戶端使用。就像一個iPhone應用程序,Android應用程序和基於ASP的Web客戶端。所以我們的主要重點是基於後端,就是這一點。

在這種情況下,測試不能從UI的角度來面對。因此,我們的端到端測試基於我們的服務端點。我們將一些輸入參數傳遞給服務調用並檢查輸出。 我們可以使用BDD來做到這一點嗎?這是正確的嗎? 或者使用FitNesse等不同的東西會更好? 嗯..使用FitNesse做BDD?

回答

3

我認爲你可以做你在BDD寫的東西。我不確定這兩個關於使用SpecFlow測試Web服務的鏈接是否會幫助你,但如果你還沒有看到它們,請看看它們。

http://codedetective.blogspot.co.uk/2012/10/testing-webservices-with-specflow.html

http://www.creamdog.se/blog/2011/02/24/webservices-automated-tests-using-specflow-and-babelfish/

+1

是的,絕對可以。另外這篇文章講述了BDD以不同的方式進行操作:從UI,Web服務或控制器。 http://skipoleschris.blogspot.co.uk/2010/11/best-way-to-apply-bdd.html –

0

看一看Karate,通過Intuit Web服務測試框架。它最近被開源。它具有處理API的能力,處理HTML,JSON,XML,GraphQL查詢,並建立在cucumber的頂層。

簡單的介紹在這裏:https://medium.com/blueprint-by-intuit/karate-web-services-testing-made-simple-366e8eb5adc0#.qnpy5gagt

+0

自從我寫這個問題已經有一段時間了.. 我已經瞭解了很多關於BDD和Spec例如在過去的幾年。我瞭解到,BDD只是一種練習,而不是一種工具本身。我知道你可以在前端使用BDD,後端http後端,甚至單元測試。 BDD的意義在於在商業和技術人員之間進行對話,而不是自動化測試(這很好,但不是目標)。這就是爲什麼我認爲這個空手道工具是錯誤的方法。它使測試自動化非常簡單,但是當您開始使用http術語時,您失去了與業務交談的能力。 –

+0

@Asier儘管Karate基於Cucumber,但它不適用於BDD,語法只是使它更易於閱讀。空手道作爲一種自動化工具具有價值,如果因爲它不符合你對BDD的想法而忽略它,你可能會錯過:[是的,空手道不是*真* BDD](https://hackernoon.com/是的,空手道是不是真的bdd-698bf4a9be39) –

+0

嗨,彼得,我仍然認爲使用小黃瓜語法會誤導很多人。人們將小黃瓜與bdd聯繫起來,因此人們會誤導性地認爲他們在使用空手道時正在做bdd。我不是說空手道不會帶來價值,我只是說空手道把重點放在了錯誤的地方 - 自動化。 –