O documento discute lições sobre manutenção de testes ao longo do tempo. Ele descreve problemas comuns que surgem quando as suites de testes crescem descontroladamente, como lentidão na execução e dificuldade em identificar quais testes falharam após pequenas alterações no código. O documento também fornece diretrizes para criar suites de testes rápidas, focadas e abrangentes.
2. Lições do Futuro:
O que eu queria saber há alguns anos atrás
sobre como manter uma suíte de testes
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
3. Eder Ignatowicz...
Software Craftsman @ Dextra
(Arquitetura, NoSQL, Devops, QA)
Doutorando na Unicamp
(Polyglot Persistence em Cidades Digitais)
Professor na Faccamp e Unisal
Editor líder no InfoQ Brasil
@ederign
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
4. Fábio Lima Santos
Software Craftsman @ Dextra
(Arquitetura, NoSQL, Devops, QA)
Doutorando na Unicamp
(Polyglot Persistence em Cidades Digitais)
Professor na Faccamp e Unisal
Editor líder no InfoQ Brasil
@ederign
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
5. Maior grupo financeiro de
câmbio do Brasil
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
15. Alta Taxa de Cobertura
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
16. Deploy 3x/Semana
Plataforma Bancária
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
17. Cliente Feliz
4 anos de projeto (~12 pessoas)
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
18. “Continuous Delivery”
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
19. Explosão na Quantidade
de Testes Funcionais
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
20. Lentidão na execução da
suíte de testes
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
21. Time Triste
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
22. Onde erramos?
Como saber se minha suíte de testes não está indo
para o buraco?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
23. Bugs em Produção
Seus testes não passam?
Você não tem testes?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
24. Bugs em Produção
Seus testes passam?
Você não está testando a
funcionalidade certa!
Você não está testando o
sistema correto
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
25. Teste quebra
Em produção funciona?
Você não está testando o
sistema certo!
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
26. Funcionalidade é alterada
Seu teste passa sem precisar de alteração?
Você não está testando a funcionalidade correta!
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
27. Você corrige um defeito
Seu teste passa a quebrar?
Você não está focando seus testes na funcionalidade
e sim no sistema
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
28. Você altera o sistema
Não tem feedback rápido dos testes?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
29. Você tem um problema arquitetural nos
seus testes!
Você não vai rodar a sua suíte!
(sob pressão)
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
30. Você faz uma pequena alteração
no sistema
É difícil identificar um teste que possa ser rodado
agora?
É difícil identificar qual teste foi afetado?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
31. Você não vai testar a funcionalidade e nem rodar a
suíte completa porque ela é lenta
Você vai implantar com a suíte quebrada
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
32. Pequena alteração, muitos testes
quebram?
Você vai demorar para
identificar o que quebrou
Você vai implantar em
produção com a sua suíte
quebrada
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
33. Mas quais são as características de
uma boa suíte de testes?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
34. Uma boa suíte de testes é qualquer
suíte de testes que não tenha os
problemas apresentados!
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
35. Mas e se eu tivesse uma máquina do
tempo?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
36. Não existe bala de prata
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
37. Mas o que talvez
(provavelmente)
funcione?
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
38. 3 F’s - Corey Haines
Fast
Ciclo TDD - < 1 min
Ciclo Integração - rápido o suficiente
Suíte Lenta == Builds Quebradas
Focused
Um Teste = Uma Razão pra Mudança
Feedback Rápido
Full
Cobrir o maior % possível do sistema
sexta-feira, 19 de outubro de 2012
39. Código de teste é tão importante
quanto código de produção
Testes bem escritos e em grupos pequenos no mesmo
contexto
Toda a equipe deve escrever a suíte de testes
sexta-feira, 19 de outubro de 2012
40. Consistente e Confiável
A sua suíte de testes deve conquistar a confiança da sua
equipe, do seu gerente e do cliente
sexta-feira, 19 de outubro de 2012
41. “Isolada”
Um teste não pode influenciar o resultado de outro
Feedback Rápido
sexta-feira, 19 de outubro de 2012
42. Duráveis
Mantém seu valor durante toda a vida do produto
sexta-feira, 19 de outubro de 2012
43. Documentação
Testes servem como documentação
(são a melhor documentação que
você vai ter)
Documentação viva, especificação
executável.
Testes devem informar a intenção de
um desenvolvedor
sexta-feira, 19 de outubro de 2012
44. Foque a cobertura nas
funcionalidades que mudam com
maior frequência
Faça testes para os bugs em
produção - você automaticamente
estará testando o mais crítico
sexta-feira, 19 de outubro de 2012
45. Não deixe o teste para o final
Não rode a suíte somente antes de
gerar a versão
Faça integração contínua
Não se preocupe com a performance
de execução de um teste, mas sim
com o paralelismo e concorrência.
sexta-feira, 19 de outubro de 2012
46. Mas o que é mais
importante?
sexta-feira, 19 de outubro de 2012
47. Saber se sua suíte está indo para o buraco
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012
48. @ederign
Globalcode
–
Open4education
sexta-feira, 19 de outubro de 2012