Pergunta

O mais eu leio sobre BDD e como é suposto ser melhorado TDD o mais confuso tudo isso parece-me. Eu encontrei citações de especialistas que dizem que é sobre design, mas também de outros especialistas que dizem que é sobre a análise.

A maneira que eu atualmente vê-lo é o seguinte:

1) Análise: BDD

wikipedia

O resultado da análise orientada a objeto é uma descrição do que o sistema é funcionalmente necessário para fazer, no forma de um modelo conceitual.

Assim, depois de BDD temos os requisitos (histórias e cenários). Mas eu não tenho certeza sobre a parte do modelo conceitual.

2) Projeto: por exemplo, com ferramentas como design orientado resonsibility usando cartões CRC

3) Código: codificação do projeto, use opcionalmente testar (como o que eles dizem sobre TDD mal feito, que eu também achar útil)

Am I errado na forma como eu vejo isso? Estou tendo problemas para ver a floresta através das árvores no momento.

Foi útil?

Solução

Em suma, é fazer com Análise .

BDD é para "test driven desenvolvimento aceitação." - ou seja, para saber se um sistema sob comporta teste como esperado para um cenário história de usuário específica

Quando eu trabalhava com JBehave que usamos no nível história de usuário e ainda fez TDD "convencional" para lidar com colaborações entre objetos individuais e entre os subsistemas.

Normalmente os sistemas de negócios usar cenários BDD para descrever o comportamento do domínio do negócio não testar os pequenos detalhes implementtion dentro do sistema. Você quer que os cenários BDD inclinados a nível do especialista de domínio da abstração. Esses cenários não faria muito sentido para especialistas em domínio e seria muito frágil se descreveu cada pequeno detalhe da implementação.

cenário A BDD diz o o sistema deve fazer para uma história de usuário , mas não como ele faz isso.

Outras dicas

BDD - Behavior Driven Development

Comportamento = ..na contexto de .. Desenvolvimento - ... na construção de ...

Desenvolvimento, neste caso, indica-me que a análise foi feita e um está a implementar algo que é no contexto de um comportamento específico.

de modo a responder à pergunta, eu acredito que a sua no Design .

Eu acho que a partir de uma arquitetura POV BDD seria de cerca de design. Eu preciso criar um aplicativo que pode fazer algo, que serão posteriormente utilizados em testes de aceitação. Assim, desde o design de alto nível que eu quero ter certeza que eu estou projetando para os vários requisitos de comportamento, de modo que eu não estou overdesigning, e duplicação limite.

Ela ajuda com a garantia de que não pode precisar de redesenhar como o usuário tem tem mais tempo para pensar sobre o que eles realmente querem ver, como o aplicativo irá executar.

BDD (ou TDD para que o assunto) não é Sobre nada. É uma técnica (no caso do BDD, mais de uma abordagem) que a análise suportes e projeto (bem como que traquinas pequeno passo de implementação). É frequente ouvir a frase "vermelho, verde, refatorar" associado com TDD, e assim ele se aplica ao BDD: criar o teste e ver que ele falhar, fazer o teste passar, atualizando a base de código, em seguida, refazer o sistema em uma forma melhorada enquanto a preservar os testes de passagem.

Assim BDD suporta a análise quando você cria os testes: você deve estar descrevendo o comportamento exigido na forma de provas ou exemplos. Ele suporta design quando você executar os testes: suas decisões de design são impedidos de comportamento inadvertidamente quebrando necessário, e pode ser guiado pela análise. Mas ele não faz nenhuma das análises ou projeto para você; você ainda tem que pensar. É uma maneira de certificar-se de que, durante as etapas de análise e projeto, você não se contradiz.

BDD e TDD ainda mais ter um nome muito azarado, porque ele realmente não cobrir o que eles são usados ??para.

  • Você não quer escrever testes para todos os casos canto possível durante o seu ciclo de dev que é algo que os testadores devem pegar.
  • Você não quer regressões e você quer ter certeza de que você está escrevendo o código que você precisa para limpar esta iteração assim que você quer um resultado repetível
  • Você não tem que fazer desenhos detalhados no início, mas em vez jota alguns requisitos para baixo que você quer ver terminado desta vez.

BDD / TDD qualquer um dos dois é bom se você não escrever uma linha de código antes de você ter um pouco de código que descreve o trecho de código que você está prestes a escrever. Fazendo isso você vai entrar em uma zona.
Enquanto não há nenhuma prova de que BDD / TDD irá melhorar a sua velocidade dev (provavelmente não) que irá reduzir significativamente o número de questões que você voltar depois de lançar o software que tem sido comprovada.

BDD é uma evolução do TDD onde TDD coloca a pressão sobre testar tudo BDD relaxa isso e diz que você só deve testar o comportamento público de suas classes porque os internos são susceptíveis de mudança.

BDD é tanto sobre o projeto, pois é sobre a análise, mas eu não acho que essa é a sua pergunta é? Você quer saber como traduzir as histórias em fluxogramas e diagramas de arquitetura?

Por causa do que eu começar a partir de sua pergunta é que você faz um grande projeto na frente e, em seguida, tentar código que fora. Isso não vai funcionar com BDD porque enquanto satisfazendo suas histórias que você deve escrever de forma fragmentada seu obter o seu código e arquitetura automaticamente. É chamado de design emergente por isso não há fase de planejamento enorme.

Em um SCRUM ou como o sistema sábio isso funciona muito bem porque o negócio prioriza suas histórias. Você começa a partir do topo e escrever um spec / exemplo para que, em seguida, tentar satisfazer o exemplo repetir este até que tenha concluído este item backlog e depois pegar o próximo e começar tudo de novo.

Espero que isso responde sua pergunta .. se não você vai precisar para esclarecer um pouco porque é um tema Braod. Em suma BDD é puramente uma ferramenta de desenvolvimento, não para arquitetos, BA de ... Testers pode usar as ferramentas de BDD, mas eu espero que isso não é a única ferramenta que eles estão usando para testar o aplicativo.

scroll top