Advertisement
Advertisement

More Related Content

Similar to TDD: A Essência do Mantra(20)

Advertisement

Recently uploaded(20)

Advertisement

TDD: A Essência do Mantra

  1. TTDDDD AA EEssssêênncciiaa ddoo MMaannttrraa Trilha Agile #TDC2014 Dionatan Moura about.me/dionatanmoura
  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. “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
  5. https://5com1001-0912.wikispaces.com/
  6. EEssttrraattééggiiaa PPoorrttffóólliioo PPrroodduuttoo RReelleeaassee IItteerraaççããoo DDiiáárriiaa http://alisina.org/blog/2013/10/31/taqiyah-is-onion-shaped/ TTDDDD
  7. Regras I. Escrever novo código somente se já existir um teste automatizado falhando II. Eliminar duplicação
  8. 3 Passos Escreva um teste para o próximo pedaço da funcionalidade. http://www.pro-tools-expert.com
  9. 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
  10. 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
  11. Mantra do TDD http://agileinaflash.blogspot.com.br/2009/02/red-green-refactor.html
  12. TDD.equals(TFD + Refatoração);
  13. TDD.equals(TFD + Refatoração); TFD Test First Development (code)
  14. 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
  15. Refatoração no TDD Comportamento Observável == Testes
  16. xUnit para TDD
  17. “O objetivo do TDD é escrever clean code que funciona.” Ron Jeffries https://twitter.com/RonJeffries
  18. Clean Code http://programmer.97things.oreilly.com/wiki/index.php/Uncle_Bob
  19. TFD previne defeitos!
  20. Refatoração previne defeitos!
  21. TDD previne defeitos!
  22. Mas como escrever código para rodar o teste, e com uma refatoração por vez?
  23. Baby Steps http://rusbase.com/news/author/williamlearn2ru/learn2-baby-steps/
  24. Mas cuidado! https://www.mulberrybush.co.uk/
  25. Lembre-se.
  26. http://agileinaflash.blogspot.com.br/2009/02/red-green-refactor.html
  27. Patterns para TDD
  28. Patterns para TDD Test Como testar software? Escreva um teste automatizado.
  29. Patterns para TDD Isolated Test Como os testes devem afetar uns aos outros? De modo algum.
  30. Patterns para TDD Test List O que testar? Comece uma lista com os testes que você sabe.
  31. Patterns para TDD Test First Quando escrever os testes? Antes de escrever o código (a ser testado).
  32. Patterns para TDD Assert First Quando escrever os asserts? Tente por primeiro.
  33. Patterns para TDD Test Data Quais dados usar para os testes? Dados que facilitam a leitura dos testes e a continuidade.
  34. Patterns para TDD Evident Data Como representar o objetivo dos dados? Com um relacionamento evidente entre resultado esperado e resultado real
  35. Red Bar Patterns
  36. Red Bar Patterns One Step Test Qual teste pegar da lista? O que vai te ensinar algo e que se tem certeza de implementar.
  37. Red Bar Patterns Starter Test Com qual caso de teste começar? Comece por uma variante da operação que faz nada.
  38. Red Bar Patterns Learning Test Quando escrever testes para software externo? Antes da primeira vez de utilizar uma nova funcionalidade externa.
  39. Red Bar Patterns Another Test Como manter uma discussão técnica fora do tópico? Adicione na lista e volte ao tópico original.
  40. Red Bar Patterns Regression Test O que fazer com um defeito relatado? Escreva o melhor teste que falhe.
  41. Red Bar Patterns Break O que fazer quando se está cansado ou travado? Faça uma pausa.
  42. Red Bar Patterns Do Over O que fazer quando se está perdido? Jogue fora o código e recomece.
  43. Red Bar Patterns Cheap Desk, Nice Chair Qual configuração física para TDD? Tenha uma cadeira muito boa, economizando no resto da mobília.
  44. Testing Patterns
  45. Testing Patterns Mock Object Como testar um objeto com recursos caros ou complicados? Crie uma versão fake com respostas constantes.
  46. Testing Patterns Broken Test Como deixar uma sessão sozinha de programação? Deixe o último teste quebrado.
  47. Testing Patterns Clean Check-in Como deixar uma sessão em time de programação? Deixe todos os testes rodando.
  48. Green Bar Patterns
  49. Green Bar Patterns Fake It Qual será a primeira implementação do teste? Retorne uma constante, e depois refatore em variáveis.
  50. Green Bar Patterns Triangulate Como fazer a maior abstração conservativa com testes? Abstraia apenas quando houver 2+ testes. (Similar à indução matemática)
  51. Green Bar Patterns Obvious Implementation Como implementar operações simples? Apenas implemente-as.
  52. Green Bar Patterns One to Many Como implementar uma operação de coleção de objetos? Implemente inicialmente sem coleções.
  53. Design Patterns bases para TDD
  54. Design Patterns bases
  55. E para não esquecer.
  56. http://agileinaflash.blogspot.com.br/2009/02/red-green-refactor.html
  57. Teste é o foco do TDD?
  58. “The focus of TDD is design. Test is a (nice) side effect.” Marco Trincardi
  59. TDD usa apenas Unit Testing?
  60. “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
  61. Mas e o ATDD? http://greatmiddleway.wordpress.com
  62. <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>
  63. ATDD TDD
  64. Ah! E o BDD? http://greatmiddleway.wordpress.com
  65. BDD é um processo de dev de SW http://blog.bughuntress.com/
  66. TDD é sobre design das funcionalidades ATDD é sobre validação das funcionalidades BDD é sobre comunicação das funcionalidades
  67. Agile Testing http://lisacrispin.com
  68. JUnit Test Infected: Programmers Love Writing Tests http://junit.sourceforge.net/doc/testinfected/testing.htm
  69. Como aprender na prática TDD?
  70. DDoojjooss http://en.wikipedia.org/wiki/Dojo
  71. 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
  72. Coding Dojos ● Infra – Local com cadeiras suficientes – Um computador ao menos – Projetor
  73. Coding Dojos ● Diversos estilos – Prepared Kata – Randori Kata – Kake Kata
  74. 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.
  75. 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
  76. Coding Dojos ● Kake Kata – Nível mais avançado – Diversos pares simultâneos ● Randori Katas em paralelo – Alta diversidade – Alto nível de aprendizado
  77. Por que Codingo Dojos com TDD?
  78. “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
  79. RSJUG Roman Numerals
  80. RSJUG TroLolo (FizzBuzz)
  81. RSJUG Construindo uma DSL com Java e ANTLR
  82. RSJUG Testando aplicações Java Web fora do container
  83. RRSSJJUUGG TTeesstteess ddeennttrroo ddoo ccoonnttaaiinneerr JJaavvaa ccoomm AArrqquuiilllliiaann
  84. UUFFRRGGSS CCiiêênncciiaa ddaa CCoommppuuttaaççããoo NNúúmmeerrooss RRoommaannooss
  85. UUFFRRGGSS CCiiêênncciiaa ddaa CCoommppuuttaaççããoo NNúúmmeerrooss RRoommaannooss
  86. UUFFRRGGSS CCiiêênncciiaa ddaa CCoommppuuttaaççããoo NNúúmmeerrooss RRoommaannooss Linha 1 Linha 2 Linha 3 Linha 4 12 10 8 6 4 2 0 Coluna 1 Coluna 2 Coluna 3
  87. Mas como começar já amanhã?
  88. http://www.cakeeventsblog.com
  89. Implicações Sociais ✔ Menos surpresas desagradáveis ✔ QA proativo ✔ Maior colaboração entre o time ✔ Entrega contínua
  90. E não esqueça:
  91. http://blog.gravypower.net/
  92. http://agileinaflash.blogspot.com.br/2009/02/red-green-refactor.html
  93. Obrigado! Obrigado! Obrigado!
Advertisement