SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
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!

Weitere ähnliche Inhalte

Ähnlich wie Introdução aos testes unitários

Testes unitários e de integração: Quando e Porque
Testes unitários e de integração: Quando e PorqueTestes unitários e de integração: Quando e Porque
Testes unitários e de integração: Quando e PorqueTiago Albineli Motta
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentRodrigo Alves Vieira
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpecEduardo Mendes
 
O que você precisa saber sobre testes unitários
O que você precisa saber sobre testes unitáriosO que você precisa saber sobre testes unitários
O que você precisa saber sobre testes unitáriosFilipe M. Silva
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...
GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...
GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...João Clineu - CTFL, CSM, CSD
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de SoftwareMaurício Aniche
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 

Ähnlich wie Introdução aos testes unitários (20)

Testes unitários e de integração: Quando e Porque
Testes unitários e de integração: Quando e PorqueTestes unitários e de integração: Quando e Porque
Testes unitários e de integração: Quando e Porque
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Python com TDD
Python com TDDPython com TDD
Python com TDD
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpec
 
O que você precisa saber sobre testes unitários
O que você precisa saber sobre testes unitáriosO que você precisa saber sobre testes unitários
O que você precisa saber sobre testes unitários
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...
GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...
GDG DevFest Norte 2016 - Testando Jogos: Passe o dia jogando e ainda receba p...
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
JUnit
JUnitJUnit
JUnit
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
TDD Primeiro Contato
TDD Primeiro ContatoTDD Primeiro Contato
TDD Primeiro Contato
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com Java
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 

Introdução aos testes unitários

  • 1. Testes Unitários! Testes que verificam o código escrito
  • 3. 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.
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. Testes unitários! Resumo Criamos a classe Game que inicializa com 1 player,o Terrorista, então escrevemos o teste para nos assegurar disso.
  • 11. 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.
  • 12. No exemplo codificamos nessa 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çã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); }
  • 15. 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); }
  • 16. 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!