1° Madrugada de Testes
  Dormir é para os FRACOS !!!
O que é Teste de Software ?

Processo de verificação do software onde a principal
finalidade é detectar problemas

 •   Os testes devem ser realizados em todos os
     sistemas, independente da
     plataforma, ambiente, tecnologia ou linguagem de
     programação
Benefícios do Teste de Software

  • Garantir que o sistema funciona
  • Garantir que está fazendo tudo que deveria fazer
  • Detectar problemas
  • Melhorar performance
  • Melhorar qualidade do código
  • Melhorar a usabilidade do sistema




Testes fazem parte do ciclo do desenvolvimento de software
Se o software falhar…
Eles também erram…       Herar é umano !!!




Faça testes e erre menos
O que Testar ?

  TUDO… independente da
  (complexidade, quantidade de linhas ou cenário)

    • Telas
    • Camadas
    • Validações e Consistências
    • Regras de Negócio
    • Arquivos, Banco de Dados     (Abertura, Pedido, Resposta)




O que você NÃO testar PODERÁ ocasionar um erro no FUTURO
Modelos de Teste

    •   Manual
         Uma pessoa vai testar o software
          Conferência do Código (Pessoa Técnica)
          Depuração                (BreakPoints)
          Evidência                (PrintScreen)



    •   Automático
         Um programa de computador vai testar o software
          Código que Testa Código (Robo de Testes)
          Próprio Desenvolvedor pode criar o Robo


    Testes Manuais são demorados (Conferência do Código) e mais
    caros R$ R$ (Precisa de uma Pessoa Técnica pra Conferir)
Existem muitas empresas que AINDA utilizam testes Manuais
Ferramentas de Teste

Existem frameworks de teste que nos ajudam a testar
os nossos sistemas de forma automatizada

 • INTERFACE VISUAL - SELENIUM, WATIN
 • CÓDIGO            - NUNIT
        VISUAL STUDIO UNIT TEST FRAMEWORK
Visual Studio Unit Test Framework

• Framework de testes da Microsoft
• Disponível desde o Visual Studio 2005


• Os testes criados rodam de 2 formas
  • Gráfica (IDE Visual Studio)
  • Código (MSTest.exe)


• Atributos que decoram as classes e métodos
• Definido no assembly
  Microsoft.VisualStudio.QualityTools.UnitTestFramework
Resumo e apelidos carinhosos



         TEST SUITE            SYSTEM UNDER TEST
                                      SUT

          PROJETO
            DE                     SISTEMA
           TESTE
Demonstração

1   Visualizando os 3 Modelos de Projetos de Teste (Coded, Web and Load, Unit)


2   Criando um Projeto de Teste (Unit Test)


3   Visualizando a Referência e Namespace do Projeto


4   Conhecendo a Classe de Teste UNITTEST1


5   Conhecendo o Método de Teste TESTMETHOD1


6   Conhecendo a Janela Test Explorer
ABC dos Testes

1.   Analise o SUT e verifique quais unidades você quer testar
2.   No TEST SUITE crie classes e métodos de teste
3.   Execute os testes até que todos fiquem VERDES

OBS: Caso o teste fique vermelho (FALHOU) foi retornada
alguma informação que você não estava esperando,
modificar o código ATÉ QUE O TESTE FIQUE VERDE

DE QUANTO EM QUANTO TEMPO IREMOS EXECUTAR A
SUITE DE TESTES ????

Sempre que algum desenvolvedor alterar o SUT !!!
Demonstração

1   Conhecendo a Classe Assert (AreEqual, AreNotEqual……..)


2   Criando um Método para Testar o Nome, Email e Idade


3   Fazer os Testes Falharem (VERMELHO)


4   Fazer os Testes Falharem (VERMELHO) COM MENSAGEM DESCRITIVA


5   Fazer os Testes Passarem (VERDE)


6   Fazer um Teste ficar Inconclusivo (INCONCLUSIVE)


7   Fazer um Teste Falhar de Propósito (FAIL)
Divisão do Teste

Todo teste é dividido em 3 etapas

 •   Arrange - Preparação do Teste
      •   Instância as classe que vai usar no teste
      •   Prepara a massa de dados


 •   Act - Unidade que vai ser Testada
      •   Execução das funcionalidades do SUT


 •   Assert - Verificação de Resultados
      •   Conferência de resultados (se o que foi retornado do SUT era o
          que você estava esperando que retornasse)
Demonstração

1   Criando um Componente Matemático


2   Criando as Classes (Calculadora e Numeros)


3   Calculadora=> Codificando as Operações Aritméticas Básicas


4   Numeros=> Codificando as Operações Matemáticas


5   Visualizando os 3 Modelos de Projetos de Teste (Coded, Unit, Web and Load)


6   Criando um Projeto de Teste (Unit Test)


7   Criando Métodos de Teste para Testar as Operações Aritméticas


8   Criando a Classe de Teste NumerosTST


9   Criando Métodos de Teste para Testar as Operações Matemáticas
Triangulação

  Técnica de gerar vários testes para testar o mesmo
  comportamento de uma classe

    • Redundante… e isso é muito bom !!!
    • Testar ao máximo todas as possibilidades de entrada




Quanto MAIS você Triangular MELHOR !!!
Exemplo de Triangulação

    [TestMethod]
    public void TESTAR_SOMA()
    {
        Calculadora classe = new Calculadora();
        Int32 resultado = classe.Somar(1, 1);

        Assert.AreEqual(2, resultado, "O resultado deveria ser 2");
    }

    [TestMethod]
    public void TESTAR_SOMA_NUMEROS_ALTOS()
    {
        Calculadora classe = new Calculadora();
        Int32 resultado = classe.Somar(3000, 9000);

        Assert.AreEqual(12000, resultado, "O resultado deveria ser 12000");
    }

    [TestMethod]
    public void TESTAR_SOMA_NUMEROS_NEGATIVOS()
    {
        Calculadora classe = new Calculadora();
        Int32 resultado = classe.Somar(-250, 500);

        Assert.AreEqual(250, resultado, "O resultado deveria ser 250");
    }
Demonstração

1   Triangulando as Operações Aritméticas


2   Triangulando as Operações Matemáticas
Cobertura de Código        (Code Coverage)

  Técnica que identifica quais linhas de código
                NÃO FORAM TESTADAS

    • Mostra para o desenvolvedor o que falta testar no SUT
    • As linhas de código que não estiverem cobertas por
      testes, ficarão na cor VERMELHA, a idéia é testar tudo, o
      correto seria que todas as linhas ficassem na cor VERDE




O que você NÃO testar PODERÁ ocasionar um erro no FUTURO
Demonstração

    Alterando as Operações Aritméticas para Retornar ZERO, caso algum
1   Parâmetro de Entrada seja Igual a ZERO


2   Aplicando a Cobertura de Código nos Testes Aritméticos
Laboratório

Codificar o projeto de clientes e colocar em prática
tudo que você aprendeu até agora…

 1. Crie um projeto utilizando Repository e DTO
 2. Simule os registros com NBUILDER
 3. Crie o projeto de teste
 4. Crie as classes e métodos de teste
 5. Faça as triangulações
 6. Aplique a cobertura de código




 OS MÉTODOS DA SUITE DE TESTE DEVEM FICAR VERDES

1° Madrugada de Testes

  • 1.
    1° Madrugada deTestes Dormir é para os FRACOS !!!
  • 2.
    O que éTeste de Software ? Processo de verificação do software onde a principal finalidade é detectar problemas • Os testes devem ser realizados em todos os sistemas, independente da plataforma, ambiente, tecnologia ou linguagem de programação
  • 3.
    Benefícios do Testede Software • Garantir que o sistema funciona • Garantir que está fazendo tudo que deveria fazer • Detectar problemas • Melhorar performance • Melhorar qualidade do código • Melhorar a usabilidade do sistema Testes fazem parte do ciclo do desenvolvimento de software
  • 4.
    Se o softwarefalhar…
  • 5.
    Eles também erram… Herar é umano !!! Faça testes e erre menos
  • 6.
    O que Testar? TUDO… independente da (complexidade, quantidade de linhas ou cenário) • Telas • Camadas • Validações e Consistências • Regras de Negócio • Arquivos, Banco de Dados (Abertura, Pedido, Resposta) O que você NÃO testar PODERÁ ocasionar um erro no FUTURO
  • 7.
    Modelos de Teste • Manual Uma pessoa vai testar o software  Conferência do Código (Pessoa Técnica)  Depuração (BreakPoints)  Evidência (PrintScreen) • Automático Um programa de computador vai testar o software  Código que Testa Código (Robo de Testes)  Próprio Desenvolvedor pode criar o Robo Testes Manuais são demorados (Conferência do Código) e mais caros R$ R$ (Precisa de uma Pessoa Técnica pra Conferir) Existem muitas empresas que AINDA utilizam testes Manuais
  • 8.
    Ferramentas de Teste Existemframeworks de teste que nos ajudam a testar os nossos sistemas de forma automatizada • INTERFACE VISUAL - SELENIUM, WATIN • CÓDIGO - NUNIT VISUAL STUDIO UNIT TEST FRAMEWORK
  • 9.
    Visual Studio UnitTest Framework • Framework de testes da Microsoft • Disponível desde o Visual Studio 2005 • Os testes criados rodam de 2 formas • Gráfica (IDE Visual Studio) • Código (MSTest.exe) • Atributos que decoram as classes e métodos • Definido no assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework
  • 10.
    Resumo e apelidoscarinhosos TEST SUITE SYSTEM UNDER TEST SUT PROJETO DE SISTEMA TESTE
  • 11.
    Demonstração 1 Visualizando os 3 Modelos de Projetos de Teste (Coded, Web and Load, Unit) 2 Criando um Projeto de Teste (Unit Test) 3 Visualizando a Referência e Namespace do Projeto 4 Conhecendo a Classe de Teste UNITTEST1 5 Conhecendo o Método de Teste TESTMETHOD1 6 Conhecendo a Janela Test Explorer
  • 12.
    ABC dos Testes 1. Analise o SUT e verifique quais unidades você quer testar 2. No TEST SUITE crie classes e métodos de teste 3. Execute os testes até que todos fiquem VERDES OBS: Caso o teste fique vermelho (FALHOU) foi retornada alguma informação que você não estava esperando, modificar o código ATÉ QUE O TESTE FIQUE VERDE DE QUANTO EM QUANTO TEMPO IREMOS EXECUTAR A SUITE DE TESTES ???? Sempre que algum desenvolvedor alterar o SUT !!!
  • 13.
    Demonstração 1 Conhecendo a Classe Assert (AreEqual, AreNotEqual……..) 2 Criando um Método para Testar o Nome, Email e Idade 3 Fazer os Testes Falharem (VERMELHO) 4 Fazer os Testes Falharem (VERMELHO) COM MENSAGEM DESCRITIVA 5 Fazer os Testes Passarem (VERDE) 6 Fazer um Teste ficar Inconclusivo (INCONCLUSIVE) 7 Fazer um Teste Falhar de Propósito (FAIL)
  • 14.
    Divisão do Teste Todoteste é dividido em 3 etapas • Arrange - Preparação do Teste • Instância as classe que vai usar no teste • Prepara a massa de dados • Act - Unidade que vai ser Testada • Execução das funcionalidades do SUT • Assert - Verificação de Resultados • Conferência de resultados (se o que foi retornado do SUT era o que você estava esperando que retornasse)
  • 15.
    Demonstração 1 Criando um Componente Matemático 2 Criando as Classes (Calculadora e Numeros) 3 Calculadora=> Codificando as Operações Aritméticas Básicas 4 Numeros=> Codificando as Operações Matemáticas 5 Visualizando os 3 Modelos de Projetos de Teste (Coded, Unit, Web and Load) 6 Criando um Projeto de Teste (Unit Test) 7 Criando Métodos de Teste para Testar as Operações Aritméticas 8 Criando a Classe de Teste NumerosTST 9 Criando Métodos de Teste para Testar as Operações Matemáticas
  • 16.
    Triangulação Técnicade gerar vários testes para testar o mesmo comportamento de uma classe • Redundante… e isso é muito bom !!! • Testar ao máximo todas as possibilidades de entrada Quanto MAIS você Triangular MELHOR !!!
  • 17.
    Exemplo de Triangulação [TestMethod] public void TESTAR_SOMA() { Calculadora classe = new Calculadora(); Int32 resultado = classe.Somar(1, 1); Assert.AreEqual(2, resultado, "O resultado deveria ser 2"); } [TestMethod] public void TESTAR_SOMA_NUMEROS_ALTOS() { Calculadora classe = new Calculadora(); Int32 resultado = classe.Somar(3000, 9000); Assert.AreEqual(12000, resultado, "O resultado deveria ser 12000"); } [TestMethod] public void TESTAR_SOMA_NUMEROS_NEGATIVOS() { Calculadora classe = new Calculadora(); Int32 resultado = classe.Somar(-250, 500); Assert.AreEqual(250, resultado, "O resultado deveria ser 250"); }
  • 18.
    Demonstração 1 Triangulando as Operações Aritméticas 2 Triangulando as Operações Matemáticas
  • 19.
    Cobertura de Código (Code Coverage) Técnica que identifica quais linhas de código NÃO FORAM TESTADAS • Mostra para o desenvolvedor o que falta testar no SUT • As linhas de código que não estiverem cobertas por testes, ficarão na cor VERMELHA, a idéia é testar tudo, o correto seria que todas as linhas ficassem na cor VERDE O que você NÃO testar PODERÁ ocasionar um erro no FUTURO
  • 20.
    Demonstração Alterando as Operações Aritméticas para Retornar ZERO, caso algum 1 Parâmetro de Entrada seja Igual a ZERO 2 Aplicando a Cobertura de Código nos Testes Aritméticos
  • 21.
    Laboratório Codificar o projetode clientes e colocar em prática tudo que você aprendeu até agora… 1. Crie um projeto utilizando Repository e DTO 2. Simule os registros com NBUILDER 3. Crie o projeto de teste 4. Crie as classes e métodos de teste 5. Faça as triangulações 6. Aplique a cobertura de código OS MÉTODOS DA SUITE DE TESTE DEVEM FICAR VERDES