TL; DR
사용자 스토리는 제품에 어떤 가치를 추가해야하며 그 이유를 문서화하기위한 것입니다. 구현 세부 사항 (예 : 어떻게 값이 추가 테스트, 측정, 또는 검증되어야한다) 이야기에 의해 제한되어 있지만, 그 안에 포함되어 있지 않습니다. 프레임 워크 내에서 유연성과 민첩성을 유지하기 위해 의도적으로 별도의 아티팩트로 남겨집니다.
스펙 및 구현 세부 사항은 ATDD (Acceptance-Test Driven Development), TDD (Test-Driven Development) 및 BDD (Behavior-Driven Development) 스크립트 및 시나리오와 같은 다른 아티팩트에서 가장 자주 캡처됩니다. 이러한 특정 아티팩트는 Scrum 프레임 워크에 의해 의무화되지 않지만, 다른 효과적인 프로세스 제어가없는 경우에는 확실히 좋은 출발점이 될 것입니다.
사용자 사례가 사양이 아님
오리지널 포스터 (OP) 는 다음과 같은 질문을했다 :
[A] 고객은 다른 신용 카드에 대해 서로 다른 처리를 원하며, 테스트 케이스를 작성할 수 있도록 구현하고 알아야하는 엄격한 요구 사항이 있습니다.
사용자 스토리는 가치 를 제공 하고, 구현에 대한 대화를 안내 하는 컨텍스트 를 제공 하며 기능 이 제공하는 가치 를 활용할 가치 소비자 와 관련된 관점을 제공합니다.
전체 포인트 사용자 이야기는 구현 세부 사항은 규정하지 않은 것입니다. 팀은 적절한 맥락에서 식별 된 가치를 가치 소비자에게 전달하는 방식으로 기능을 자유롭게 구현할 수 있습니다.
작동하는 예
샘플 사용자 스토리
덜 모호한 사용자 스토리로 시작하면 설명하기가 더 쉽습니다. OP는 다음을 따르는 실행 가능한 사용자 스토리를 제공하지 않았기 때문에 INVEST 니모닉 예제를 위해 하나를 발명하겠습니다. 다음 이야기를 고려하십시오.
Discover 카드 결제를 선호하는 사용자는
Visa, Mastercard 또는 American Express로 제한되지 않도록
Discover 카드로 구매할 수있는 옵션을 원합니다 .
이는 구체적인 기능을 제공하고, 팀이 결정해야하는 구현 결정을 안내 할 수있는 컨텍스트를 제공하며, 가치 소비자를 Discover-card 소유 고객으로 식별합니다. 그것은 일련의 사양이 아니지만 개발 반복 중에 스토리를 구현하는 가장 좋은 방법에 대해 고객 및 팀과 올바른 대화를 나누기 위해 필요한 것입니다.
분석 및 구현
실제 구현은 팀의 책임입니다. 팀은 다음을 결정하기 위해 몇 가지 분석을 수행해야합니다.
- 새로운 기능을 구현하는 가장 쉬운 방법입니다.
- 기술 부채를 발생시키지 않으면 서 앞으로 진행하기에 가장 쉬운 다양한 구현 옵션은 무엇입니까?
- 개방형 및 YAGNI 원칙을 적용하여 과도하게 엔지니어링하지 않고도 새로운 기능을 강력하게 유지하는 방법
애자일 선언문 의 핵심 원칙 중 하나 는 고객 협업입니다. 기능 간자가 조직 팀이 예상됩니다. 사용자 스토리가 제공하는 가이드 라인 내에서 구현 세부 사항을 해결하기 위해 고객과의 공동 작업을 할 수 있도록.
사용자 스토리가 잘 작성되지 않았거나 팀에 민첩한 프레임 워크에서 요구하는 충분한 분석을 수행 할 기술이나 프로세스 성숙도가없는 경우에는 필요한 것보다 훨씬 어려울 것입니다. 적절한 수준의 세분성으로 좋은 사용자 스토리를 만드는 방법에 대한 주제에 대한 전체 책이 작성되었습니다. 불행히도은 총알은 없지만 민첩한 팀에게는 배울 수있는 기술입니다.
테스트 주도 및 행동 주도 설계
분석이 적절하고 구현이 제정신이며 지원 가능한지 확인하는 가장 좋은 방법은 TDD 및 BDD 사례를 사용하는 것입니다. 예를 들어, 위 이야기를 감안할 때 팀은 다음과 같은 아티팩트를 통해 계획된 구현을 캡처해야합니다.
테스트 가능한 시나리오가있는 오이 기능.
이는 승인 테스트 개발을 주도하고 응용 프로그램 동작에 대한 사용자의 기대치 를 문서화하는 데 가장 유용합니다 . 예를 들어, 사용자 스토리에는 사용자가 Discover 카드로 체크 아웃하는 방법과 프로세스가 사용자에게 어떻게 보이는지 설명하는 하나 이상의 관련 Cucumber 기능이 있어야합니다.
새로운 코드 기능 의 동작 (내부 구현 세부 정보가 아님) 을 검증하는 RSpec 테스트 .
응용 프로그램 내에서 기능의 의도 된 동작을 문서화하고 유효성을 검사하는 데 가장 유용합니다. 예를 들어, 사용자 스토리는 발견 카드를 사용하여 애플리케이션이 지불 게이트웨이를 통해 판매를 승인하는 데 필요한 모든 카드 특정 동작을 호출하는지 확인하는 단위 및 통합 테스트 작성을 주도합니다.
특정 도구는 중요하지 않습니다. Cucumber 또는 RSpec이 마음에 들지 않으면 팀에 가장 적합한 도구 또는 방법을 사용하십시오. 그러나 요점은 구현 세부 사항이 사용자 스토리를 기반으로 하지만 이에 의해 규정되지 않는다는 것 입니다. 대신 구현 (또는 원하는 경우 사양)은 협업 방식으로 기능을 개발하는 동안 해결해야 할 세부 사항입니다.