야생에서 좋은 오이 예?
나는 몇 년 전에 몇 가지 프로젝트를 위해 Cucumber를 사용해 보았고 또 다른 시도를하려고합니다. 나는 또 다른 "Beginning Cucumber"기사가 필요하지 않습니다. 대신, 나는 야생에서 실제적인 사용을보고 싶습니다. 하나는 다른 Cucumber 사용자들이 관용적이고 반 패턴이 없다고 생각할 것입니다.
그렇다면 대규모 프로젝트에서 실제 Cucumber 사양의 가장 좋은 예는 무엇이라고 생각하십니까?
디아스포라의 오이 검사를 읽을 수 있습니다 . 꽤 큰 프로젝트라서 뭔가 배울 수있을 것 같아요.
Cucumber 자체의 기능을 읽을 수 있습니다. 사람들은 자신이 무엇을하는지 알아야합니다.
https://github.com/cucumber/cucumber-ruby/tree/master/features
이것은 직접적인 대답은 아니지만 귀하의 질문에 대한 전제에 동의하지 않지만 해결책이 있으므로 어쨌든 내 의견을 제시하겠습니다.
다른 Cucumber 사용자는 관용적이고 반 패턴이 없다고 생각할 것입니다.
이 진술은 불행히도 만족시킬 수 없다고 생각합니다.
다음은 CollectiveIdea의 Brandon Keepers가 일반적인 "자신을 반복하지 마십시오"라는 관점에서 볼 때 일반적이고 재사용 가능한 단계를 향해 노력해야 한다는 일반적 입장을 취하고 있습니다.
그러나 여기 Cucumber의 저자 인 Aslak Hellesøy 는 시나리오 별 단계를 향해 노력해야 한다는 공통된 의견을 가지고 있으며 (그러나 상호 배타적 인) "왜 Cucumber가 필요한가?"라는 관점에서 이치에 맞습니다.
위에 링크 된 "The Training Wheels Came Off"에서 Aslak은 재사용 가능한 단계 와 시나리오 별 의 두 가지 스타일을 신랄하게 대조하는 두 가지 예제 시나리오를 만듭니다 .
두 가지 스타일 모두에서 수년간 Cucumber를 사용하고 위의 딜레마를 고려한 결과 다음과 같은 결론이 내 렸습니다.
- 재사용 가능한 단계는 이름 충돌을 피하면서 더 복잡한 단계 정의를 지원해야하므로 유지 보수의 악몽이됩니다.
- 가독성과 단순성을 위해 시나리오 별 단계가 선호되지만 이름 충돌로 인해 유지 관리의 악몽이됩니다.
그래서 저는 Cucumber가 현재 망가졌고 여러분이 가장 좋아하는 단위 테스트 프레임 워크 위에있는 평범한 카피 바라가 가장 유연하다고 결정했습니다.
Cucumber는 그들이 선택한 경우 시나리오 컨텍스트, 기능별 시나리오, 시나리오 네임 스페이스 등을 추가하여 기능, 사용자 역할, 의미있는대로 시나리오의 범위를 지정하고 시나리오 별 단계를 만들기 위해 명명 충돌을 크게 줄일 수 있습니다. 진정으로 실행 가능합니다. 그 시점에서 분명한 문체의 승자가있을 것이라고 생각합니다. 그때까지는 이름 충돌을 피하기 위해 단계를 추상화해야하는 긴장과 단순성과 가독성을 위해 시나리오별로 유지하려는 긴장이 항상있을 것입니다.
이러한 단점을 해결하려는 대안 프로젝트는 Spinach 이지만 프로젝트가 그다지 활성화되지는 않았습니다. 시금치 대 오이의 평가에 대한 내 의견을 참조하십시오 .
저는 Cucumber 프로젝트도 찾고있었습니다. 그리고 실제로 Cucumber 저장소에 이러한 프로젝트 목록이있는 위키 페이지가 있습니다 ( 모든 프로젝트 가 여전히 Cucumber를 사용하고있는 것은 아닙니다 ).
Cucumber를 사용하는 프로젝트 :
- Gemcutter
- 재고 정리
/generators/clearance_features/templates/features/
- WebJam
/features/
- 빨간 차
/plugins/*/features
- 보석 세공인
/features
- 지킬
/features
- CarrierWave
/features/
- RadiantCMS
- OERPScenario (OpenERP에 연결됨)
- WontoMedia
/features/
- Rails 디렉토리
- 육수
- Heroku 멜빵
- TimeFliesBy
- 디아스포라
- 요리사
출처 : https://github.com/cucumber/cucumber/wiki/Projects-Using-Cucumber
나는 추천한다 :
https://github.com/teambox/teambox/tree/dev/features
업데이트 : Ivailo Bardarov가 언급했듯이, 그들은 현재 나쁜 습관 인 웹 스텝을 사용합니다. 단계가 아닌 좋은 기능을 보려면 이것을 참조하십시오!
업데이트 2 : 늦은 것 같아요. 유료 버전의 Object on Rails 책에서 제공하는 오이 기능을 통해 많은 것을 배웠습니다. 소스 코드는 오픈 소스가 아니므로 여기에 게시하거나 링크를 찾을 수 없습니다.
내가 선호하는 방법은 특정 단계 나 양식을 작성하는 것보다 기능 언어를 도메인 / 비즈니스 언어에 가깝게 유지하는 것입니다. 그래서 내 기능에 다음과 같은 것을 갖는 대신 :
When I fill in "Name" with "XYZ
내 기능은 다음과 같이 말합니다.
When I create a project:
| name |
| xyz |
그리고 내 단계에는 링크를 클릭하고 테이블을 구문 분석하고 관련 양식 필드를 채우는 코드 등이 있습니다.
웹 앱 재 설계를 위해 현재 프로젝트에서 Cucumber를 사용하고 있지만 오픈 소스가 아니기 때문에 실제 기능과 단계를 제공 할 수 없습니다.
I will say that we've been heavily inspired by the Page Objects pattern in these two samples. We're in the middle of heavy UI refactoring with out UX team. Using Page Objects has made adapting the tests to those changes reasonably simple.
I wish I could post the ones from our corporate repo (massive internal web app for a Fortune 500).
The best in the wild is probably Wikipedia's tests:
https://github.com/wikimedia/qa-browsertests
You really need to abstract with page objects. Even then when your app gets past 30 screens of input your tests get hard to abstract.
I have an experimental way of quickly abstracting common paths without cycles; should probably clean it up and send it as a pull request to Cheezy: https://github.com/cheezy/page-object
A common issue with large projects is that the Cucumber features take a lot of time to write.
So there are a number of strategies involved: If you are using Cucumber to describe a legacy system, you get decent acceptance test coverage via cucumber and capybara, and then refactor your cucumber step definitions.
If you are unit testing properly, use Cucumber to only describe the happy path of your app, or only essential non-happy paths. Get coverage with RSpec (or Xunit of choice).
The key issues with Cucumber is that the features should be describing functionality at a very high level. You need to make your step definitions DRY and reusable, and I am a fan of redirecting step definitions to keep the stakeholder-interesting features concise and to the point. Though I think that point can be a bit contentious.
참고URL : https://stackoverflow.com/questions/5681249/good-cucumber-examples-in-the-wild
'program story' 카테고리의 다른 글
Visual Studio에서 빈 텍스트 복사 비활성화 (0) | 2020.12.05 |
---|---|
Django 관리자 : 인라인으로서의 OneToOne 관계? (0) | 2020.12.05 |
Java Generics WildCard : (0) | 2020.12.05 |
데스크탑 경로에 대한 환경 변수는 무엇입니까? (0) | 2020.12.04 |
메소드의 속성 값 읽기 (0) | 2020.12.04 |