TL; DR
As histórias de usuário são para documentar qual valor deve ser adicionado ao produto e por quê. Os detalhes da implementação (por exemplo, como o valor deve ser adicionado, testado, medido ou validado) são limitados pela história, mas não estão contidos nela. Eles são deliberadamente deixados como artefatos separados para manter a flexibilidade e a agilidade dentro da estrutura.
As especificações e os detalhes da implementação costumam ser capturados em outros artefatos, como ATDD (Desenvolvimento Orientado a Testes de Aceitação), Desenvolvimento Orientado a Testes (TDD) e scripts e cenários de Desenvolvimento Orientado a Comportamentos (BDD). Esses artefatos específicos não são obrigatórios pela estrutura do Scrum, mas certamente fornecerão um bom ponto de partida se você ainda não tiver outros controles de processo eficazes em vigor.
Histórias de usuários não são especificações
O pôster original (OP) fez a seguinte pergunta :
[Um] cliente deseja um processamento diferente para diferentes cartões de crédito, existem requisitos rígidos que devem ser implementados e conhecidos para que casos de teste possam ser escritos ... ONDE DEVO COLOCAR SE NÃO ESTAR NA HISTÓRIA?
Uma história de usuário é um recurso que agrega valor , fornece algum contexto para orientar conversas sobre implementação e um ponto de vista vinculado a um consumidor de valor que se beneficiará do valor entregue pelo recurso.
O ponto principal de uma história de usuário é que os detalhes da implementação não são prescritivos. A equipe é livre para implementar o recurso de qualquer maneira que entregue o valor identificado ao consumidor de valor dentro do contexto apropriado.
Um Exemplo Trabalhado
Um exemplo de história do usuário
Isso é mais fácil de explicar se você começar com um conjunto menos ambíguo de histórias de usuários. Como o OP não forneceu uma história de usuário acionável que segue o mnemônico do INVEST , inventarei uma por uma questão de exemplo. Considere a seguinte história:
Como usuário que prefere pagar com cartão Discover,
eu gostaria da opção de fazer minhas compras com o cartão Discover,
para que eu não me limite ao Visa, Mastercard ou American Express.
Isso fornece um recurso concreto, fornece algum contexto que pode orientar as decisões de implementação que a equipe deve tomar e identifica o consumidor de valor como um cliente proprietário do cartão Discover. Esse não é um conjunto de especificações, mas é o que você precisa para ter as conversas certas com o cliente e com a equipe sobre a melhor forma de implementar a história durante uma iteração de desenvolvimento.
Análise e Implementação
A implementação real é com a equipe. A equipe precisará fazer algumas análises para determinar:
- A maneira mais fácil de implementar um novo recurso.
- Qual das várias opções de implementação será mais fácil de suportar no futuro, sem acumular dívida técnica.
- Como aplicar os princípios de aberto e fechado e do YAGNI para garantir que seu novo recurso seja robusto sem ser excessivamente projetado.
Um dos princípios centrais do Agile Manifesto é a colaboração do cliente. Espera -se que uma equipe multifuncional e auto-organizada seja capaz de colaborar com o cliente para elaborar os detalhes da implementação dentro das diretrizes fornecidas pela história do usuário.
Se suas histórias de usuário não foram bem escritas, ou se a equipe não possui as habilidades ou a maturidade do processo para fazer a análise suficiente necessária para sua estrutura ágil, isso obviamente será muito mais difícil do que precisa. Livros inteiros foram escritos sobre o assunto de como criar boas histórias de usuários no nível adequado de granularidade; infelizmente não existe uma bala de prata, mas é uma habilidade aprendível para equipes ágeis.
Design orientado a teste e orientado a comportamento
A melhor maneira de garantir que a análise seja sólida e que a implementação seja sã e suportável é através do uso de práticas de TDD e BDD. Por exemplo, dada a história acima, a equipe deve capturar a implementação planejada por meio de artefatos como:
Recursos de pepino com cenários testáveis.
Isso é mais útil para impulsionar o desenvolvimento de testes de aceitação e para documentar as expectativas do usuário em relação ao comportamento do aplicativo. Por exemplo, a história do usuário deve ter um ou mais recursos relacionados ao Pepino que descrevem como o usuário pode fazer check-out com um cartão Discover e como esse processo se parece com o usuário.
Testes RSpec que validam o comportamento (não os detalhes da implementação interna) dos novos recursos de código.
Isso é mais útil para documentar e validar o comportamento pretendido do recurso no aplicativo. Por exemplo, a história do usuário orientará a criação de testes de unidade e integração que garantem que o uso de um cartão Discover invoque qualquer comportamento específico do cartão que o aplicativo exija para autorizar uma venda pelo gateway de pagamento.
As ferramentas específicas não importam. Se você não gosta do Cucumber ou do RSpec, use as ferramentas ou metodologias que funcionam melhor para sua equipe. No entanto, o ponto é que os detalhes da implementação são baseados na história do usuário , mas não são prescritos por ela . Em vez disso, a implementação (ou especificações, se você preferir) são detalhes a serem trabalhados durante o desenvolvimento do recurso de forma colaborativa.