importância dos testes automatizadoss
DESCRIPTION
Desenvolver software é uma luta contra complexidade. Cada linha de código que um programador escreve pode ser mais um ponto de falha no software. Para diminuir os riscos é fundamental que o programador e a equipe adotem uma cultura na escrita de testes, de preferência automatizados, para garantir que o software se comporte como esperado durante todo o ciclo de vida do desenvolvimento. Nesta apresentação explanarei a importância dos testes automatizados de acordo com a cultura ágil, os tipos de testes que podemos escrever, os benefícios obtidos a médio e longo prazo, e as dificuldades ao escreve-los. Será também apresentado algumas ferramentas úteis e relatos da minha experiência na escrita de testes no mercado de trabalhoTRANSCRIPT
A importância dos testes automatizados
Rafael Ponte@rponte
Tuesday, October 18, 2011
@rponte
Tuesday, October 18, 2011
Tuesday, October 18, 2011
antes de começarmos...
Tuesday, October 18, 2011
quem aqui já programa?
Tuesday, October 18, 2011
quem aqui já programa?Java? .Net? Ruby? PhP? C?
Pascal?
Tuesday, October 18, 2011
e quem já trabalha na área?
Tuesday, October 18, 2011
e quem escreve testes?
Tuesday, October 18, 2011
eu conheço alguém que escreve...
Tuesday, October 18, 2011
e acho que muitos aqui também já o conhecemeu conheço alguém que escreve...
Tuesday, October 18, 2011
@yuriadamsO garoto prodígio dos testes.
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
ME MATA DE
ORGULHO!
Tuesday, October 18, 2011
desenvolver software é uma luta contra complexidade
Tuesday, October 18, 2011
toda linha de código que escrevemos pode ser um ponto de
falha
Tuesday, October 18, 2011
toda linha de código que escrevemos pode ser um ponto de
falha crítico
Tuesday, October 18, 2011
estudamos e aplicamos práticas para tentarmos diminuir estes
riscos
Tuesday, October 18, 2011
testarTuesday, October 18, 2011
por que testar?
Tuesday, October 18, 2011
para verificar se o sistema se comporta como deveria
Tuesday, October 18, 2011
como testar?testes manuais.testes automatizados.
Tuesday, October 18, 2011
testes manuais
Tuesday, October 18, 2011
$ão caros$ requer pessoal qualificado
$ requer tempo
$ requer documentação
$ repetitivos e cansativos
Tuesday, October 18, 2011
o que aprendemos com desenvolvimento de software é que...
Tuesday, October 18, 2011
tudo que depende do homem e é repetitivo está sujeito a
falhas
Tuesday, October 18, 2011
por isso nós
automatizamos! :-)
Tuesday, October 18, 2011
testes automatizados
Tuesday, October 18, 2011
um programinha para testar outro programinha
Tuesday, October 18, 2011
testes te trazem confiança e segurança para...
> implementar novas features> achar e corrigir bugs> refatorar código> refatorar código dos outros
Tuesday, October 18, 2011
CONFIANÇA
Tuesday, October 18, 2011
os testes te permitem ter...
> menor incidência de bugs> feedback rápido do que funciona> regressão de código> produtividade> melhor design do código> documentação executável
Tuesday, October 18, 2011
tipos de testes testes de unidade testes de integração testes de aceitação
Tuesday, October 18, 2011
testes de unidademenor unidade de código
executável
Tuesday, October 18, 2011
menor unidade na
POO= método
Tuesday, October 18, 2011
teste de unidade
= teste unitário
Tuesday, October 18, 2011
> mais fáceis de escrever;> muito rápidos para rodar;> mais fáceis para rastrear erros;
testes de unidade normalmente são:
Tuesday, October 18, 2011
que tal rodar centenas ou milhares de testes em
segundos?
Tuesday, October 18, 2011
feedback quase que instantâneo! WOW!
Tuesday, October 18, 2011
testes de integraçãoseu código integrado ao banco
de dados, rede, disco etc
Tuesday, October 18, 2011
valida os componentes de software funcionando juntos
Tuesday, October 18, 2011
valida os componentes de software funcionando juntos
Yuri Adams
teste de “maxu” vai no banco de dados!
Tuesday, October 18, 2011
e assim como os testes de unidade...
Tuesday, October 18, 2011
> mais fáceis de escrever;> muito rápidos para rodar;> mais fáceis para rastrear erros;
testes de integração normalmente são:
Tuesday, October 18, 2011
feedback AINDA quase que instantâneo
Tuesday, October 18, 2011
testes de aceitaçãoo que o usuário espera que
aconteça
Tuesday, October 18, 2011
teste
Tuesday, October 18, 2011
endteste
Tuesday, October 18, 2011
endto
teste
Tuesday, October 18, 2011
end
endto
teste
Tuesday, October 18, 2011
valida o software na perspectiva do usuário
Tuesday, October 18, 2011
valida o software na perspectiva
do usuário
Tuesday, October 18, 2011
valida o software na perspectiva
do usuário
Tuesday, October 18, 2011
> trabalhosos para escrever;> lentos para rodar;> difíceis para rastrear erros;> frágeis
testes de aceitação normalmente são:
Tuesday, October 18, 2011
apesar da dificuldade para escrevê-los...
Tuesday, October 18, 2011
Handerson Frota
apesar da dificuldade para escrevê-los...
Aceite os testes de aceitação!!
Tuesday, October 18, 2011
ainda assim vale a pena!
Aceite os testes de aceitação!!
Handerson Frota
apesar da dificuldade para escrevê-los...
Tuesday, October 18, 2011
resumindo...
Tuesday, October 18, 2011
como tudo isso vai numa app real?
Tuesday, October 18, 2011
Tuesday, October 18, 2011
browser
app(servidor)
banco de dados
Tuesday, October 18, 2011
teste de unidade
Tuesday, October 18, 2011
teste de integraçãoTuesday, October 18, 2011
teste de aceitação
Tuesday, October 18, 2011
teste de integração
teste de unidade
teste de aceitação
Tuesday, October 18, 2011
qual o melhor?
Tuesday, October 18, 2011
unidade > integração ?
Tuesday, October 18, 2011
nãoTuesday, October 18, 2011
integração > aceitação ?
Tuesday, October 18, 2011
nãoTuesday, October 18, 2011
aceitação > unidade ?
Tuesday, October 18, 2011
nãoTuesday, October 18, 2011
depende?
Tuesday, October 18, 2011
simTuesday, October 18, 2011
depende da tua necessidade
Tuesday, October 18, 2011
depende da tua necessidadeteste de aceitação testa TUDO.
Handerson Frota
Tuesday, October 18, 2011
depende da tua necessidadeteste de aceitação testa TUDO.
Handerson Frota
Yuri Adams
teste de integração é teste de “maxu”.
Tuesday, October 18, 2011
mas no geral, siga a pirâmide
Tuesday, October 18, 2011
Aceitação - 10%
Integração - 40%
Unidade - 50%
Test Automation Pyramid
Tuesday, October 18, 2011
que tal um pouco de prática, né?
Tuesday, October 18, 2011
de maneira não automatizada
Tuesday, October 18, 2011
problema:calcular fatorial de um
número
4! = 4.3.2.1 = 24
Tuesday, October 18, 2011
1! ==> 12! ==> 23! ==> 6
...
Tuesday, October 18, 2011
4! = 4.3.2.1 = 24
“com um algoritimo recursivo eu
resolvo isso fácil antes da novela das
7h”
Tuesday, October 18, 2011
Uma função recursiva é uma função que se refere a si própria
Tuesday, October 18, 2011
Tuesday, October 18, 2011
como testar o código?
Tuesday, October 18, 2011
1! ==> 12! ==> 23! ==> 6
...
Tuesday, October 18, 2011
você escreve uma classe de teste “meia-boca”
Tuesday, October 18, 2011
depois roda a classe de teste na linha de comando
Tuesday, October 18, 2011
depois roda a classe de teste na linha de comando
para ver o resultado!Tuesday, October 18, 2011
você testa mais um pouco...
Tuesday, October 18, 2011
e roda mais uma vez para ver o resultado...
Tuesday, October 18, 2011
altera mais um pouco,roda mais um pouco,verifica o resultado,
corrige aqui, corrige ali,roda de novo, ...
Tuesday, October 18, 2011
e depois que tudo funciona como
esperado...
Tuesday, October 18, 2011
zipa e envia pro professor, né?
Tuesday, October 18, 2011
zipa e envia pro professor, né?
ainda não!!Tuesday, October 18, 2011
zipa e envia pro professor, né?
falta apagar a classe “meia-boca” de teste!
Tuesday, October 18, 2011
agora sim! zipa e envia pro professor!
Tuesday, October 18, 2011
agora sim! zipa e envia pro professor!
Sérgio
com cópia pra mim também! ;D
Tuesday, October 18, 2011
PRONTO!
Tuesday, October 18, 2011
facinho, né?
Tuesday, October 18, 2011
agora você pode jogar Starcraft II em paz!
Tuesday, October 18, 2011
ou
Tuesday, October 18, 2011
jogar XBox com seus amigos descolados
Tuesday, October 18, 2011
eu me pergunto...
Tuesday, October 18, 2011
e depois de todo esse esforço...
Tuesday, October 18, 2011
e depois de todo esse esforço...
você DESCARTA sua classe de teste?
Tuesday, October 18, 2011
e depois de todo esse esforço...
Sérgio
e daí?
você DESCARTA sua classe de teste?
Tuesday, October 18, 2011
e depois de todo esse esforço...
você DESCARTA sua classe de teste?
Sérgio
e daí?o que importa é o programa rodando!
Tuesday, October 18, 2011
e depois de todo esse esforço...
você DESCARTA sua classe de teste?
Sérgio
e daí?o que importa é o programa rodando!
nunca mais vou mexer nesse código de novo mesmo
Tuesday, October 18, 2011
mas na vida real não é bem assim...
Tuesday, October 18, 2011
você mantém o código até que o software
“morra”
Tuesday, October 18, 2011
um software não morre...
Tuesday, October 18, 2011
um software não morre...
até que
Tuesday, October 18, 2011
um software não morre...
até quevocê tire ele de produção,
Tuesday, October 18, 2011
um software não morre...
até quevocê tire ele de produção,
você apague todo o código fonte
Tuesday, October 18, 2011
um software não morre...
até quevocê tire ele de produção,
você apague todo o código fonte
você apague o banco de dados
Tuesday, October 18, 2011
um software não morre...
até quevocê tire ele de produção,
você apague todo o código fonte
você mate os programadores,
mate os analistas e o arquiteto
você apague o banco de dados
Tuesday, October 18, 2011
um software não morre...
até quevocê tire ele de produção,
você apague todo o código fonte
você mate os programadores,
mate os analistas e o arquiteto
você apague o banco de dados
e você queime o backup e documentação
Tuesday, October 18, 2011
mas pro seu azar...
Tuesday, October 18, 2011
suponha que seu professor queira um algoritimo não-recursivo
Tuesday, October 18, 2011
suponha que seu professor queira um algoritimo não-recursivo
#comofas
Tuesday, October 18, 2011
1. você vai ter que estudar o problema de novo
Tuesday, October 18, 2011
2. você tem que alterar o código atual de novo
Tuesday, October 18, 2011
3. você vai ter que testa-lo de novo
Tuesday, October 18, 2011
mas cadê minha classe de teste?
Tuesday, October 18, 2011
eu apagueeeeeiiii?
Tuesday, October 18, 2011
Tuesday, October 18, 2011
que tal fazermos do jeito certo?
Tuesday, October 18, 2011
que tal fazermos do jeito certo?
com testes automatizados
Tuesday, October 18, 2011
jUnitassertEquals(expected, actual);
Tuesday, October 18, 2011
jUnitassertEquals(4, 2+2);
Tuesday, October 18, 2011
jUnitassertEquals(7, 10-4);
Tuesday, October 18, 2011
vamos testar
Tuesday, October 18, 2011
implementação recursiva
Tuesday, October 18, 2011
1! ==> 1
primeiro caso de teste
Tuesday, October 18, 2011
você escreve o teste com jUnit
Tuesday, October 18, 2011
depois roda o teste...
Tuesday, October 18, 2011
2! ==> 23! ==> 6
4! ==> 24 5! ==> 120
mais alguns casos de teste...
Tuesday, October 18, 2011
escreva os casos de teste...
Tuesday, October 18, 2011
roda mais uma vez...
Tuesday, October 18, 2011
0! ==> 11! ==> 1
um caso esquecido...
Tuesday, October 18, 2011
não me escapa...
Tuesday, October 18, 2011
roda mais uma vez...
Tuesday, October 18, 2011
PRONTO!agora você pode escrever o
algoritimo não-recursivo
Tuesday, October 18, 2011
#greenbarrefatora ==> roda os testes
Tuesday, October 18, 2011
facinho, né?
Tuesday, October 18, 2011
primeiro escreve o código da implementação, depois escreve o de
teste... LEGAL!
Tuesday, October 18, 2011
e se fosse possível escrever o teste ANTES da implementação?
Tuesday, October 18, 2011
ahn?
Tuesday, October 18, 2011
TDDTest Driven Development
Tuesday, October 18, 2011
TDDTest Driven Development
é assim que eu evoluo minha aplicação de forma contínua
Tuesday, October 18, 2011
TDDTest Driven Development
é assim que eu evoluo minha aplicação de forma contínuaeu falei sobre isso aqui ontem, ué!
Tuesday, October 18, 2011
step by step
Tuesday, October 18, 2011
TDD = testes
Tuesday, October 18, 2011
TDD = testesnãoTuesday, October 18, 2011
TDD é sobre DESIGN e MODELAGEM de código
Tuesday, October 18, 2011
a bateria de testes é um brinde
Tuesday, October 18, 2011
CULTURA DE TESTEScasos e casos
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
NEM TUDO SÃO FLORESDepois de +2 anos escrevendo testes.
Tuesday, October 18, 2011
primeiro passo na consultoria
Tuesday, October 18, 2011
Convencer a gerência.Seria um investimento de médio-longo prazo.
Tuesday, October 18, 2011
Projeto já em andamento.Dificuldade para escrever testes.
Tuesday, October 18, 2011
Infra?Não tínhamos nada pronto!
Tuesday, October 18, 2011
Colaboração da equipe.Equipe de bons desenvolvedores, mas sem
experiência com testes.
Tuesday, October 18, 2011
Tuesday, December 15, 2009
Zona de Conforto
Tuesday, October 18, 2011
Devs. simpatizantes.Teste de integração é teste de “maxu”!
Tuesday, October 18, 2011
Testes mal escritos.Você vai escrevê-los, pode ter certeza disso.
Tuesday, October 18, 2011
TDD.Somente em regras de negócio complexas.
Tuesday, October 18, 2011
OOP e SOLID PrinciplesSem estes conhecimentos não é tão simples ter
um bom design.
Tuesday, October 18, 2011
Testes de Aceitação.Tudo ia bem, até o dia em que o número de testes cresceu demais.
Tuesday, October 18, 2011
Testando cenários importantes.
Começamos do jeito certo.
Tuesday, October 18, 2011
Aceitação - 10%
Integração - 40%
Unidade - 50%
Test Automation Pyramid
Tuesday, October 18, 2011
More, more...Testes com granularidade fina demais.
Tuesday, October 18, 2011
Integração - 30%
Unidade - 40%
Aceitação - 30%
Test Automation Pyramid Square
Tuesday, October 18, 2011
Mantê-los se tornou caro.Frágeis, feedback demorado, falsos negativos e difícil rastrear erros.
Tuesday, October 18, 2011
Nos tornamos mais criteriosos.
Tuesday, October 18, 2011
IMPACTODepois de +2 anos escrevendo testes.
Tuesday, October 18, 2011
PRODUTIVIDADE.Baixa no início. Melhora durante os Sprints.
Tuesday, October 18, 2011
Qualidade no software. Menor incidência de bugs e correções rápidas.
Tuesday, October 18, 2011
De 100% para 25%.Melhoramos nossas estimativas.
Tuesday, October 18, 2011
Gerência.Satisfeita com a produtividade de alguns
projetos, decepcionada com outros.
Tuesday, October 18, 2011
Equipe mais madura.Perceberam a importância real dos testes.
Tuesday, October 18, 2011
CONCLUSÃO
Tuesday, October 18, 2011
Você só percebe os benefícios dos testes entre
6 meses e 1 ano
Tuesday, October 18, 2011
não existe uma receita de bolo para desenvolver software
Tuesday, October 18, 2011
mas simum conjunto de princípios e
práticas que podem te ajudar a desenvolver melhor
Tuesday, October 18, 2011
permita que sua equipe trabalhe melhor
Tuesday, October 18, 2011
permita que sua empresa entregue software melhor
Tuesday, October 18, 2011
permita-se ser um profissional melhor
Tuesday, October 18, 2011
use testes automatizados
Tuesday, October 18, 2011
testes automatizados
eu aprovo!Tuesday, October 18, 2011
Rafael [email protected]
Tuesday, October 18, 2011