Testes Unitários!
Testes que verificam o código escrito
Testes unitários!
O que são ?
Testes unitários!
O que são ?
Testes que verificam uma parte específica do código,
geralmente funções, em um ambiente orientado a objetos são
testados os comportamento das classes. O objetivo do teste
unitário é assegurar que cada unidade está funcionando de
acordo como deveria.
Os teste unitários, quando bem escritos, servem como uma
forma de documentação das funcionalidades do sistema.
Testes unitários!
Definindo a classe alvo - Game
class Game
## Define o get e o setter ao atributo "players"
attr_accessor :players
!
## Construtor
def initialize(players = [‘Terrorista’])
@players = players
end
end
Testes unitários!
Definindo a classe teste - TestGame
require_relative ‘Game'
class TestGame
## Testa se o número de players é 1 quando iniciada a classe
def test_have_1_player_on_create
@game = Game.new
if @game.players.size == 1
return true
else
return false
end
end
end
Testes unitários!
Definindo a classe teste - TestGame
require_relative ‘Game'
class TestGame
## Testa se o número de players é 1 quando iniciada a classe
def test_have_1_player_on_create
@game = Game.new
if @game.players.size == 1
return true ## Se é 1 returna true, passou no teste
else
return false ## Se não retorna false, falhou no teste
end
end
end
Testes unitários!
Definindo a classe teste - TestGame
require_relative ‘Game'
class TestGame
## Testa se o número de players é 1 quando iniciada a classe
def test_have_1_player_on_create
@game = Game.new
if @game.players.size == 1
return true
else
return false
end
end
end
Cria objeto
Game
Verifica se o atributo
players tem tamanho 1
Se sim retorna true
Se não retorna false
Testes unitários!
Testando
## Instancia da classe TestGame
@test = TestGame.new
!
## Executa o método "test_have_1_player_on_create"
@test.test_have_1_player_on_create()
## retorna true, passou no teste
!
## Porque ?
!
def initialize(players = [‘Terrorista’]) ## players tem 1 elemento, o 'Terrorista'
@players = players
end
Testes unitários!
Alterando o construtor e executando novamente:
## Altera o construtor para iniciar com o Array players vazio
def initialize(players = [])
@players = players
end
!
## Rodamos o teste novamente:
@test = TestGame.new
@test.test_have_1_player_on_create()
## => false, não passou no teste
Testes unitários!
Resumo
Criamos a classe Game que inicializa com 1 player,o Terrorista,
então escrevemos o teste para nos assegurar disso.
Testes unitários!
TDD (Desenvolvimento orientado a testes)
O TDD é uma metodologia de desenvolvimento em que
primeiro são escritos os testes unitários(de classes), e depois é
escrito o código em si, as classes e suas funções.
A principal vantagem do TDD é que ele facilita o rastreamento
do erro caso uma mudança ocasione um problema.
No exemplo codificamos nessa ordem:
Game.rb
TestGame.rb
No TDD:
Game.rb
TestGame.rb
Testes unitários!
Exemplo em C#, métodos soma e multiplicação
Testes unitários!
namespace calculadora
{
    public class Calculadora
    {
        int soma(int i, int j)
        {
            return i + j;
        }
        int multiplicacao(int i, int j)
        {
            return i * j;
        }
    }
}
Teste da função de multiplicação:
Testes unitários!
public void multiplicacaoTest()
{
    Calculadora_Accessor target = new Calculadora_Accessor();
    int i = 50;
    int j = 2;
    int expected = 100;
    int actual;
    actual = target.divisao(i, j);
    Assert.AreEqual(expected, actual);
}
Teste da função de soma
Testes unitários!
public void somaTest()
{
    Calculadora_Accessor target = new Calculadora_Accessor();
    int i = 50;
    int j = 2;
    int expected = 52;
    int actual;
    actual = target.divisao(i, j);
    Assert.AreEqual(expected, actual);
}
O 3 passos dos testes unitários!
!
1 - Criar a classe alvo e seus métodos
!
2 - Criar a classe teste e o teste de todos os métodos da classe alvo
!
3 - Executar os testes e checar se todos estão funcionando
corretamente, isto é, retornando verdadeiro.
!
OBS: No TDD primeiro os passos 2 e 1 são invertidos
Testes unitários!

Introdução aos testes unitários

  • 1.
    Testes Unitários! Testes queverificam o código escrito
  • 2.
  • 3.
    Testes unitários! O quesão ? Testes que verificam uma parte específica do código, geralmente funções, em um ambiente orientado a objetos são testados os comportamento das classes. O objetivo do teste unitário é assegurar que cada unidade está funcionando de acordo como deveria. Os teste unitários, quando bem escritos, servem como uma forma de documentação das funcionalidades do sistema.
  • 4.
    Testes unitários! Definindo aclasse alvo - Game class Game ## Define o get e o setter ao atributo "players" attr_accessor :players ! ## Construtor def initialize(players = [‘Terrorista’]) @players = players end end
  • 5.
    Testes unitários! Definindo aclasse teste - TestGame require_relative ‘Game' class TestGame ## Testa se o número de players é 1 quando iniciada a classe def test_have_1_player_on_create @game = Game.new if @game.players.size == 1 return true else return false end end end
  • 6.
    Testes unitários! Definindo aclasse teste - TestGame require_relative ‘Game' class TestGame ## Testa se o número de players é 1 quando iniciada a classe def test_have_1_player_on_create @game = Game.new if @game.players.size == 1 return true ## Se é 1 returna true, passou no teste else return false ## Se não retorna false, falhou no teste end end end
  • 7.
    Testes unitários! Definindo aclasse teste - TestGame require_relative ‘Game' class TestGame ## Testa se o número de players é 1 quando iniciada a classe def test_have_1_player_on_create @game = Game.new if @game.players.size == 1 return true else return false end end end Cria objeto Game Verifica se o atributo players tem tamanho 1 Se sim retorna true Se não retorna false
  • 8.
    Testes unitários! Testando ## Instanciada classe TestGame @test = TestGame.new ! ## Executa o método "test_have_1_player_on_create" @test.test_have_1_player_on_create() ## retorna true, passou no teste ! ## Porque ? ! def initialize(players = [‘Terrorista’]) ## players tem 1 elemento, o 'Terrorista' @players = players end
  • 9.
    Testes unitários! Alterando oconstrutor e executando novamente: ## Altera o construtor para iniciar com o Array players vazio def initialize(players = []) @players = players end ! ## Rodamos o teste novamente: @test = TestGame.new @test.test_have_1_player_on_create() ## => false, não passou no teste
  • 10.
    Testes unitários! Resumo Criamos aclasse Game que inicializa com 1 player,o Terrorista, então escrevemos o teste para nos assegurar disso.
  • 11.
    Testes unitários! TDD (Desenvolvimentoorientado a testes) O TDD é uma metodologia de desenvolvimento em que primeiro são escritos os testes unitários(de classes), e depois é escrito o código em si, as classes e suas funções. A principal vantagem do TDD é que ele facilita o rastreamento do erro caso uma mudança ocasione um problema.
  • 12.
    No exemplo codificamosnessa ordem: Game.rb TestGame.rb No TDD: Game.rb TestGame.rb Testes unitários!
  • 13.
    Exemplo em C#,métodos soma e multiplicação Testes unitários! namespace calculadora {     public class Calculadora     {         int soma(int i, int j)         {             return i + j;         }         int multiplicacao(int i, int j)         {             return i * j;         }     } }
  • 14.
    Teste da funçãode multiplicação: Testes unitários! public void multiplicacaoTest() {     Calculadora_Accessor target = new Calculadora_Accessor();     int i = 50;     int j = 2;     int expected = 100;     int actual;     actual = target.divisao(i, j);     Assert.AreEqual(expected, actual); }
  • 15.
    Teste da funçãode soma Testes unitários! public void somaTest() {     Calculadora_Accessor target = new Calculadora_Accessor();     int i = 50;     int j = 2;     int expected = 52;     int actual;     actual = target.divisao(i, j);     Assert.AreEqual(expected, actual); }
  • 16.
    O 3 passosdos testes unitários! ! 1 - Criar a classe alvo e seus métodos ! 2 - Criar a classe teste e o teste de todos os métodos da classe alvo ! 3 - Executar os testes e checar se todos estão funcionando corretamente, isto é, retornando verdadeiro. ! OBS: No TDD primeiro os passos 2 e 1 são invertidos Testes unitários!