Você está na página 1de 50

Testes de Software & Ferramentas para Testes

Testes de Software & Ferramentas para Testes

por Paulo Csar M. Jeveaux


30/11/2007

Paulo Csar M. Jeveaux (Jev)


Consultor e Arquiteto de solues Java na Inflor; Mantenedor responsvel PortalJava.com e ESJUG; do

Palestrante-Entusiasta-Evangelista Java;

Agenda
Introduo O que so testes? Cobertura de testes Voc confia no que voc faz? Desenvolvendo orientado a testes Ferramentas e tcnicas de testes

Introduo
Desenvolvimento de software

Introduo
Desenvolvimento de software Falhas de Software

Falhas de Software
Mais de 1/3 das falhas poderiam ser evitadas com testes;
[1]

Cerca de 50% das falhas s so descobertas em produo; [1]

Introduo
Desenvolvimento de software Falhas de Software Falhas custam caro

Falhas custam $$$


Segundo uma pesquisa do Departamento de Comrcio dos EUA, publicada em 2002, falhas de software so to comuns e to danosas que se estima que causem um prejuzo anual de mais de 60 bilhes de dlares para a economia americana. [1], [2]

Introduo
Desenvolvimento de software Falhas de Software Falhas custam caro Testes no evitam falhas

Introduo
Desenvolvimento de software Falhas de Software Falhas custam caro Testes no evitam falhas Testes identificam as falhas antes delas acontecerem

O que so testes?

O que so testes?
Um teste uma verificao feita sobre um cdigo ou fragmento de cdigo para garantir que uma determinada entrada produza, sempre, uma sada esperada;

O que so testes?
So pontuais; So previsveis; So finitos; So (ou deveriam ser) simples;

O que so testes?
Testes no verificam completamente a sada de um programa pois as entradas so finitas; Testes no so perfeitos para validao, mas so a melhor opo para isso;

O que so testes?
White Box

Caixa branca
Testes de unidade de cdigo; Testam parte da soluo;

So escritos e mantidos pelo programador e devem estar sempre atualizados;

Caixa branca
Quando construmos um teste de unidade, o principal desafio isolar a classe ou trecho de cdigo que est sendo testado, para que nenhuma outra classe do sistema seja envolvida no teste e influencie no resultado esperado.

O que so testes?
White Box Black Box

Caixa preta
Testes funcionais e de aceitao; Testes de integrao; Testam a soluo completa;

Cobertura de testes

Cobertura dos testes


Trecho alterado Resultado esperado com alterao: OK Reflexo da alterao Erro #1 Reflexo da alterao Erro #2 Reflexo da alterao BUG Reflexo da alterao Inesperado

Cobertura dos testes


Sem cobertura Novo release = cdigos sem testes; No h segurana de que as alteraes no iro impactar em outros pontos da aplicao; Problemas, muitos problemas; Com cobertura

Cobertura dos testes


Dificilmente consegue-se 100% de cobertura de testes, contete-se com 99%; Quanto maior a cobertura dos testes na aplicao maior a confiabilidade nas alteraes e novos recursos;

Cobertura dos testes


Aplicaes cobertas por bons testes propiciam:
Facilidade de manuteno; Facilidade para incluso de novos membros no time de desenvolvimento; Menos problemas e reduo de custos em manutenes; Telefone silencioso nas madrugadas!

Testes so necessrios
Voc precisa verificar o cdigo, sempre; Voc precisa garantir que os requisitos esto implementados (e corretos); Voc precisa ter segurana para realizar alteraes;

Testes so necessrios
Voc precisa testar rpido para entregar rpido; Voc aumenta e garante a qualidade da sua soluo com testes; Voc precisa ser criativo para explorar o mximo possvel com seus testes, no use testes mentirosos;

Voc confia no que faz?

Garanta o que voc faz


Cliente:
Isso aqui no est funcionando!

Programador:
Mas como!? Na minha mquina estava funcionando at ontem.

Garanta o seu trabalho, seja profissional


Errado! Num mundo capitalizado no h tempo para testes; O cliente no quer saber como feito, ele quer que funcione Realidade! O cliente no quer saber se X virou Y. Ele quer que o problema no acontea e se acontecer que seja corrigido rapidamente; No se consegue qualidade e confiabilidade sem testes;

[4]

Test-Driven Development

TDD
refatore

Escreva um Teste

Escreva cdigo que passe no teste

Ferramentas
Ferramentas de teste de software

JUnit
um framework altamente eficaz e largamente utilizado na criao e execuo de testes unitrios de cdigos;

Um teste com JUnit


public class HelloWorldTest { @Test public void testMultiplication() { //Testando se 2*2 = 4 assertEquals ("Multiplication", 4, 2*2); } }

Selenium
Ferramenta para realizao de testes integrados e de aceitao; Usado no browser, grava todos os passos executados na aplicao diretamente no browser e os executa de forma automatizada no browser;

Selenium

JMeter
Propsito principal para testes de carga e stress de aplicaes; Pode ser usado para testes integrados e de aceitao;

JMeter

Clover
Ferramenta para anlise de cobertura dos testes existem na aplicao; Integrado a vrias IDEs - Eclipse ;-) Existem diversas opes semelhantes: JCoverage, Cobertura, etc;

Clover

Dvidas?

Referncias
[1] - NIST - http://www.nist.gov/public_affairs/releases/n0210.htm [2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd [3] - Caelum - http://blog.caelum.com.br/2006/09/08/voceacredita-no-seu-codigo/ [4] Fragmental - Shoes http://blog.fragmental.com.br/2007/10/31/programadoresprofissionais-escrevem-testes-ponto-final/ [5] Marcos Pereira http://marcospereira.wordpress.com/2007/11/27/desenvolvedo res-odeiam-testar [6] Wikipedia http://en.wikipedia.org/wiki/Testdriven_development [7] - TDD - http://www.testdriven.com

Podem acordar, acabou!


Obrigado a todos. Contatos:
www.portaljava.com | www.jeveaux.com jeveaux@portaljava.com | paulo@jeveaux.com

Testes de Software & Ferramentas para Testes


Esta apresentao usa a licena : Creative Commons : de Atribuio/Uso No Comercial Compartilhado.

Você também pode gostar