Descrição da palestra no TDC 2014 Poa:
http://www.thedevelopersconference.com.br/tdc/2014/portoalegre/trilha-agile
TDD (Test-driven development) é uma técnica para construção de software que guia o desenvolvimento de software através da escrita de testes. Muito se falou nesse ano, mas pouco se aprendeu. Mas qual é essência real do TDD? A resposta é simples, a essência está em seu mantra: Red / Green / Refactor. O TDD será destilado, explicando seus detalhes além do seu mantra.
Será mostrado o TDD no eXtreme Programming (XP), a importância da refatoração para o TDD, frameworks xUnit, como solucionar problemas complexos com Baby Steps, o valor do Clean Code, e como isso é importante para Coding Dojos. Patterns do TDD serão apresentados, dando a base para a essência do TDD. As relações do TDD com Agile Testing, ATDD e BDD também serão discutidas.
2. Sobre o Palestrante.
● Trabalho como coach ágil nas equipes de desenvolvimento de
software na PROCERGS, buscando a melhor entrega de valor ao
cidadão gaúcho. Mestre em Engenharia de Software na UFRGS,
graduado em Ciência da Computação na UFRGS. Sou generalista
especialista. Trabalho com Java desde 2006, sou coordenador do
RSJUG e da trilha Java do TDC Porto Alegre. Ministro palestras
e facilito Coding Dojos em eventos de métodos ágeis, tais como
do TDC, GUMA-RS e GUTS-RS. Possuo as certificações SAFe
Agilist SA, Scrum Master PSM I, Product Owner CSPO, Certified
Scrum Developer CSD, Java Programmer OCPJP, testes de
software CTFL, gestão de TI ITILv3 e melhoria de processos
de software MPS-BR.
3. Introdução ao TDD
➔ Extreme Programming
➔ TDD
➔ Refatoração
➔ xUnit
➔ Clean Code
➔ Baby Steps
➔ Patterns para TDD
➔ Red Bar
➔ Test
➔ Green Bar
➔ Design Patterns
➔ ATDD
➔ BDD
➔ Agile Testing
➔ Coding Dojos
➔ Fechamento
4.
5. “Test-Driven Development (TDD) é uma técnica para
contrução de software que guia o desenvolvimento de
software através da escrita de testes.
http://commons.wikimedia.org/wiki/File:Creador_de_la_metodologia_xp.jpg
Kent Beck
9. Regras
I. Escrever novo código somente se
já existir um teste automatizado
falhando
II. Eliminar duplicação
10. 3 Passos
Escreva um teste
para o próximo
pedaço da
funcionalidade.
http://www.pro-tools-expert.com
11. 3 Passos
Escreva um teste
para o próximo
pedaço da
funcionalidade.
Escreva código
funcional até o
teste passar.
Refatore o código
novo (e antigo)
até ficar bem
estruturado.
http://www.pro-tools-expert.com
12. 3 Passos
Escreva um teste
para o próximo
pedaço da
funcionalidade.
Escreva código
funcional até o
teste passar.
Refatore o código
novo (e antigo)
até ficar bem
estruturado.
http://www.pro-tools-expert.com
13. Mantra do TDD
http://agileinaflash.blogspot.com.br/2009/02/red-green-refactor.html
16. TDD.equals(TFD + Refatoração);
Refatoração
“Uma mudança feita na
estrutura interna do
software para deixá-lo
mais fácil de entender e
barato de modificar sem
mudar seu
comportamento
observável.”
Martin Fowler
http://martinfowler.com
52. Green Bar Patterns
Fake It
Qual será a primeira
implementação do teste?
Retorne uma constante, e depois refatore
em variáveis.
53. Green Bar Patterns
Triangulate
Como fazer a maior abstração
conservativa com testes?
Abstraia apenas quando houver 2+ testes.
(Similar à indução matemática)
54. Green Bar Patterns
Obvious Implementation
Como implementar operações
simples?
Apenas implemente-as.
55. Green Bar Patterns
One to Many
Como implementar uma operação
de coleção de objetos?
Implemente inicialmente sem coleções.
64. “O ato de escrever um
teste de unidade é mais
um ato de design do
que de verificação.”
Uncle Bob (Robert C. Martin)
http://www.techcn.com.cn
65. Mas e o ATDD?
http://greatmiddleway.wordpress.com
66. <Título>
Como um <papel de usuário>
Eu quero <objetivo>
Para que <razão>
ATDD
Acceptance Test-Driven
Development
Critério de Aceitação
Dado que <pré-condição>
Quando <ação>
Então <resultado>
78. Coding Dojos
● Ambiente de Aprendizado!
– Sem competição
– Colaborativo
– Ambiente divertido
– Todos níveis de conhecimento são
bem-vindos
– Segurança em tentar novas ideias
79. Coding Dojos
● Infra
– Local com cadeiras suficientes
– Um computador ao menos
– Projetor
80. Coding Dojos
● Diversos estilos
– Prepared Kata
– Randori Kata
– Kake Kata
81. Coding Dojos
● Prepared Kata
– O facilitador mostra como fazer do início,
com TDD e Baby Steps.
– Cada passo deve fazer sentido para
todos.
– As pessoas devem interromper somente se
não entenderem.
82. Coding Dojos
● Randori Kata
– O desafio é resolvido em pares (piloto e copiloto)
– Todos são convidados a ajudar
– Cada par tem um timebox (5-7 min)
● Baby Steps
● TDD
– Comentários e críticas somente no verde
– Silêncio no vermelho
● Ao final, piloto sai do par, copiloto vira piloto
e entra um novo copiloto
83. Coding Dojos
● Kake Kata
– Nível mais avançado
– Diversos pares simultâneos
● Randori Katas em paralelo
– Alta diversidade
– Alto nível de aprendizado
85. “Ensinar não é transferir
conhecimento, mas criar
as possibilidades para a
sua própria produção ou
a sua construção.”
Paulo Freire
http://aosmestresdaeducacao.blogspot.com.br