16
Testes Unitários Testes que verificam o código escrito

Introdução aos testes unitários

Embed Size (px)

Citation preview

Page 1: Introdução aos testes unitários

Testes Unitários!

Testes que verificam o código escrito

Page 2: Introdução aos testes unitários

Testes unitários!

O que são ?

Page 3: Introdução aos testes unitários

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.

Page 4: Introdução aos testes unitários

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

Page 5: Introdução aos testes unitários

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

Page 6: Introdução aos testes unitários

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

Page 7: Introdução aos testes unitários

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

Page 8: Introdução aos testes unitários

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

Page 9: Introdução aos testes unitários

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

Page 10: Introdução aos testes unitários

Testes unitários!

ResumoCriamos a classe Game que inicializa com 1 player,o Terrorista, então escrevemos o teste para nos assegurar disso.

Page 11: Introdução aos testes unitários

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.

Page 12: Introdução aos testes unitários

No exemplo codificamos nessa ordem:

Game.rbTestGame.rb

No TDD:

Game.rbTestGame.rb

Testes unitários!

Page 13: Introdução aos 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;

        }

    }

}

Page 14: Introdução aos testes unitários

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);

}

Page 15: Introdução aos testes unitários

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);

}

Page 16: Introdução aos testes unitários

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!