SlideShare una empresa de Scribd logo
1 de 84
Descargar para leer sin conexión
Testes
pra que?
@rodrigodealer
sábado, 20 de julho de 13
Eu
sábado, 20 de julho de 13
Pergunta
sábado, 20 de julho de 13
Por quê?
sábado, 20 de julho de 13
Noite de sono :-)
sábado, 20 de julho de 13
Cliente satisfeito :D
sábado, 20 de julho de 13
Todos felizes :-D
sábado, 20 de julho de 13
Exemplo :-)
sábado, 20 de julho de 13
(Ruby)
sábado, 20 de julho de 13
E esse?
Meio grande, né?
sábado, 20 de julho de 13
“Ruby é feito para ser bonito. Se está feio, está errado.”
Matz
sábado, 20 de julho de 13
“Extract method” - Faz bem
Aquele if, else foi
embora o/
sábado, 20 de julho de 13
Código repetido
Variável desnecessária
Deletar código faz bem :D
sábado, 20 de julho de 13
Ok, fiz esse refactoring, que garantia eu
tenho que vai funcionar?
sábado, 20 de julho de 13
Com testes!
sábado, 20 de julho de 13
Testes unitários
sábado, 20 de julho de 13
Certa vez um sábio disse:
A test is not a unit test if:
* it talks to the database
* it communicates across the network
* it touches the file system
* it can’t run at the same time as any of your other unit tests
* you have to do special things to your environment (such as editing config files) to run it
Tests that do these things aren’t bad. Often they are worth writing, and they can be written in a unit
test harness. However, it is important to keep them separate from true unit tests so that we can run
the unit tests quickly whenever we make changes.
--
Ou um chapa disse em português:
Um teste não é um teste unitário se:
- Comunica com o banco de dados
- Comunica pela rede
- “Toca” no sistema de arquivos
- Se não pode ser rodado ao mesmo tempo de outros testes unitários
- Se você tem que configurar determinadas coisas como arquivos de configuração
sábado, 20 de julho de 13
Testar unitariamente é
sábado, 20 de julho de 13
Testar a menor porção de código
sábado, 20 de julho de 13
Devem rodar rapidamente, em poucos segundos
sábado, 20 de julho de 13
Devem rodar rapidamente, em poucos segundos
Feedback rápido!
sábado, 20 de julho de 13
Seu código vai sofrer um impacto grande a partir
do momento que começar a escrever testes e
refatorar
sábado, 20 de julho de 13
Seu código vai sofrer um impacto grande a partir
do momento que começar a escrever testes e
refatorar
Como assim?
sábado, 20 de julho de 13
Red - Green - Refactor
sábado, 20 de julho de 13
Exemplo :-D
(Java)
(Camada de modelo)
sábado, 20 de julho de 13
O que estou testando?
sábado, 20 de julho de 13
Se esse método reflete
o Enum
sábado, 20 de julho de 13
Menor unidade, lembra?
sábado, 20 de julho de 13
Testes de integração
sábado, 20 de julho de 13
Rodam mais lentamente
sábado, 20 de julho de 13
Fazem operações num
banco de dados
Ou no sistema de arquivos
Existe I/O
Ou em rede
sábado, 20 de julho de 13
Para que?
Meus dados estão vindo de forma correta?
Meus dados estão sendo gravados de forma correta?
Minha camada de modelo está se comunicando corretamente com o ORM?
sábado, 20 de julho de 13
Que ferramentas posso usar?
RubyJava
sábado, 20 de julho de 13
Testes de aceitação
sábado, 20 de julho de 13
Pra que?
sábado, 20 de julho de 13
Minha aplicação está com a camada de serviços bem testada
sábado, 20 de julho de 13
E a integração com a camada de visão?
sábado, 20 de julho de 13
TextTextText
JavaScript não funciona!
sábado, 20 de julho de 13
Que ferramentas uso?
sábado, 20 de julho de 13
Que ferramentas uso?
sábado, 20 de julho de 13
Eu testo toda a aplicação?
sábado, 20 de julho de 13
Eu testo toda a aplicação?
Depende.
sábado, 20 de julho de 13
Porque?
sábado, 20 de julho de 13
Porque?
Testes de aceitação demoram mais a rodar
sábado, 20 de julho de 13
Porque?
Testes de aceitação demoram mais a rodar
Tem feedback demorado
sábado, 20 de julho de 13
Porque?
Testes de aceitação demoram mais a rodar
Tem feedback demorado
Escrever os testes também demora
sábado, 20 de julho de 13
Porque?
Testes de aceitação demoram mais a rodar
Tem feedback demorado
Escrever os testes também demora
sábado, 20 de julho de 13
Porque?
Testes de aceitação demoram mais a rodar
Tem feedback demorado
Escrever os testes também demora
Ou seja...
sábado, 20 de julho de 13
Demora!
sábado, 20 de julho de 13
Por isso...
sábado, 20 de julho de 13
Por isso...
É aconselhável testar apenas as telas mais importantes
sábado, 20 de julho de 13
Por isso...
É aconselhável testar apenas as telas mais importantes
Telas mais utilizadas ou com nível de complexidade maior
sábado, 20 de julho de 13
Por isso...
É aconselhável testar apenas as telas mais importantes
Telas mais utilizadas ou com nível de complexidade maior
Contanto que faça!
sábado, 20 de julho de 13
Junte tudo
Testes unitários + de integração + de aceitação
E coloque em um servidor de integração contínua
sábado, 20 de julho de 13
Existem vários
Jenkins TeamCity CruiseControl
sábado, 20 de julho de 13
Feedback rápido!
sábado, 20 de julho de 13
Feedback rápido!
Via email
sábado, 20 de julho de 13
Feedback rápido!
Via email
Via IDE
sábado, 20 de julho de 13
Feedback rápido!
Via email
Via IDE
Via IM
sábado, 20 de julho de 13
Feedback rápido!
Via email
Via IDE
Via IM
...
sábado, 20 de julho de 13
Quanto antes você for avisado
que algo está errado, melhor!
sábado, 20 de julho de 13
Cobertura de testes
sábado, 20 de julho de 13
Cobertura de testes
100% de cobertura?
sábado, 20 de julho de 13
Cobertura de testes
100% de cobertura?
É importante
sábado, 20 de julho de 13
Cobertura de testes
100% de cobertura?
É importante, mas não é tudo
sábado, 20 de julho de 13
Como assim?
sábado, 20 de julho de 13
Cobertura de testes
100% de cobertura garante que o código está coberto
sábado, 20 de julho de 13
Cobertura de testes
100% de cobertura garante que o código está coberto
Mas não garante que está efetivamente testado
sábado, 20 de julho de 13
E que critério eu utilizo?
sábado, 20 de julho de 13
E que critério eu utilizo?
Bom senso
sábado, 20 de julho de 13
E que critério eu utilizo?
Bom senso
sábado, 20 de julho de 13
E que critério eu utilizo?
Teste o que pode quebrar
sábado, 20 de julho de 13
E o que eu não testo?
1. Não precisa testar métodos da linguagem
sábado, 20 de julho de 13
E o que eu não testo?
1. Não precisa testar métodos da linguagem
2. Não precisa testar métodos do framework
sábado, 20 de julho de 13
E o que eu não testo?
1. Não precisa testar métodos da linguagem
2. Não precisa testar código dos frameworks
3. Não precisa testar código dos plugins
sábado, 20 de julho de 13
E o que eu não testo?
1. Não precisa testar métodos da linguagem
2. Não precisa testar código dos frameworks
3. Não precisa testar código dos plugins
Esse código já deveria estar testado, né?
sábado, 20 de julho de 13
Para concluir...
sábado, 20 de julho de 13
Para concluir...
Teste suas aplicações
sábado, 20 de julho de 13
Para concluir...
Teste suas aplicações
Todo mundo agradece, lembra?
sábado, 20 de julho de 13
Você Cliente
sábado, 20 de julho de 13
Todos felizes :-D
sábado, 20 de julho de 13
Sugestão
http://www.infoq.com/br/presentations/o-que-nao-testar
http://www.infoq.com/br/news/2010/06/cobertura-testes-falsa-impressao
sábado, 20 de julho de 13
Perguntas?
sábado, 20 de julho de 13
Obrigado!
@rodrigodealer
sábado, 20 de julho de 13

Más contenido relacionado

La actualidad más candente

Técnica Mista: Moldeira Fechada & Aberta
Técnica Mista: Moldeira Fechada & AbertaTécnica Mista: Moldeira Fechada & Aberta
Técnica Mista: Moldeira Fechada & Aberta
N. David Harari
 
RVM and Infinity Test
RVM and Infinity TestRVM and Infinity Test
RVM and Infinity Test
SuccesSoft
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
Bernardo Fontes
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
Igor Takenami
 

La actualidad más candente (12)

Técnica Mista: Moldeira Fechada & Aberta
Técnica Mista: Moldeira Fechada & AbertaTécnica Mista: Moldeira Fechada & Aberta
Técnica Mista: Moldeira Fechada & Aberta
 
RVM and Infinity Test
RVM and Infinity TestRVM and Infinity Test
RVM and Infinity Test
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
WordCamp Fortaleza 2016
WordCamp Fortaleza 2016WordCamp Fortaleza 2016
WordCamp Fortaleza 2016
 
Dojo com Arduino
Dojo com ArduinoDojo com Arduino
Dojo com Arduino
 
Aprendendo com projetos open source @ RubyConf 2015
Aprendendo com projetos open source @ RubyConf 2015Aprendendo com projetos open source @ RubyConf 2015
Aprendendo com projetos open source @ RubyConf 2015
 
YAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationYAGNI, KISS e Over Patternization
YAGNI, KISS e Over Patternization
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Avarias comuns nos computadores
Avarias comuns nos  computadoresAvarias comuns nos  computadores
Avarias comuns nos computadores
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Arquitetura emergente - sobre cultura devops
Arquitetura emergente - sobre cultura devopsArquitetura emergente - sobre cultura devops
Arquitetura emergente - sobre cultura devops
 

Destacado (13)

A incrivel arte de pensar
A incrivel arte de pensarA incrivel arte de pensar
A incrivel arte de pensar
 
Missao Valores
Missao ValoresMissao Valores
Missao Valores
 
Inquérito realizado a cidadãos da cidade do porto
Inquérito realizado a cidadãos da cidade do portoInquérito realizado a cidadãos da cidade do porto
Inquérito realizado a cidadãos da cidade do porto
 
Castelo Dos Sonhos
Castelo Dos SonhosCastelo Dos Sonhos
Castelo Dos Sonhos
 
A vida é um sonho
A vida é um sonho A vida é um sonho
A vida é um sonho
 
Sonhar
SonharSonhar
Sonhar
 
Sonhos
SonhosSonhos
Sonhos
 
Nunca Deixe de Sonhar
Nunca Deixe de SonharNunca Deixe de Sonhar
Nunca Deixe de Sonhar
 
Sonhos
SonhosSonhos
Sonhos
 
1º trabalho uma viagem de sonho
1º trabalho uma viagem de sonho1º trabalho uma viagem de sonho
1º trabalho uma viagem de sonho
 
Pensar arte
Pensar artePensar arte
Pensar arte
 
Power point da filosofia da educaçao
Power point da filosofia da educaçaoPower point da filosofia da educaçao
Power point da filosofia da educaçao
 
Walt disney ppt
Walt disney pptWalt disney ppt
Walt disney ppt
 

Similar a Testes - Pra quê - 2013

Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
Lucas Caton
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
Fausto Siqueira
 
Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...
Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...
Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...
Qaladies
 

Similar a Testes - Pra quê - 2013 (20)

Testes - Para que?
Testes - Para que?Testes - Para que?
Testes - Para que?
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
Infinity test and RVM
Infinity test and RVMInfinity test and RVM
Infinity test and RVM
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BR
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...
Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...
Criar testes em Java é tão chato e demorado... Então use Spock e crie testes ...
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Testes em um mundo ágil
Testes em um mundo ágilTestes em um mundo ágil
Testes em um mundo ágil
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NET
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
Boas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de modaBoas Práticas para desenvolvimento java que nunca saíram de moda
Boas Práticas para desenvolvimento java que nunca saíram de moda
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de TesteMantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
 
[MTC 2021] Vieses da qualidade - Daniele Vieira Fiorot
[MTC 2021] Vieses da qualidade -  Daniele Vieira Fiorot[MTC 2021] Vieses da qualidade -  Daniele Vieira Fiorot
[MTC 2021] Vieses da qualidade - Daniele Vieira Fiorot
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
 
TDD em JavaScript, rola?
TDD em JavaScript, rola?TDD em JavaScript, rola?
TDD em JavaScript, rola?
 
Automação de Testes com SoapUI v1
Automação de Testes com SoapUI v1Automação de Testes com SoapUI v1
Automação de Testes com SoapUI v1
 

Último

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Testes - Pra quê - 2013