2017-04-05 76 views
4

我是Specflow和BDD的粉絲。它在各種項目中對我很有幫助。組織特徵文件的最佳方式是什麼?

我還沒有解決的一個挑戰是以某種方式組織我的功能文件和場景,這使得它很容易瀏覽和探索。想象一年後,別人想要一起來了解這個系統。從哪兒開始?最重要的是什麼不重要?特徵之間的任何關係?系統是否處理特定情況?作者有沒有想過這個問題?

任何人都可以分享一些技術,閱讀或工具,哪些重點?

回答

5

這個問題真的是關於個人喜好,但我的答案是我如何讓我的目錄更容易理解。

隨着我一直在努力的項目,我不得不考慮這樣的問題。我知道後面的內容,其他人會瀏覽黃瓜目錄以添加更多或者修復各種bug。

一般來說,我們採取這種做法(我會用我們的CucumberJS結構爲例):

project 
| features 
| | elements 
| | | pages 
| | | | home.js 
| | | | index.js // grab all of the things in the pages directory 
| | | | search.js 
| | | index.js // grab everything in elements directory and the index of pages 
| | | urls.js 
| | | test_customers.js 
| | feature_files 
| | | home 
| | | | homepage_links.feature 
| | | | homepage_accessibility.feature 
| | | | homepage_check_welsh_translation.feature 
| | | search 
| | | | search.feature 
| | | | search_security.feature 
| | step_definitions 
| | | common // Won't go into this, but we have a library of reusable steps and functions in here for different projects that we can just port over from git 
| | | project 
| | | | pages 
| | | | | search 
| | | | | | search_steps.js 
| | | | | | search_security_steps.js 
| | | | | home 
| | | | | | home_steps.js 
| | | | | | home_accessibility_steps.js 
| | | | navigation_steps.js 
| | | | login_steps.js 
| | support 
| | | env.js // Timeouts 
| | | hooks.js // Setup/Teardown for scenarios 
| | | world.js // Setting up the drivers 
| reports 
| | 2017 
| | | 03 
| | | | 05 
| | | | | report.html 
| | | | | report.js 
| | | | 06 
| | | | | report.html 
| | | | | report.js 
| | | | 07 
| | | | | report.html 
| | | | | report.js 
| | report.json 
| screenshots 
| | failed 
| | | 2017-03-05 
| | | | search_security_xss_204057.png 
| | | 2017-03-06 
| | | | search_security_xss_100532.png 
| | | | search_security_xss_101054.png 
| | | | search_security_xss_101615.png 
| | search_security 
| | | 2017-03-06 
| | | | search_security_xss_100528.png 
| | | | search_security_xss_101050.png 
| | | | search_security_xss_101611.png 
| | | | search_security_xss_101841.png 
| .gitignore 
| README.md   

說你是新的項目,所以你要找出什麼情況下有已被寫入。 您知道它是功能集的一部分,所以您沿着這條路線前進,您正在尋找功能文件,以便沿着這條路線前進。您有興趣瞭解安全性是如何針對搜索功能進行測試的,因此您需要進入並找到該文件。

在我們的文件夾結構的其餘部分,這是相同的理論。一切都正是你所期望的。

+1

謝謝凱爾,那非常有幫助。所以你通過在文件夾結構和功能分解中加入更多思想和紀律來實現秩序。功能和步驟與軟件組件結構保持一致。功能文件按其常用的特定方面進行細分。步驟定義按照功能文件名稱分組在文件中。我想這需要一定的訓練才能保持全部同步?我會嘗試重構的一部分。 – Pasho

+0

它確實需要紀律,但團隊中的人員明白在目錄周圍移動是多麼容易。 我們也一直在試圖使我們的套件儘可能地保持可讀性,使用JS對象和黃瓜表達式而不是粗糙的正則表達式。 C#中的等價物可以是[下劃線](http://specflow.org/documentation/Step-Definition-Styles/)和[ExpandoObjects](http://stackoverflow.com/questions/6625907/javascript-var-obj-新對象的等效在-C-尖銳)。人類的可讀性是一件很好的事情,因爲它減少了新手和項目之間的差距。 –

+0

您還會注意到,有些情況下您無需添加新文件。在我的例子中,你可以看到'homepage_check_welsh_translation.feature',但沒有威爾士語的翻譯步驟。這在實踐中發生了很多。我在'home_steps.js'中寫過的步驟 - 在這種情況下會很快適用於威爾士語翻譯,但是由於它們在技術上是兩個不同的功能,我會將功能文件分開。 如果我想添加一個我僅用於威爾士語翻譯的新步驟,那麼在這種情況下,我會創建一個新的步驟文件。 –

相關問題