XP Checklist #2: Desenvolvimento Orientado a Testes
Publicado por Ivan Sanchez em Quarta-feira, Maio 9, 2007
Visão geral do Desenvolvimento Orientado a Testes:
Para extrair o máximo dos testes durante o desenvolvimento, devemos pensar neles como uma ferramenta de comunicação e aprendizado contínuo. Portanto seu foco deve ir além da verificação e pautar o desenvolvimento como um todo.
Objetivo:
Ajudar o desenvolvimento e aumentar a confiança para fazer qualquer modificação no sistema.
Participantes:
- Cliente
- Equipe de Desenvolvimento
Pontos principais:
- Todos os testes devem ser automatizados.
- Os testes são escritos antes mesmo da funcionalidade existir
- Uma User Story está pronta quando todos os Testes de Aceitação passam e não se consegue imaginar mais testes para ela
- O desenvolvimento é feito em pequenos incrementos (“baby steps”)
- O projeto da implementação deve favorecer a confecção de testes
- O Cliente escreve testes de aceitação com ajuda da Equipe de Desenvolvimento. Se isso não é possível é interessante que ele ao menos valide o testes que a Equipe de Desenvolvimento criar
- A depuração de código deve ser substituída por testes sempre que possível
- Busca-se que todos os testes passem sempre. Se algo não está funcionando isto deve ser do conhecimento do Cliente.
- Um novo teste deve ser escrito quando for preciso reproduzir um erro ou esclarecer melhor uma funcionalidade.
Resultados esperados:
- O cliente terá maior confiança que as User Stories que ele definiu estão implementadas
- A equipe terá maior confiança para fazer as mudanças que o cliente pedirá no futuro
- Existirá sempre uma especificação atualizada, representada pelos testes
- O design do software será favorecido pela simplicidade
- A ocorrência de erros diminuirá
Atualização:
(11/05/2007) Novos itens foram adicionados nos Resultados Esperados (agradecimentos ao ViniciusAC)
Vinicius AC disse
Sem querer desmerecer o seu resumo dos resultados mais facilmente visíveis, nesse contexto, tá massa.
Eu acrescentaria, entre os resultados esperados: melhor design; documentação boa e sempre sincronizada, representada nos próprios testes; maior produtividade e menos custos, por causa da diminuição drástica do tempo gasto com depuração e das vantagens de se trabalhar num código mais claro.
eXtreme Programming Checklists « Coding Dojo Floripa disse
[...] Desenvolvimento Orientado a Testes [...]
Ivan Sanchez disse
Vinicius,
Antes de mais nada, obrigado pelo feedback!
Como eu digo no tópico de apresentação das checklists, o objetivo deste resumo é fornecer informação relevante para o dia-a-dia de quem está implementando as práticas de XP. Então, com relação aos itens que você sugeriu:
Melhor Design
Perfeito
Documentação boa e sempre sincronizada
Correto, mas com uma ressalva. É correto dizer que TDD fornece uma especificação do sistema que estará sempre sincronizada com o código, porém vejo como arriscado considerar isso uma “boa” documentação. Por documentação pode-se entender até artefatos que são de uso dos usuários, e não cabe a TDD gerá-los.
Maior produtividade e menos custos
Este é o resultado esperado de todas as práticas de XP, assim como o de qualquer mudança que se faça na maneira de desenvolver software. Por isso preferi me prender apenas aos resultados específicos desta prática.