Importância dos testes automatizados no dia a dia

Preview:

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 prejuízos causados pelo não uso de testes, os benefícios obtidos a médio e longo prazo, e as dificuldades ao escreve-los.

Citation preview

A importância dos testes automatizados

no dia a dia_

Rafael Ponte@rponte

Monday, February 4, 2013

@rponte

Monday, February 4, 2013

Monday, February 4, 2013

Como os clientes chegam até nós...

Monday, February 4, 2013

Solucionar bugs críticos e “apagar incêndios”

Monday, February 4, 2013

Solucionar bugs críticos e “apagar incêndios”

Migrar ou Reescrever sistemas

Monday, February 4, 2013

Solucionar bugs críticos e “apagar incêndios”

Migrar ou Reescrever sistemas

Treinar a equipe

Monday, February 4, 2013

Solucionar bugs críticos e “apagar incêndios”

Migrar ou Reescrever sistemas

Treinar a equipe

Monday, February 4, 2013

Migrar ou reescrever sistemas de:

Monday, February 4, 2013

Migrar ou reescrever sistemas de:

* Desktop para Web

Monday, February 4, 2013

Migrar ou reescrever sistemas de:

* Desktop para Web

* PHP para Java

Monday, February 4, 2013

Migrar ou reescrever sistemas de:

* Desktop para Web

* PHP para Java

* Java para Ruby on Rails

Monday, February 4, 2013

Migrar ou reescrever sistemas de:

* Desktop para Web

* PHP para Java

* Java para Ruby on Rails

* Java para Java

Monday, February 4, 2013

após alguns minutos de conversa...

Monday, February 4, 2013

com o gerente ou a equipe, é comum escutar...após alguns minutos de conversa...

Monday, February 4, 2013

“Temos uma equipe de 8 programadores. E +3 vagas

em aberto.” - Gerente

Monday, February 4, 2013

“Criamos nosso próprio framework para agilizar o

trabalho.” - Arquiteto

Monday, February 4, 2013

“Eu li que JSF2 é mais simples do que GWT.”

Programador

Monday, February 4, 2013

“Fiz uma PoC com Ruby On Rails. É mais produtivo do que Java!” - Arquiteto

Monday, February 4, 2013

“Com o “Caker” podemos gerar cadastros em minutos.” - Gerente

Monday, February 4, 2013

Eles querem mais

Produtividade?!

Monday, February 4, 2013

Eles querem mais

Produtividade?!nãoMonday, February 4, 2013

Eles procuram VELOCIDADE no desenvolvimento de novas

funcionalidades

Monday, February 4, 2013

Produtividade=

Velocidade

Monday, February 4, 2013

Produtividade=

Velocidadenão

Monday, February 4, 2013

Eles estão focando no local errado...

Monday, February 4, 2013

Eles estão focando no local errado...

* Java para Ruby on Rails

Monday, February 4, 2013

Mudar a forma como o programador trabalha!

Monday, February 4, 2013

ProgramadoresResistência a mudança?

Monday, February 4, 2013

Programador Cowboy

Monday, February 4, 2013

Code and Fix

Abandona sua disciplina na hora do aperto

O programador que os gerentes adoram

Monday, February 4, 2013

Programador Profissional

Monday, February 4, 2013

Disciplinado

Mantém a tranquilidade e disciplina

Se mantém em evolução

Monday, February 4, 2013

Boas Práticas

Monday, February 4, 2013

Escrita de Testes Automatizados

Monday, February 4, 2013

Testes Manuaisversus

Testes Automatizados

Monday, February 4, 2013

Não é mais demorado?

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

1 2 3 4 5 6 7 80

17.5

35

52.5

70

Prod

utiv

idad

e

Tempo

"Cowboy" Profissional

Produtividade

Monday, February 4, 2013

Se a coisa já é ruim com um programador cowboy...

Monday, February 4, 2013

imagina uma equipe de cowboys

Monday, February 4, 2013

Cowboys Profissionais

1s

2s

3s

4s

5s

6s

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

6s

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

6s

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

6s

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

6s

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Não é dificil perceber alguns padrões...

Monday, February 4, 2013

reincidência de bugs

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

funcionalidades “bugam” do nada

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

diminuição de novas funcionalidades

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Por que isso acontece?

Monday, February 4, 2013

reincidência de bugsNão escrevem testes!

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

funcionalidades “bugam” do nadaNão fazem teste de

regressão

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

diminuição de novas funcionalidades

Disciplina com testes

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

Monday, February 4, 2013

Cowboys Profissionais

1s F1

2s

3s

4s

5s

F2F3F4F5 F2F1

F6F2F7F4F8 F4F1 F5

F6F9F7F4F10 F7F6 F8

F6F11F7F12F13 F10F9 F8 F11

F14F10F7F12 F13F12 F14 F15

6s F1F10F4F12 F17F16 F18 F19F9

F = Nova Funcionalidade F = Funcionalidade com Bug

MedoInsegurança

Evolução LentaCliente FrustradoSem credibilidade

SegurançaFeedback

ProdutividadeCliente Satisfeito

Credibilidade

Monday, February 4, 2013

Não é dificil escrever testes automatizados

Monday, February 4, 2013

Mas requer um tempo de maturidade

Monday, February 4, 2013

tipos de testes testes de unidade testes de integração testes de aceitação

Monday, February 4, 2013

testes de unidademenor unidade de código

executável

Monday, February 4, 2013

menor unidade na

POO= método

Monday, February 4, 2013

teste de unidade

= teste unitário

Monday, February 4, 2013

> mais fáceis de escrever;> muito rápidos para rodar;> mais fáceis para rastrear erros;

testes de unidade normalmente são:

Monday, February 4, 2013

que tal rodar centenas ou milhares de testes em

segundos?

Monday, February 4, 2013

feedback quase que instantâneo! WOW!

Monday, February 4, 2013

testes de integraçãoseu código integrado ao banco

de dados, rede, disco etc

Monday, February 4, 2013

valida os componentes de software funcionando juntos

Monday, February 4, 2013

valida os componentes de software funcionando juntos

Yuri Adams

teste de “maxu” vai no banco de dados!

Monday, February 4, 2013

e assim como os testes de unidade...

Monday, February 4, 2013

> mais fáceis de escrever;> muito rápidos para rodar;> mais fáceis para rastrear erros;

testes de integração normalmente são:

Monday, February 4, 2013

feedback AINDA quase que instantâneo

Monday, February 4, 2013

testes de aceitaçãoo que o usuário espera que

aconteça

Monday, February 4, 2013

teste

Monday, February 4, 2013

endteste

Monday, February 4, 2013

endto

teste

Monday, February 4, 2013

end

endto

teste

Monday, February 4, 2013

valida o software na perspectiva do usuário

Monday, February 4, 2013

valida o software na perspectiva

do usuário

Monday, February 4, 2013

valida o software na perspectiva

do usuário

Monday, February 4, 2013

> trabalhosos para escrever;> lentos para rodar;> difíceis para rastrear erros;> frágeis

testes de aceitação normalmente são:

Monday, February 4, 2013

apesar da dificuldade para escrevê-los...

Monday, February 4, 2013

Handerson Frota

apesar da dificuldade para escrevê-los...

Aceite os testes de aceitação!!

Monday, February 4, 2013

ainda assim vale a pena!

Aceite os testes de aceitação!!

Handerson Frota

apesar da dificuldade para escrevê-los...

Monday, February 4, 2013

resumindo...

Monday, February 4, 2013

como tudo isso vai numa app real?

Monday, February 4, 2013

Monday, February 4, 2013

browser

app(servidor)

banco de dados

Monday, February 4, 2013

teste de unidade

Monday, February 4, 2013

teste de integraçãoMonday, February 4, 2013

teste de aceitação

Monday, February 4, 2013

teste de integração

teste de unidade

teste de aceitação

Monday, February 4, 2013

qual o melhor?

Monday, February 4, 2013

unidade > integração ?

Monday, February 4, 2013

nãoMonday, February 4, 2013

integração > aceitação ?

Monday, February 4, 2013

nãoMonday, February 4, 2013

aceitação > unidade ?

Monday, February 4, 2013

nãoMonday, February 4, 2013

depende?

Monday, February 4, 2013

simMonday, February 4, 2013

depende da tua necessidade

Monday, February 4, 2013

depende da tua necessidadeteste de aceitação testa TUDO.

Handerson Frota

Monday, February 4, 2013

depende da tua necessidadeteste de aceitação testa TUDO.

Handerson Frota

Yuri Adams

teste de integração é teste de “maxu”.

Monday, February 4, 2013

mas no geral, siga a pirâmide

Monday, February 4, 2013

Aceitação - 10%

Integração - 40%

Unidade - 50%

Test Automation Pyramid

Monday, February 4, 2013

indo além...

Monday, February 4, 2013

primeiro escreve o código de produção, depois escreve o teste...

LEGAL!

“Modelo Tradicional”

Monday, February 4, 2013

e se fosse possível escrever o teste ANTES da implementação?

Monday, February 4, 2013

ahn?

Monday, February 4, 2013

TDDTest Driven Development

Monday, February 4, 2013

step by step

Monday, February 4, 2013

O que ganho com isso?

Monday, February 4, 2013

TDD = testes

Monday, February 4, 2013

TDD = testesnãoMonday, February 4, 2013

TDD é sobre DESIGN e MODELAGEM de código

Monday, February 4, 2013

a bateria de testes é um brinde

Monday, February 4, 2013

CONCLUSÃO

Monday, February 4, 2013

Você só percebe os benefícios dos testes entre

6 meses e 1 ano

Monday, February 4, 2013

não existe uma receita de bolo para desenvolver software

Monday, February 4, 2013

mas simum conjunto de princípios e

práticas que podem te ajudar a desenvolver melhor

Monday, February 4, 2013

testes automatizados

é apenas a ponta do iceberg

Monday, February 4, 2013

permita que sua equipe trabalhe melhor

Monday, February 4, 2013

permita que sua empresa entregue software melhor

Monday, February 4, 2013

permita-se ser um profissional melhor

Monday, February 4, 2013

use testes automatizados

Monday, February 4, 2013

testes automatizados

eu aprovo!Monday, February 4, 2013

Rafael Ponterponte@triadworks.com.br

Monday, February 4, 2013

Recommended