2. Recapitulando
Já sabemos qual a importância de aplicar testes
unitários em nosso software
Também sabemos como identificar os testes
necessários
Até o momento realizamos nossos testes de uma
maneira manual
3. Qual o problema com os testes
manuais?
Muito código para ser escrito
Mais código ainda para se verificar o retorno dos
métodos de forma automática
Temos de testar um método por vez
Precisamos automatizar isto!
4. Automação de testes
Testes automatizados envolvem o uso de um
software para controlar a execução dos testes
Há basicamente dois tipos de automatizadores:
Para avaliar códigos
Para testes através de interface gráfica
5. Automação de testes unitários
Utilizaremos um framework para executar nossos testes
Este framework fará a execução de múltiplos testes
Seu objetivo é realizar comparações entre os valores
retornados e os esperados de forma automática
Além de oferecer recursos para comparar mais facilmente os
resultados dos métodos aos esperados
6. Framework jUnit
Escrito originalmente por Kent Beck e Erich Gamma
Utilizado em Java, mas há versões Unit para
diferentes linguagens de programação
É uma ferramenta de testes de regressao
Integra-se a diferentes IDEs
7. Como utilizá-lo em nosso projeto
Podemos baixar a biblioteca do junit e adicionar
manualmente
http://www.junit.org
Ou adicionar ao nosso projeto no NetBeans ou Eclipse
8. Testes manuais x automatizados
Calcular imposto com base no salário – calcular( Float
salario )
Imposto 27,5% a partir de 3.743
Imposto 22,5% a partir de 2.995 até 3.743
O método deve retornar o valor do imposto a ser pago
10. Teste automatizado
import org.junit.Assert;
import org.junit.Test;
public class FiscalRendaTest {
@Test
public void testCalculo(){
double resultado = FiscalRenda.calcular(3800.0);
Assert.assertEquals(1045, resultado, 0.1);
}
}
11. Conceitos importantes relacionados
a teste
Erro
Quando o método produziu um resultado inesperado
Falha
Quando há algum problema relacionado ao código
Sucesso
Quando o método produziu o resultado esperado
12. Annotations jUnit
É um metadado representado pela @
O jUnit utiliza estas annotations para guiar o uso dos
testes
Evita a necessidade de herdar de algumas
classes, convenções de nomes, criação de métodos
especiais, dentre outros
13. Annotations do jUnit
@Test – usada para indicar que o método é usado para criar testes
@Before – código a ser executado, toda vez, antes da execução de
cada métodos de teste
Usado para preparar o ambiente. Inicializar classes, ler dados, dentre outros
@After – código a ser executado, toda vez, após a execução de cada
métodos de teste
@BeforeClass – similar ao @Before porém executado apenas uma vez
antes de todos os testes
Usado para preparar atividades que demandem tempo. Inicializar o banco de
@AfterClass – similar ao @Aftermétodo precisam serapenas uma vez
dados, por exemplo. Os porém executado estáticos
após todos os testes
@Test( expected = Exception.class ) – verifica se a exceção foi lançada
@Test(timeout = 100) – falha se o método durar mais que 100
milisegundos
14. Uso do jUnit
1. Criaremos uma classe para nossos testes referentes
a determinada classe
2. Daremos imports nas classes e métodos necessários
3. Criaremos métodos para testar nossos métodos
4. Faremos a comparação entre o retorno de nosso
método com o resultado esperado
15. Criem os testes unitários abaixo
Método para realizar soma
Recebe como entrada dois números
Retorna o resultado da soma
Método para ralizar divisão
Lançar exceção quando receber 0 no denominador
Testar um método para realizar depósito em uma conta
bancária
O método deve receber um flutuante com o valor a ser
depósitado
O método deve retornar o valor contido na conta
16. Criem os testes unitários abaixo
Testar o método para fazer o saque em uma conta
O método aceita dois valores: valor_saque, valor_saldo
O método deve retornar um valor referente ao saldo da conta após
o saque ou -1 em situação de erro
Testar o método para liberar a prova do detran ou não
O método aceita um valor do tipo Integer com a idade do aluno
A liberação da prova será mediante ao atendimento dos critérios
ou não
O método deve retornar um boolean true caso a prova seja
liberada ou false em caso contrário
Notes de l'éditeur
O teste de regressão é aplicável a uma nova versão de software ou à necessidade de se executar um novo ciclo de teste. Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. Visa identificar se algum erro já identificado anteriormente retorna à nova versão, medindo assim a qualidade do software produzido.
Criar um novo projeto e adicionar abibliotecatanto no netbeanscomo no eclipse
Modifiquemparatestar com valor nasegundaopção, naterceiraopção e depoismantenhamtodosos testes
Testes primeiroponto: quaisquernúmeros, verifiquem se o métodoretorna o valor correto. Incluamvalorescorretos e vejam se osretornossãooscorretosTestes segundoponto: númeropositivomaiorque zero, zero, negativo
Testes para a primeiracondição? 20, 100 [sucesso] / 20, 10 [ falha ] (primeiro valor maiorque o segundo) / 0, 0 [falha] (O métododeveaceitar o saquecaso o saldosejamaiorouigual)Testes para a segundacondição? 18 oumaiorque 18 / menorque 18 / número 0 ounegativo