testes e refatoração
TRANSCRIPT
![Page 1: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/1.jpg)
Testes e RefatoraçãoTestes e Refatoração
JevôPaulo César M. Jeveauxwww.jeveaux.comj
refatore
Escreva códigoEscreva umTeste
Escreva códigoque passeno teste
![Page 2: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/2.jpg)
J ôJevô
• Analista Senior de WebMedia na globo.com
• Desenvolvedor Java há 7++ anos
• Administrador do PortalJava e ESJUG
• Palestrante‐Entusiasta‐Evangelista Java• Palestrante‐Entusiasta‐Evangelista Java
h l l• Entusiasta Python, Rails e Agile
![Page 3: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/3.jpg)
A dAgenda
• Introdução
• Bug
• Você confia no que faz? Afinal é um teste?• Você confia no que faz? Afinal é um teste?
• Cobertura de testes
• Tipos de testes
• Desenvolvendo orientado a testes
F t té i d t t• Ferramentas e técnicas de testes
• RefatoraçãoRefatoração
![Page 4: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/4.jpg)
IntroduçãoIntrodução
Desen ol imento de soft areDesenvolvimento de software
![Page 5: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/5.jpg)
![Page 6: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/6.jpg)
![Page 7: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/7.jpg)
IntroduçãoIntrodução
Desen ol imento de soft areDesenvolvimento de software
Falhas de SoftwareFalhas de Software
![Page 8: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/8.jpg)
F lh d S ftFalhas de Software
• Mais de 1/3 das falhaspoderiam ser evitadaspoderiam ser evitadascom testes; [1]
• Cerca de 50% das falhasCerca de 50% das falhassó são descobertas emprodução;produção; [1]
![Page 9: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/9.jpg)
IntroduçãoIntrodução
Desen ol imento de soft areDesenvolvimento de software
Falhas de SoftwareFalhas de Software
Falhas custam caro
![Page 10: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/10.jpg)
F lh t $$$Falhas custam $$$
• Segundo uma pesquisa do Departamento de C é i d EUA bli d 2002 f lhComércio dos EUA, publicada em 2002, falhas de software são tão comuns e tão danosas que se estima que causem um prejuízo anual de mais de 60 bilhões de dólares para ade mais de 60 bilhões de dólares para a economia americana. [1], [2]
![Page 11: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/11.jpg)
IntroduçãoIntrodução
Desen ol imento de soft areDesenvolvimento de software
Falhas de SoftwareFalhas de Software
Falhas custam caro
Testes não evitam falhas
![Page 12: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/12.jpg)
IntroduçãoIntrodução
Desen ol imento de soft areDesenvolvimento de softwareFalhas de SoftwareFalhas custam caro
Testes não evitam falhasTestes identificam as falhas antes delasTestes identificam as falhas antes delas
acontecerem
![Page 13: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/13.jpg)
![Page 14: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/14.jpg)
BugBug
O que é?
![Page 15: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/15.jpg)
![Page 16: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/16.jpg)
![Page 17: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/17.jpg)
BBugs
São aquelas baratinhas queSão aquelas baratinhas que
fi ál l d ificavam nas válvulas do Eniac
![Page 18: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/18.jpg)
BBugs
Podem ser os insetos no vidro doPodem ser os insetos no vidro do
carro
![Page 19: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/19.jpg)
BBugs
E também podem ser milhões deE também podem ser milhões de
bloutros problemas que somente
os usuários irão encontrar
![Page 20: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/20.jpg)
BBugs
E também podem ser milhões deE também podem ser milhões de
bloutros problemas que somente
os usuários irão encontrar
![Page 21: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/21.jpg)
BBugs
Por mais perfeita que seja suaPor mais perfeita que seja sua
h i b ãengenharia, os bugs estarão
presentes e afetarão diretamente
o usuárioo usuário
![Page 22: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/22.jpg)
BBugs
Metodologias ágeis, como o XP, defendem g g , ,
que, ao encontrarmos um problema,que, ao encontrarmos um problema,
antes de desenvolver uma soluçãoantes de desenvolver uma solução
devemos criar um teste que detecte taldevemos criar um teste que detecte tal
blproblema.
![Page 23: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/23.jpg)
Você confia no que faz?Você confia no que faz?
![Page 24: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/24.jpg)
![Page 25: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/25.jpg)
G t ê fGaranta o que você faz
• Cliente:– Isso aqui não está funcionando!
• Programador:–Mas como!? Na minha máquina estava funcionando até ontemfuncionando até ontem.
![Page 26: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/26.jpg)
G t ê fGaranta o que você faz
Depois eu escrevo o pplano de testes…
![Page 27: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/27.jpg)
G t ê fGaranta o que você faz
Depois eu escrevo o pplano de testes…
Vamos deixar os testes pra próxima fase…
![Page 28: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/28.jpg)
G t ê fGaranta o que você faz
Depois eu escrevo o pplano de testes…
Vamos deixar os testes pra próxima fase…
Na minha máquina estáNa minha máquina estáfuncionando…
![Page 29: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/29.jpg)
G t ê fGaranta o que você fazD iDepois eu escrevo o plano de testesplano de testes…
Vamos deixar os testes pra próxima fase…
Precisamos entregar o produto semana que vem!!!
Na minha máquina estáfuncionando…
![Page 30: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/30.jpg)
G t t b lh j fi i lGaranta o seu trabalho seja profissional
Errado! (como se safar) Realidade!
• Num mundo capitalizado
não há tempo para testes
• O cliente não quer saber se
X virou Y Ele quer que onão há tempo para testes
• O cliente não quer saber
X virou Y. Ele quer que o
problema não aconteça e se q
como é feito, ele quer que acontecer que seja corrigido
funcione rapidamente
• Não se consegue qualidade• Não se consegue qualidade
e confiabilidade sem testes[4]
![Page 31: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/31.jpg)
O que são testes?O que são testes?
![Page 32: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/32.jpg)
O ã t t ?O que são testes?
Um teste é uma verificação feita sobre um
código ou fragmento de código para garantir
que uma determinada entrada produza,
sempre, uma saída esperada
![Page 33: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/33.jpg)
O ã t t ?O que são testes?
• São pontuaisSão pontuais
• São previsíveis
• São finitosSão finitos
• São (ou deveriam ser) simples
![Page 34: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/34.jpg)
O que são testes?O que são testes?
White BoWhite Box
![Page 35: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/35.jpg)
Whit BWhite Box
• Testes de unidade de código;g ;
• Testam parte da solução;• Testam parte da solução;
• São escritos e mantidos pelo
programador e devem estar sempre
atualizados;
![Page 36: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/36.jpg)
O que são testes?O que são testes?
White BoWhite Box
Black BoxBlack Box
![Page 37: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/37.jpg)
Bl k BBlack Box
• Testes funcionais e de aceitação;Testes funcionais e de aceitação;
d i ã• Testes de integração;
• Testam a solução completa;
![Page 38: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/38.jpg)
C b t d t tCobertura dos testes
Trecho alterado Resultado esperado com alteração: OKcom alteração: OK
Reflexo da alteraçãoReflexo da alteraçãoErro #1
Reflexo da alteraçãoErro #2
Reflexo da alteraçãoBUG
Reflexo da alteraçãoI dInesperado
![Page 39: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/39.jpg)
C b t d t tCobertura dos testes
Sem cobertura Com cobertura
• Novo release = códigos sem testes;
• Não há segurança deNão há segurança de que as alterações não irão impactar em outrosirão impactar em outros pontos da aplicação;
• Problemas muitos• Problemas, muitos problemas;
![Page 40: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/40.jpg)
C b t d t tCobertura dos testes
• Dificilmente consegue‐se 100% de cobertura
de testes, contete‐se com 99%
• Quanto maior a cobertura dos testes na
aplicação maior a confiabilidade nas
alterações e novos recursos
![Page 41: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/41.jpg)
C b t d t tCobertura dos testes
• Aplicações cobertas por bons testes i ipropiciam:
Facilidade de manutenção;– Facilidade de manutenção;
– Facilidade para inclusão de novos membros no– Facilidade para inclusão de novos membros no
time de desenvolvimento;;
– Redução de problemas e custos nas manutenções;ç p ç
– Telefone silencioso nas madrugadas!
![Page 42: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/42.jpg)
T t ã á iTestes são necessários
• Você precisa verificar o código, sempre
• Você precisa garantir que os requisitos estão p g q q
implementados (e corretos)p ( )
• Você precisa ter segurança para realizarVocê precisa ter segurança para realizar
alteraçõesç
![Page 43: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/43.jpg)
T t ã á iTestes são necessários
• Você precisa testar rápido para entregar rápido
• Você precisa ser criativo para explorar o máximo
possível com seus testes, não use testes mentirosos
• Você aumenta e garante a qualidade da sua solução
com testes
![Page 44: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/44.jpg)
Tipos de TestesTipos de Testes
Unitário
![Page 45: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/45.jpg)
T t U itá iTestes Unitários
• Testam uma parte isolada da solução, um
componente ou trecho de código
• Todo o resto é simulado através de Mock
Objets;
• É fundamental para TDDp
![Page 46: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/46.jpg)
T t U itá iTestes Unitários
[wikipedia]
É a fase do processo de teste em que se testam as menores unidades de software desenvolvidas
O universo alvo desse tipo de teste são os métodos dos objetosO universo alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo.
[/wikipedia]
![Page 47: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/47.jpg)
T t U itá iTestes Unitários
• Ferramentas:
– JUnit/NUnit e TestNG: para testes unitários
– JMock: para criação de objetos e cenários falsos
![Page 48: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/48.jpg)
Tipos de TestesTipos de Testes
Unitário
Aceitação
![Page 49: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/49.jpg)
T t d it ãTestes de aceitação
• Testam uma história, funcionalidade ou caso
de uso
• Envolvem vários componentes do sistema ou p
até o sistema como um todo
• Ex. ferramentas: JUnit, Selenium, Fit/FitNesse, , /
![Page 50: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/50.jpg)
Tipos de TestesTipos de Testes
Unitário
Aceitação
IntegraçãoIntegração
![Page 51: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/51.jpg)
T t d i t ãTestes de integração
• Testam a integração entre componentes
• Envolvem dois ou mais componentesp
• Ex ferramentas: JUnit DBUnit HSQLDBEx. ferramentas: JUnit, DBUnit, HSQLDB
• Normalmente não é muito utilizado em TDD• Normalmente não é muito utilizado em TDD
![Page 52: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/52.jpg)
Test‐Driven DevelopmentTest Driven Development
![Page 53: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/53.jpg)
TDDTDD
refatore
E Escreva códigoEscreva umTeste
Escreva códigoque passeno teste
![Page 54: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/54.jpg)
R F d t iRegras Fundamentais
• Escreva o teste da implementação ANTES de
escrevê‐la
• Escreva somente código suficiente para o g p
teste passar e nada além disso
• Escreva testes pequenosp q
• Escreva testes muito rápidosEscreva testes muito rápidos[10]
![Page 55: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/55.jpg)
FerramentasFerramentas
JUnit
![Page 56: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/56.jpg)
JU itJUnit
• É um framework altamente eficaz e l t tili d i ã ã dlargamente utilizado na criação e execução de testes unitários de códigosg
http://junit.org
![Page 57: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/57.jpg)
U t t JU itUm teste com JUnit
public class HelloWorldTest {@Test@ estpublic void testMultiplicacao() {
//Testando se 2*2 = 4assertEquals (“Mult”, 4, 2*2);assertEquals ( Mult , 4, 2 2);
}}
![Page 58: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/58.jpg)
FerramentasFerramentas
JUnit
TestNG
![Page 59: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/59.jpg)
T tNGTestNG
• Uma alternativa ao JUnit para testes unitários
• Foi o primeiro a utilizar anotações para p ç p
definição dos TestCasesç
![Page 60: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/60.jpg)
T tNGTestNG
![Page 61: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/61.jpg)
U t t T tNGUm teste com TestNG
import org.testng.annotations.*;
public class SimpleTest {@BeforeClass@BeforeClasspublic void setUp() {}}@Test(groups = { "calculadora" })
bli id T t() {public void somaTest() {System.out.println("soma");
}}}
![Page 62: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/62.jpg)
FerramentasFerramentas
JUnitTestNGTestNGJMock
![Page 63: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/63.jpg)
JM kJMock
• Utilizado para criar ou simular falsos
objetos/cenários
• Alternativas:
– EasyMock
–MockObjetc
![Page 64: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/64.jpg)
S l iSelenium
• Ferramenta para realização de testes
integrados e de aceitação
• Usado no browser, grava todos os passos , g p
executados na aplicação diretamente no
browser e os executa de forma automatizada
no browser
![Page 65: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/65.jpg)
S l iSelenium
![Page 66: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/66.jpg)
ClClover
• Ferramenta para análise de cobertura dos
testes existem na aplicação
• Integrado a várias IDEs ‐ Eclipse ;‐)g p ; )
• Existem diversas opções semelhantes:Existem diversas opções semelhantes:
JCoverage, Cobertura, etcg , ,
![Page 67: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/67.jpg)
![Page 68: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/68.jpg)
ClClover
![Page 69: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/69.jpg)
RefatoraçãoRefatoração
![Page 70: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/70.jpg)
![Page 71: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/71.jpg)
C d llCodesmell
• Codesmell ou code smell é um dos conceitos
criados pelo XP
• Um code smell é uma indicação superficial de ç p
que algo pode estar errado. Aquela mesma
sensação quando você abre sua geladeira e
sente um cheiro estranho
![Page 72: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/72.jpg)
O que é refatorar?O que é refatorar?
![Page 73: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/73.jpg)
![Page 74: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/74.jpg)
R f t ãRefatoração
• Sempre existiu, mas não tinha um nome
• Estava implícitop
• A novidade foi criar um vocabulário comum eA novidade foi criar um vocabulário comum e
catalogá‐loscatalogá los
• Assim podemos utilizar mais sistematicamenteAssim podemos utilizar mais sistematicamente
e ensinar uns aos outrose ensinar uns aos outros
![Page 75: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/75.jpg)
Q d f t ?Quando refatorar?
• Sempre há duas possibilidades:
–Melhorar o código existente.
– Jogar fora e começar do 0.
• É sua responsabilidade avaliar a situação e
decidir quando é a hora de optar por um ou
por outro.
![Page 76: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/76.jpg)
R f t ãRefatoração
• Os principais objetivos são:
– Tornar o código mais claro, limpo, simples e
elegante;
– Permitir que componentes mais simples ou
expressões mais eficientes sejam usadas.
![Page 77: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/77.jpg)
R f t ã B fí iRefatoração: Benefícios
• Redução de código duplicado
• Aumentar a simplicidadep
• Facilitar a leituraFacilitar a leitura
• Melhorar a performance e eficência• Melhorar a performance e eficência
• Manutenibilidade• Manutenibilidade
![Page 78: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/78.jpg)
R f t X RRefatorar X Reescrever
Refatorar Reescrever
• Não altera afuncionalidade ou
• Altera afuncionalidade dofuncionalidade ou
conteúdo doi t / l ã
funcionalidade dosistema/solução
sistema/solução
![Page 79: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/79.jpg)
Garanta‐se nos testesGaranta se nos testes
Altere o código sem medo
![Page 80: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/80.jpg)
G t t tGaranta‐se nos testes
• Antes de começar a refatorar verifique se você
tem um conjunto de testes para garantir a
funcionalidade do código a ser refatorado
• Refatorações podem adicionar erros
• Os testes vão ajudá‐lo a detectar erros se eles j
forem criados
![Page 81: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/81.jpg)
C l õConclusões
• Testes colaboram para o aumento da lid d d i tqualidade dos sistemas;
• Desenvolvedores ficam mais corajosos eDesenvolvedores ficam mais corajosos e confiantes ao programar;
• O software cresce de forma ordenada e com qualidade de design;qualidade de design;
• O software se adapta com mais facilidade a mudanças;
![Page 82: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/82.jpg)
C l õConclusões
• Demora mais?– No início é necessário escrever muitos testes;;– Depois da inércia a suite de testes está pronta e escrevem‐se menos testes;
– Certeza de que a implementação está funcionando;– Maioria dos bugs encontrados em tempo de d l i tdesenvolvimento;
– Bugs de produção são encontrados e corrigidos com muito mais velocidade;mais velocidade;
• Então no fim das contas demora‐se muito menos tempo e com muito mais qualidade;tempo e com muito mais qualidade;
[10]
![Page 83: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/83.jpg)
Dúvidas?Dúvidas?
![Page 84: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/84.jpg)
R f ê iReferências• [1] ‐ NIST ‐ http://www.nist.gov/public_affairs/releases/n02‐10.htm• [2] ‐ ImproveIt ‐ http://www.improveit.com.br/xp/praticas/tdd• [3] ‐ Caelum ‐ http://blog.caelum.com.br/2006/09/08/voce‐acredita‐no‐seu‐codigo/[ ] p // g / / / / g /• [4] – Fragmental ‐ Shoes ‐ http://blog.fragmental.com.br/2007/10/31/programadores‐
profissionais‐escrevem‐testes‐ponto‐final/• [5] – Marcos Pereira – http://marcospereira.wordpress.com/2007/11/27/desenvolvedores‐
d i t todeiam‐testar • [6] – Wikipedia – http://en.wikipedia.org/wiki/Test‐driven_development• [7] ‐ TDD ‐ http://www.testdriven.com• [8] Brod http://www brod com br• [8] ‐ Brod ‐ http://www.brod.com.br • [9] – java.net ‐ http://wiki.java.net/bin/view/People/SmellsToRefactorings • [10] – Palestra Desenvolvimento Guiado por Testes (TDD) – Guilherme Chapiewski
• Algumas ilustações foram retiradas do site da ImproveIt.
![Page 85: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/85.jpg)
refatore
E Escreva códigoEscreva umTeste
Escreva códigoque passeno teste
![Page 86: Testes e Refatoração](https://reader031.vdocuments.site/reader031/viewer/2022020105/5566675dd8b42aa21e8b50ed/html5/thumbnails/86.jpg)
D íd C íti S tõDuvídas, Críticas e Sugestões
• Para contato:–www.jeveaux.com
t lj–www.portaljava.com–[email protected]@jeveaux.com
Obrigado a todos!Obrigado a todos!27/09/2008