Este documento discute a importância dos testes de software e ferramentas para testes. Ele explica que testes de software podem identificar falhas antes que aconteçam, economizando dinheiro evitando problemas quando o software é lançado. Também discute como ferramentas como JUnit, Selenium e JMeter podem ser usadas para executar diferentes tipos de testes e melhorar a qualidade do software.
2. Testes de Software
&
Ferramentas para
Testes
por Paulo César M. Jeveaux
30/11/2007
3. 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;
4. 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
•
7. Introdução
Desenvolvimento de software
Falhas de Software
8. 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]
9. Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
10. 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]
11. Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
12.
13. Introdução
Desenvolvimento de software
Falhas de Software
Falhas custam caro
Testes não evitam falhas
Testes identificam as falhas antes delas
acontecerem
16. 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;
17. O que são testes?
• São pontuais;
• São previsíveis;
• São finitos;
• São (ou deveriam ser) simples;
18. 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;
20. 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;
21. 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.
25. 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
26. 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;
27. 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;
28. 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!
29. 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;
30. 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;
33. Garanta o que você faz
• Cliente:
– Isso aqui não está funcionando!
• Programador:
– Mas como!? Na minha máquina estava
funcionando até ontem.
34. 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
acontecer que seja
• O cliente não quer
corrigido rapidamente;
saber como é feito, ele
quer que funcione
• Não se consegue
qualidade e
confiabilidade sem
testes;
[4]
38. JUnit
• É um framework altamente eficaz e
largamente utilizado na criação e
execução de testes unitários de
códigos;
39. Um teste com JUnit
public class HelloWorldTest {
@Test public void testMultiplication() {
//Testando se 2*2 = 4
assertEquals (quot;Multiplicationquot;, 4, 2*2);
}
}
40. 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;
44. 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;