Testes unitários
  Prof. Leonardo Soares




  Campus Garanhuns
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
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
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)
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
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).
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
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
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
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

Introdução a testes unitários

  • 1.
    Testes unitários Prof. Leonardo Soares Campus Garanhuns
  • 2.
    Recapitulando Como sabemos ouso 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 dosprimeiros 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 testesunitá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 testesnos 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 Utilizamostestes 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 naprá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íveistestes 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íveistestes 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 Testaro 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

  • #6 Implementarcolocandotodososvalores. Imposto -> colocarosvaloresassumidos e tambémcolocar um valor 0 ounegativo | Avaliarretorno
  • #7 Fornecerexemplospara o ponto 1)
  • #8 Quaismétodosdevemsertestados?Como podemosfazeristo?
  • #9 Testes primeiroponto: quaisquernúmeros, verifiquem se o métodoretorna o valor correto. Incluamvalorescorretos e vejam se osretornossãooscorretosTestes segundoponto: númeropositivomaiorque zero, zero, negativo
  • #10 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
  • #11 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)