importância dos testes automatizadoss

Post on 25-Dec-2014

1.729 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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 trabalho

TRANSCRIPT

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 Ponterponte@triadworks.com.br

Tuesday, October 18, 2011

top related