Testes de Software & Ferramentas de Testes
-
Upload
paulo-cesar-m-jeveaux -
Category
Technology
-
view
25.182 -
download
0
Transcript of Testes de Software & Ferramentas de Testes
Testes de Software&
Ferramentas para Ferramentas para Testes
Testes de Software&
Ferramentas para Ferramentas para Testes
por Paulo César M. Jeveaux30/11/2007
Paulo César M. Jeveaux (Jevô)
• Consultor e Arquiteto de soluções Javana Inflor;
• Mantenedor responsável do• Mantenedor responsável doPortalJava.com e ESJUG;
• Palestrante-Entusiasta-Evangelista Java;
Agenda
• Introdução
• O que são testes?
• Cobertura de testes
• Você confia no que você faz?• 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 dasfalhas poderiam serevitadas com testes;[1]
• Cerca de 50% dasfalhas só sãodescobertas emprodução; [1]
Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Falhas custam $$$
Segundo uma pesquisa do Departamentode Comércio dos EUA, publicada em2002, falhas de software são tãocomuns e tão danosas que se estimacomuns e tão danosas que se estimaque causem um prejuízo anual de maisde 60 bilhões de dólares para aeconomia americana. [1], [2]
Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
Introdução
Desenvolvimento de softwareFalhas de SoftwareFalhas custam caro
Testes não evitam falhasTestes identificam as falhas antes delas
acontecerem
O que são testes?
O que são testes?
• Um teste é uma verificação feita sobreum código ou fragmento de código paragarantir que uma determinada entradaproduza, sempre, uma saída esperada;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 asaída de um programa pois as entradassã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 peloprogramador e devem estar sempreatualizados;
Caixa branca
• Quando construímos um teste deunidade, o principal desafio é isolar aclasse ou trecho de código que estásendo testado, para que nenhuma outrasendo testado, para que nenhuma outraclasse do sistema seja envolvida noteste e influencie no resultadoesperado.
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
Trecho alteradoResultado esperado com alteração: OK
Reflexo da alteraçãoErro #1Erro #1
Reflexo da alteraçãoErro #2
Reflexo da alteraçãoBUG
Reflexo da alteraçãoInesperado
Cobertura dos testes
• Novo release =códigos sem testes;
Sem cobertura Com cobertura
códigos sem testes;• Não há segurança deque as alteraçõesnão irão impactarem outros pontos daaplicação;
• Problemas, muitosproblemas;
Cobertura dos testes
• Dificilmente consegue-se 100% decobertura de testes, contete-se com99%;
• Quanto maior a cobertura dos testes naaplicação maior a confiabilidade nasalterações e novos recursos;
Cobertura dos testes
• Aplicações cobertas por bons testespropiciam:– Facilidade de manutenção;
– Facilidade para inclusão de novos membros– Facilidade para inclusão de novos membrosno time de desenvolvimento;
– Menos problemas e redução de custos emmanutenções;
– Telefone silencioso nas madrugadas!
Testes são necessários
• Você precisa verificar o código, sempre;
• Você precisa garantir que os requisitosestão implementados (e corretos);estão implementados (e corretos);
• Você precisa ter segurança para realizaralterações;
Testes são necessários
• Você precisa testar rápido para entregarrápido;
• Você aumenta e garante a qualidade da sua• Você aumenta e garante a qualidade da suasolução com testes;
• Você precisa ser criativo para explorar omáximo possível com seus testes, não usetestes mentirosos;
Você confia no que faz?
Garanta o que você faz
• Cliente:– Isso aqui não está funcionando!
• Programador:• Programador:– Mas como!? Na minha máquina estavafuncionando até ontem.
Garanta o seu trabalho, seja profissional
Errado!
• Num mundocapitalizado não hátempo para testes;
Realidade!
• O cliente não quersaber se X virou Y. Elequer que o problemanão aconteça e se
• O cliente não quersaber como é feito, elequer que funcione
não aconteça e seacontecer que sejacorrigido rapidamente;
• Não se conseguequalidade econfiabilidade semtestes;[4]
Test-Driven Development
TDD
Escreva umEscreva código
refatore
Escreva umTeste
Escreva códigoque passeno teste
Ferramentas
Ferramentas de teste de software
JUnit
• É um framework altamente eficaz elargamente utilizado na criação eexecução de testes unitários decódigos;códigos;
Um teste com JUnit
public class HelloWorldTest {
@Test public void testMultiplication() {
//Testando se 2*2 = 4//Testando se 2*2 = 4
assertEquals ("Multiplication", 4, 2*2);
}
}
Selenium
• Ferramenta para realização de testesintegrados e de aceitação;
• Usado no browser, grava todos os passos• Usado no browser, grava todos os passosexecutados na aplicação diretamente nobrowser e os executa de formaautomatizada no browser;
Selenium
JMeter
• Propósito principal para testes de cargae stress de aplicações;
• Pode ser usado para testes integrados e• Pode ser usado para testes integrados ede aceitação;
JMeter
Clover
• Ferramenta para análise de coberturados testes existem na aplicação;
• Integrado a várias IDEs - Eclipse ;-)• 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-http://blog.fragmental.com.br/2007/10/31/programadores-profissionais-escrevem-testes-ponto-final/
• [5] – Marcos Pereira –http://marcospereira.wordpress.com/2007/11/27/desenvolvedores-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– www.portaljava.com | www.jeveaux.com
Testes de Software&
Ferramentas para Ferramentas para Testes
Esta apresentação usa a licença :
Creative Commons : de Atribuição/Uso
Não Comercial Compartilhado.