셀렌을 사용하는 동안 몇 가지 어려움을 겪고 있습니다 (사용자 관리자). 시나리오/단계가 얼마나 집중되어야하는지 생각하게 만듭니다. 예를 들어 사용자로 게시물을 추가하는 테스트입니다.오이 - 얼마나 많은 통합이 필요합니다.
사용자가 (기존 사용자가 제공 한) 단계에서 등록 할 페이지를 클릭 한 다음 게시물을 추가해야합니까? 아니면 모델을 통해 사용자를 만들고 포스트 추가를 클릭해야합니까?
셀렌을 사용하는 동안 몇 가지 어려움을 겪고 있습니다 (사용자 관리자). 시나리오/단계가 얼마나 집중되어야하는지 생각하게 만듭니다. 예를 들어 사용자로 게시물을 추가하는 테스트입니다.오이 - 얼마나 많은 통합이 필요합니다.
사용자가 (기존 사용자가 제공 한) 단계에서 등록 할 페이지를 클릭 한 다음 게시물을 추가해야합니까? 아니면 모델을 통해 사용자를 만들고 포스트 추가를 클릭해야합니까?
하는 문서를 게시하는 사용자에 관심이있는 사람, 그리고 시나리오에 대한 그들-이야기를 찾기)
이 수치는 단지 짧은 설명 글에 대한 링크를 붙여 넣기하지 마십시오. 그들이 가지고있는 포커스는 아마 당신이 사용해야 할 초점 일 것입니다.
예를 들어, 그들은 아마도 말할 것이다,
Given there's a user who likes horses
And they're already logged in
When they add a post
Then it should be visible to other people who like horses
등 언어는 매우 비공식입니다. 나는 가능한 한 그들의 말을 지키라고 권합니다. 비즈니스 사용자는 게시물을 클릭하고 사용자 모델을 만드는 등의 작업을하지 않을 것입니다. 비즈니스 시나리오를 수행하는 데 필요한 모든 작업을 코드 아래에 만들 수 있습니다.
"감안할 때"무엇이든지 쉽게 작동하도록하십시오. 어쩌면 데이터를 해킹하거나 사용자 모델을 깨뜨릴 수 있습니다. 어쩌면 그것은 페이지를 클릭하고 있습니다. 잘못했을 경우 시나리오를 변경하지 않고 나중에 변경할 수 있으므로 쉽게 시도해도 좋습니다. UI 자동화는 느리므로 궁극적으로 데이터 나 모델을 사용하기로 결정할 수 있습니다.하지만 나중에이를 수행하면 데이터/모델이 어차피 어떻게 생겼는지 더 잘 알 수 있습니다.
"언제"는 관심있는 행동을 유발하는 이벤트입니다.이 경우 "게시물을 추가 할 때"입니다. 할 수있는 가장 높은 수준에서 항상이를 수행해야합니다. UI를 자동화하고 싶거나 다른 컨트롤러를 사용하기를 원하는 사람들이 있습니다. 그러나 이것은 기본적으로 시나리오의 핵심이므로 여기에서 데이터를 해킹해서는 안됩니다.
Here's an article I wrote 약 BDD를 사용하면 대화가 유용하다고 생각됩니다. 이 중 하나 ("Step Away from the Tools" 또는 this rant I wrote on StackOverflow)를 좋아할 수도 있습니다.
BDD의 가장 중요한 점은 사람과 이야기하는 것입니다.하지만입니다. 그것을 시도하고 도구가 당신을 방해하지 못하게하십시오!
저는 오이 북에서 권장하는 방법을 따르는 경향이 있습니다. 일반적으로 직접 모델 액세스를 사용하여 테스트의 초점이 아닌 설정을 수행 할 것을 제안합니다.
예 : '쇼핑 바구니에 항목 추가'테스트를 위해 모델을 직접 조작하여 추가 할 로그인 사용자 및 제품을 만든 다음 브라우저 통합을 사용하여 작업을 테스트했습니다,이 경우 ' 바구니에 추가 '버튼을 클릭하고 바구니 내용을 확인하십시오.
실제로 로그인 기능을 테스트하는 경우 Capybara/Webrat 등의 로그인 페이지를 클릭하기 시작합니다.
제 질문은 시나리오보다 단계 정의에 관한 것입니다. 시나리오가 가능한 한 인간이되어야한다는 것을 이해합니다.질문은 시나리오가 말하는 것을 정확하게 테스트하는 데 초점을 맞 춥니 다. – Mailo
대화에서 실제로 시작하면 단계 정의에 적절한 수준의 집중이 적용됩니다. 나는 당신이 아직 게시하지 않은 것을 게시 한 것으로부터 말할 수 있습니다. P 대화를하지 않으면 시나리오가 빠르게 지루하고 유지 보수가 불가능 해집니다. 정직한! 나는 "when"대 "given"에 대해 약간의 내용을 추가하기 위해 약간 편집 중이다. – Lunivore