O documento discute testes unitários, explicando que eles testam o comportamento de métodos sob diferentes condições de entrada para garantir que funcionam conforme o esperado. Oferece exemplos de métodos que poderiam ser testados, como cálculo de imposto, cadastro de usuário, soma, depósito bancário e liberação de prova do Detran.
2. Recapitulando
Como sabemos o uso de testes nos auxilia em dois pontos:
Saber se o software está conforme os requisitos do cliente
Identificar se não há comportamentos anormais
Há diferentes formas de testar, cada uma focando em diferentes
partes de nosso software
Unitários
Integração
Sistema
Aceitação
3. Testes unitários
Um dos primeiros testes que podemos realizar ocorrem durante a
escrita do código-fonte
Estes testes são realizados pelos desenvolvedores e recebem o
nome de testes unitários, pois focam na menor parte testável do
sistema, chamadas de unidades
Para sistemas O.O. podemos considerar a menor parte do sistema
como sendo nossas classes e/ou métodos
Estamos interessados em avaliar se o retorno de nossos métodos
estão de acordo com as expectativas
4. Definição de testes unitários
Estamos interessados em avaliar como
nossos métodos se comportam sob
diferentes condições de uso. Variando
argumentos passados, analisando seu
Estamos interessados em isolar o
comportamento de cada método, em condições normais ou
comportamento
independente de classesem situações de exceção
e/ou
outros métodos
“Teste unitário examina o comportamento de uma
unidade distinta de trabalho”
Massol, Vincent (Junit
in Action)
5. Realizem os testes nos seguintes
métodos
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
Cadastro de pessoa – boolean cadastrar(Pessoa p)
O método deve retornar TRUE em caso do objeto ser salvo com
sucesso, FALSE em caso contrário
6. Utilizando testes unitários
Utilizamos testes unitários para avaliar o comportamento de
métodos (sua saída/retorno) diante de determinadas entradas
Por muitas vezes não fazemos as verificações necessárias,
fazendo as considerações para diferentes entradas para nossos
métodos
Esta verificação deve ser feita de forma individual e
independente, ou seja, durante um teste um método não pode
depender de outros ou de outras classes (mocks e stubs).
7. Testes unitários na prática
1. Identificamos os métodos que iremos testar
2. Definimos as entradas possíveis para uma condição de
sucesso e para uma condição de falha
3. Inserimos estes valores e verificamos o retorno de nosso
método
8. Identifiquem os possíveis testes
Método para realizar soma
Recebe como entrada dois números
Retorna o resultado da soma
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
9. Identifiquem os possíveis testes
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
10. Exercício para casa
Testar o método para discar para um número de telefone
O método aceita uma string como argumento
O método retorna um flutuante maior que zero quando o número
estiver correto, ou zero em caso contrário
O número deve estar no formato (XX)XXXX-XXXX
Utilizem expressões regulares
Notas do Editor
Implementarcolocandotodososvalores. Imposto -> colocarosvaloresassumidos e tambémcolocar um valor 0 ounegativo | Avaliarretorno
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
Quaisseriamospossívels testes para a primeiracondição? (82)3033-2267 [sucesso] / (123) 1234-3456 [falha] / 1234-3456 [falha] / (82) 30332267 [falha] / null [falha]Testes para a segundacondição? 20, 100 [sucesso] / 20, 10 [ falha ] / 0, 0 [falha] (O métododeveaceitar o saquecaso o saldosejamaiorouigual)