Você está na página 1de 50

Testes de Software

&
Ferramentas para
Testes
Testes de Software
&
Ferramentas para
Testes

por Paulo César M. Jeveaux


30/11/2007
Paulo César M. Jeveaux (Jevô)
• Consultor e Arquiteto de soluções Java
na Inflor;

• Mantenedor responsável do
PortalJava.com e ESJUG;

• Palestrante-Entusiasta-Evangelista Java;
Agenda
• Introdução
• O que são testes?
• Cobertura de testes
• Você confia no que você faz?
• Desenvolvendo orientado a testes
• Ferramentas e técnicas de testes
Introdução
Desenvolvimento de software
Introdução
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ó são
descobertas em
produção; [1]
Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Falhas custam $$$
Segundo uma pesquisa do Departamento
de Comércio dos EUA, publicada em
2002, falhas de software são tão
comuns e tão danosas que se estima
que causem um prejuízo anual de mais
de 60 bilhões de dólares para a
economia americana. [1], [2]
Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
Testes identificam as falhas antes delas
acontecerem
O que são testes?
O que são testes?
• Um teste é uma verificação feita sobre
um código ou fragmento de código para
garantir que uma determinada entrada
produza, sempre, uma saída esperada;
O que são testes?
• São pontuais;

• São previsíveis;

• São finitos;

• São (ou deveriam ser) simples;


O que são testes?
• Testes não verificam completamente a
saída de um programa pois as entradas
são finitas;

• Testes não são perfeitos para validação,


mas são a melhor opção para isso;
O que são testes?
White Box
Caixa branca
• Testes de unidade de código;

• Testam parte da solução;

• São escritos e mantidos pelo


programador e devem estar sempre
atualizados;
Caixa branca
• Quando construímos um teste de
unidade, o principal desafio é isolar a
classe ou trecho de código que está
sendo testado, para que nenhuma outra
classe do sistema seja envolvida no
teste e influencie no resultado
esperado.
O que são testes?
White Box
Black Box
Caixa preta
• Testes funcionais e de aceitação;

• Testes de integração;

• Testam a solução completa;


Cobertura de testes
Cobertura dos testes
Resultado esperado
Trecho alterado
com alteração: OK

Reflexo da alteração
Erro #1

Reflexo da alteração
Erro #2

Reflexo da alteração
BUG

Reflexo da alteração
Inesperado
Cobertura dos testes
Sem cobertura Com cobertura

• Novo release =
códigos sem testes;
• Não há segurança de
que as alterações
não irão impactar
em outros pontos da
aplicação;
• Problemas, muitos
problemas;
Cobertura dos testes
• Dificilmente consegue-se 100% de
cobertura de testes, contete-se com
99%;

• Quanto maior a cobertura dos testes na


aplicação maior a confiabilidade nas
alterações e novos recursos;
Cobertura dos testes
• Aplicações cobertas por bons testes
propiciam:
– Facilidade de manutenção;
– Facilidade para inclusão de novos membros
no time de desenvolvimento;
– Menos problemas e redução de custos em
manutenções;
– Telefone silencioso nas madrugadas!
Testes são necessários
• Você precisa verificar o código, sempre;

• Você precisa garantir que os requisitos


estão implementados (e corretos);

• Você precisa ter segurança para realizar


alterações;
Testes são necessários
• Você precisa testar rápido para entregar
rápido;

• Você aumenta e garante a qualidade da sua


solução com testes;

• Você precisa ser criativo para explorar o


máximo possível com seus testes, não use
testes mentirosos;
Você confia no que faz?
Garanta o que você faz
• Cliente:
– Isso aqui não está funcionando!

• Programador:
– Mas como!? Na minha máquina estava
funcionando até ontem.
Garanta o seu trabalho, seja profissional

Errado! Realidade!
• Num mundo • O cliente não quer
capitalizado não há saber se X virou Y. Ele
tempo para testes; quer que o problema
não aconteça e se
• O cliente não quer acontecer que seja
saber como é feito, ele corrigido rapidamente;
quer que funcione
• Não se consegue
qualidade e
confiabilidade sem
[4] testes;
Test-Driven Development
TDD
refatore

Escreva código
Escreva um
que passe
Teste
no teste
Ferramentas
Ferramentas de teste de
software
JUnit
• É um framework altamente eficaz e
largamente utilizado na criação e
execução de testes unitários de
códigos;
Um teste com JUnit

public class HelloWorldTest {


@Test public void testMultiplication() {
//Testando se 2*2 = 4
assertEquals ("Multiplication", 4, 2*2);
}
}
Selenium
• Ferramenta para realização de testes
integrados e de aceitação;

• Usado no browser, grava todos os passos


executados na aplicação diretamente no
browser e os executa de forma
automatizada no browser;
Selenium
JMeter
• Propósito principal para testes de carga
e stress de aplicações;

• Pode ser usado para testes integrados e


de aceitação;
JMeter
Clover
• Ferramenta para análise de cobertura
dos testes existem na aplicação;

• Integrado a várias IDEs - Eclipse ;-)

• Existem diversas opções semelhantes:


JCoverage, Cobertura, etc;
Clover
Dúvidas?
Referências
• [1] - NIST - http://www.nist.gov/public_affairs/releases/n02-
10.htm
• [2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd
• [3] - Caelum - http://blog.caelum.com.br/2006/09/08/voce-
acredita-no-seu-codigo/
• [4] – Fragmental - Shoes -
http://blog.fragmental.com.br/2007/10/31/programadores-
profissionais-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/Test-
driven_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 apresentação usa a licença :


Creative Commons : de Atribuição/Uso
Não Comercial Compartilhado.

Você também pode gostar