2017-04-05 14 views
4

저는 Specflow 및 BDD의 엄청난 팬입니다. 그것은 다양한 프로젝트에서 저에게 큰 도움이되었습니다.피처 파일을 구성하는 가장 좋은 방법은 무엇입니까?

아직 해결하지 못한 한 가지 도전 과제는 내 기능 파일 및 시나리오를 어떤 방식으로 구성하여 쉽게 탐색하고 탐색 할 수 있도록하는 것입니다. 1 년 후에 누군가 다른 사람이 시스템을 배우고 싶어한다고 상상해보십시오. 어디서 시작하나요? 가장 중요한 것은 무엇이 덜 중요한가? 지형지 물 간의 모든 관계? 시스템이 특정 시나리오를 처리합니까? 저자는이 문제에 대해 생각 했습니까?

누구나 그 중점을두고 몇 가지 기법, 읽기 또는 도구를 공유 할 수 있습니까?

답변

5

이 질문은 실제로 개인적인 취향에 관한 내용이지만 내 대답은 어떻게하면 내 디렉터리를 더 쉽게 이해할 수 있는지입니다.

내가 해왔 던 프로젝트에서 나는 이런 문제에 대해 꽤 생각해야했다. 나는 나중에 그 줄을 알고, 다른 사람들은 더 많은 것을 추가하거나 버그 수정의 다양한 부분을하기 위해 오이 전화 번호부를 통해 볼 것입니다.

일반적으로 말해서, 우리가 (내가 예를 들어 우리의 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   

는 시나리오가 무엇인지 찾으려 있도록, 프로젝트에 익숙하지 말 작성되었습니다. 기능 집합의 일부이므로 경로를 따라 가면 기능 파일을 찾고 해당 경로로 이동합니다. 보안이 검색 기능에 대해 테스트 된 방법에 관심이 있으니 그 곳으로 가서 파일을 찾으십시오.

Google의 나머지 폴더 구조에서 동일한 이론입니다. 모든 것이 정확히 예상되는 곳입니다.

+1

카일 감사합니다. 매우 도움이됩니다. 따라서 폴더 구조에 더 많은 생각과 규율을 넣음으로써 주문을 성취하고 고장을 특징으로합니다. 기능 및 단계는 소프트웨어 구성 요소 구조와 정렬됩니다. 기능 파일은 보유하고있는 시나리오와 관련된 특정 측면으로 분류됩니다. 단계 정의는 피쳐 파일 이름 다음에 파일로 그룹화됩니다. 이 모든 것을 동기화 상태로 유지하려면 특정 규율이 필요하다고 생각하십니까? 나는 리팩토링의 일부로 똑같이 시도 할 것이다. – Pasho

+0

징계가 필요하지만 팀원들은 디렉토리 주위를 조종하는 것이 얼마나 쉬운 지 잘 알고 있습니다. 우리는 또한 우리의 스위트를 가능한 한 사람이 읽을 수있는 것으로 유지하려고 시도했다. JS Objects와 Cucumber Expressions를 낡은 정규 표현식 대신에 사용했다. C#의 해당 함수는 다음과 같습니다. [밑줄] (http://specflow.org/documentation/Step-Definition-Styles/) 및 [ExpandoObjects] (http://stackoverflow.com/questions/6625907/javascript-var-obj- new-object-equivalent-in-c-sharp)를 사용합니다. 인간의 판독 가능성은 새로운 시동기와 경험 한 프로젝트 사이의 갭을 줄이기 때문에 손톱을 깍는 것이 좋습니다. –

+0

새 파일을 추가 할 필요가없는 경우도 있습니다. 예제에서는'homepage_check_welsh_translation.feature'을 볼 수 있지만 웨일스 어 번역 단계는 없습니다. 이것은 실제로 실제로 발생합니다. 'home_steps.js'에서 작성한 단계는이 경우 웨일스 어 번역에 도움이되지만 기술적으로 두 가지 다른 기능이므로 필자는 기능 파일을 분리합니다. 웨일스 어 번역에만 사용하는 새로운 단계를 추가하려면이 경우 새 단계 파일을 작성하십시오. –