Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thiagoghisi/1395707 to your computer and use it in GitHub Desktop.
Save thiagoghisi/1395707 to your computer and use it in GitHub Desktop.
Mini-palestra ministrada no 1º UnisulTechDay, em 26/11/2011, com o título: Coding kata: Refatorando aplicações web legadas sem medo. Tópicos: Coding Dojo, Coding Kata, Aplicações web legadas, Refactoring, Testes de Unidade, BDD, Selenium, Testes de Aceit
Coding kata: Refatorando aplicações web legadas sem medo
(*) Quem sou eu?
- Thiago Ghisi (@thiagoghisi):
2003 - SENAI e o Poder da Programação em Pascal.
2004 - Robocod Java
2005 - Técnico em Informática com Habilitação em Redes de Computadores
2006 - Ciência da Computação (Unisul)
2006/1 - Técnico de Informática (Tractebel Energia/Consult System)
2007/1 - PUIC: Testes, CMMI e Extreme Programming
2007/2 - Sequencial Java (Unisul)
2007/3 - Techpeople
2008 - Testes Automatizados na prática. (testNG, MockObjects, DbUnit, Fit, Fitnesse, Selenium, JMeter)
2009/1 - SCJP 6.0
2009/2 - Ágiles 2009
2010/1 - Agile Brazil 2010
2010/2 - TCC: Shell para desenvolvimento de Sistemas Especialistas na Web. (0% de cobertura de Testes Automatizados)
2010/3 - MPS.BR Nível F (Techpeople)
2011/1 - CMMI ML2 (Techpeople)
2011/2 - Bacharel em Ciência da Computação (Unisul)
2011/3 - FISL 12
2011/4 - DojoTuba
2011/5 - Consultor MPS.BR
2011/6 - TDC Floripa
2011/7 - QCon SP
2011/8 - ForkInTuba
(*) Techpeople - Estamos contratando!
- curriculos@nexxera.com (Assunto: Techpeople - Estágio)
(*) Enquete para um melhor direcionamento da apresentação:
- Quem já ouviu falar em Coding Dojo?
- Quem já ouviu falar e sabe o que são Testes Automatizados?
- Quem já usou algum tipo de Teste Automatizado em alguma aplicação que desenvolveu profissionalmente?
- Quem FREQUENTEMENTE faz Testes Automatizados?
- Quem SEMPRE faz Testes Automatizados?
- Quem faz TDD do início ao fim?
(*) Coding Dojo:
- Randori(uma linguagem, várias pessoas)
* - Kata (uma linguagem, uma ou duas pessoas)
- Kake (várias linguagens, várias pessoas)
(*) Práticas de Engenharia - Estado da Arte:
- XP:
TDD
Refactoring
Simple Design
Pair Programming
- Clean Code
- BDD
- ATDD
(*) Aplicações Web - Estado da Arte:
- :P
- :(
(*) Como aplicar essas Práticas de Engenharia em Aplicações Web altamente acopladas?
- Testes de unidade? Não, não quero alterar meu fonte! (Alto Acoplamento)
- Mocks? (Hard Core!)
- Testes de integração? Não, não quero brincar!
- Testes de aceitação? Sim, eu não preciso alterar nada do fonte original! É simples até para uma criança de 10 anos.
(*) Solução Proposta para a Refatoração de Aplicações Legadas (Sem Testes):
- Uma espécie de ATDD para Refactoring ou Manutenção Evolutiva...
1. Planejar o que vai ser refatorado
2- Automatizar os Testes com o Selenium IDE com o comportamento atual da Tela
3- Refatorar a parte
4- Executar Testes e verificar:
se passou, volta para 3,
se não passou, rollback parcial nas alterações realizadas até passar novamente...
- ATDD?
Testes de Aceitação antes de fazer a Tela e consequentemente o código...
(*) Let's Go!
(*) Conclusões:
- Script do Selenium IDE é sustentável de manter?
Não! Use page objects! Mostrar exemplo!
- Script do Selenium IDE está próximo do negócio, está descritivo para um leigo em programação entender?
Não! Use BDD! Mostrar exemplo!
- Seja Profissional! Faça testes! Muitos testes!
(*) Muito obrigado!
- Contato:
E-mail: thiago.ghisi@gmail.com
Twitter: @thiagoghisi
GitHub: http://github.com/thiagoghisi/
Blog: http://thiagoghisi.com
Linkedin: http://br.linkedin.com/in/thiagoghisi
DojoTuba/ForkInTuba: http://groups.google.com/group/dojotuba
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment