Sou um pouco defensor da metodologia Behavior Driven Development (também conhecida como BDD). Aplico o BDD há alguns anos e adotei o StoryQ como minha estrutura de escolha ao desenvolver aplicativos DotNet. Embora eu tenha testado a unidade por muitos anos e tenha adotado anteriormente uma abordagem de teste primeiro, descobri que aproveito muito mais o uso de uma estrutura BDD, porque meus testes capturam a intenção dos requisitos de maneira relativamente limpar o inglês dentro do meu código e porque meus testes podem executar várias asserções sem terminar o teste no meio - o que significa que posso ver quais asserções específicas passam / falham rapidamente sem depurar para prová-lo.
Essa foi realmente a ponta do iceberg para mim, pois também notei que sou capaz de depurar os códigos de teste e de implementação de uma maneira mais direcionada, com o resultado de que minha produtividade aumentou significativamente e que posso determine facilmente onde ocorre uma falha se ocorrer um problema para chegar até a construção da integração devido à saída que entra nos logs de construção. Além disso, a API do StoryQ possui uma adorável sintaxe fluente, fácil de aprender e que pode ser aplicada de diversas maneiras, sem necessidade de dependências externas para usá-la.
Portanto, com todos esses benefícios, você acha fácil introduzir o conceito no restante da equipe. Infelizmente, os outros membros da equipe estão relutantes em olhar para o StoryQ para avaliá-lo adequadamente (sem falar na idéia de aplicar o BDD), e se convenceram a tentar remover vários elementos do StoryQ da nossa estrutura de teste principal, até apesar de originalmente oferecerem suporte ao uso do StoryQ, e mesmo que o código que desejam remover não tenha impacto em nenhuma outra parte do nosso sistema de teste. Fazer isso acabaria aumentando significativamente minha carga de trabalho em geral e contraria a realidade, pois estou convencido, por meio da experiência prática, de que é a melhor maneira de trabalhar em um primeiro teste em nosso ambiente de trabalho específico e só pode levar a maiores melhorias na qualidade do nosso software, dado que eu Foi mais fácil manter o teste primeiro usando o BDD. Para esclarecer ainda mais, a maioria dos testes de unidade que tendemos a ser bastante frágeis e difíceis de manter, uma retração de anos de testes mal aplicados, nos quais uma relutância em seguir um processo orientado a testes fez com que os desenvolvedores voltassem aos velhos hábitos e faça todos os testes no final do projeto (essas mesmas pessoas afirmam ser ágeis!).
Portanto, a questão realmente se resume ao seguinte:
- Que argumentos eu posso usar para realmente esclarecer que seria melhor para essa equipe usar o StoryQ ou, pelo menos, adotar a metodologia BDD?
- Você pode me indicar alguma evidência anedótica que eu possa usar para apoiar meu argumento de adotar o BDD como nosso método padrão de escolha?
- Que contra-argumentos você acha que poderia sugerir que meu desejo de incentivar a equipe a adotar o BDD possa estar errado? Sim, estou feliz por provar que estou errado, desde que o argumento seja sólido.
NOTA : Não estou defendendo que reescrevamos nossos testes na íntegra, mas simplesmente comece a trabalhar de maneira diferente para todos os trabalhos futuros de teste e, de preferência, da maneira como envolvemos nossos clientes.
E para aqueles que desejam aprender mais sobre o BDD, os seguintes links podem ser úteis:
- http://dannorth.net/introducing-bdd/
- http://en.wikipedia.org/wiki/Behaviour_driven_development
- http://behaviour-driven.org/Introduction
Para os interessados em mais detalhes, somos uma pequena equipe de 4 trabalhando em cerca de 5 grandes projetos. O "teste piloto" para BDD durou cerca de 2 meses inicialmente, com outro período de aproximadamente 4 meses a seguir. A equipe aceitou que eu continuasse trabalhando dessa maneira e fizesse seus próprios testes. Estou no BDD há cerca de 2 anos desde que o julgamento terminou, enquanto os outros se tornaram muito bons em evitar o problema. Em vez de forçar um "confronto" sobre o assunto, estou procurando maneiras de persuadir gentilmente a equipe a se livrar de seus interesses coletivos e reservar um tempo para fazer a sua parte.