2013-02-20 16 views
2

在對TDD和BDD進行了非常鼓舞人心的培訓之後,我嘗試使用MSTestSpecflow來實施該方法。但我有一個問題,我堅持:BDD情景何時會變得過於具體?

我寫了驗收測試來驗證我們正在努力的子系統。 我們的系統是一個小分佈:

  • 有一個第三方計算機
  • 有它自己的應用與我們通過TCP訪問第三方數據庫運行自如
  • /IP

但是我的Specflow場景似乎太專門針對我自己的開發設置:它包含僅對我有效的輸入。在下面的例子中,ip地址主要來自我。目標目錄就是我機器上的一個目錄。

經認可的Tester/Validator或產品所有者可能無法啓動相同的測試場景,因爲他們無法訪問此機器。但我的開發者同事可能不會。

@lastOne 
Scenario: Get lattest 3rdParty OCR Data into specified directory 
Given I indicate 'database' as the databaseName of third party computer 
And I indicate '12.126.42.21' as the ipAddress of the third party computer 
And I indicate 'user' as the databaseUser in third party computer 
And I indicate 'c:\Temp\test_ocr\' as the destination path where to put the ocr data 
And I indicate '2013020800009E' as the truck identifier to be associated with ocr data 
When I call the OCR Application program 
Then the destination path should contain correctly named xml file, with validated xml data, and jpg files about ocr data. 

恐怕我對BDD有一些誤解。我在我的場景中太具體了? 如果是,我應該在哪裏停止?

回答

3

我不確定你的問題是BDD的具體問題,但它仍然是一個很好的問題。

我通常會建議所有開發都是在每次簽入時運行測試的持續集成服務器完成的,即使是單獨使用的私有項目也是如此。即使我自己的個人項目得到了這個,因爲TeamCity是免費的,當我登記時,家裏的孩子桌面是閒置的。重要的是,如果你在一個團隊工作,這更明顯,因爲當你得到它將構建最新的源代碼。

但它也可以解決您的問題。你可以很快地知道什麼東西太具體,因爲它不適用於你自己的個人機器和構建機器。無論您是在BDD,TDD,ATDD還是任何類型的測試中工作,都會存在這些問題。

看着你上面的例子,我會說它是非常具體的,也很脆弱。如果第三方PC有一天關閉,所有的測試都會失敗。如果您使用Specflow運行單元測試,那麼我建議您嘲笑大部分代碼,以便您可以在不調用測試PC的情況下進行測試,但您的示例更像是在嘗試執行系統/集成測試。

而是單獨指定所有參數,爲什麼不給一個名稱,整束

Given Im using the test pc 

然後你可以在設置許多人了綁定,如果你需要,然後仍然定製他們因此測試通過

[Given] 
public void GivenImUsingTheTestPc() 
{ 
    if (Environment.ComputerName == "d1234") 
    { 
    ipadress = 1.2.3.4; 
    .... 

這顯然只是移動脆性,但至少它讓你現在

+0

我大多喜歡的建議:**,如果它打破了另一臺機器上,那麼它太SP ecific **。我還深信,我應該嘲笑第三方個人電腦:我需要深入研究這個部分,但我還沒有做過。 – 2013-02-20 11:52:45