Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução aos testes unitários automatizados c...

Introdução aos testes unitários automatizados com NUnit e C#

Carlos Schults

August 18, 2017
Tweet

More Decks by Carlos Schults

Other Decks in Programming

Transcript

  1. - Testes Automatizados: Motivação - Problemas comuns com testes manuais

    - Dificuldades na Engenharia de Software - Panorama geral de testes automatizados - Testes Unitários com NUnit - Finalizando - Dúvidas comuns ao iniciar com teste unitário - Materiais de referência - Conclusão
  2. “[...] automação de teste é o uso de software especial

    (separado do software sendo testado) para controlar a execução de testes e comparação dos resultados obtidos com os resultados previstos.” https://en.wikipedia.org/wiki/Test_automation
  3. “[...] automação de teste é o uso de software especial

    (separado do software sendo testado) para controlar a execução de testes e comparação dos resultados obtidos com os resultados previstos.” https://en.wikipedia.org/wiki/Test_automation
  4. “Um teste de unidade é um trecho de código automatizado

    que chama a unidade de trabalho sendo testada, e então checa algumas suposições sobre um único resultado final desta unidade. “ Roy Osherove, em The Art of Unit Testing With Examples In C#
  5. “Um teste de unidade é um trecho de código automatizado

    que chama a unidade de trabalho sendo testada, e então checa algumas suposições sobre um único resultado final desta unidade. “ Roy Osherove, em The Art of Unit Testing With Examples In C#
  6. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede •Interage com o sistema de arquivos •Não pode ser executado ao mesmo tempo que outros testes •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  7. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede •Interage com o sistema de arquivos •Não pode ser executado ao mesmo tempo que outros testes •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  8. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede. •Interage com o sistema de arquivos •Não pode ser executado ao mesmo tempo que outros testes •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  9. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede. •Interage com o sistema de arquivos. •Não pode ser executado ao mesmo tempo que outros testes •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  10. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede. •Interage com o sistema de arquivos. •Não pode ser executado ao mesmo tempo que outros testes. •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  11. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede. •Interage com o sistema de arquivos. •Não pode ser executado ao mesmo tempo que outros testes. •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  12. Um teste não é unitário se: •Interage com o banco

    de dados. •Se comunica através da rede. •Interage com o sistema de arquivos. •Não pode ser executado ao mesmo tempo que outros testes. •Você precisa fazer coisas especiais no seu ambiente (tal como editar arquivos de configuração) para executá-lo. Michael C. Feathers, autor de Trabalho Eficaz com Código Legado
  13. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Deve executar rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  14. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Deve executar rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  15. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Deve executar rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  16. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  17. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  18. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  19. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  20. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  21. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  22. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão.
  23. Propriedades de um bom teste de unidade: •É automatizado e

    repetível. •É fácil de implementar. •Executa rapidamente. •Ainda será relevante amanhã. •Qualquer um pode executar clicando em um botão. •É consistente em seus resultados. •Tem total controle da unidade sob teste. •É completamente isolado de outros testes. •Quando falha, é fácil de identificar a razão. Roy Osherove, em The Art of Unit Testing With Examples In C#
  24. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais devem ser abolidos?
  25. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins?
  26. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins? Verificando a mudança de estado causada por ele. testar
  27. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins?
  28. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins?
  29. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •Vendo o teste falhar.
  30. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •Mantendo os testes simples e sem lógica.
  31. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •Utilizando revisão de código.
  32. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •Utilizando testes de mutação.
  33. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •Não repetindo a implementação nos testes.
  34. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins?
  35. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que não deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins?
  36. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que não deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins? Código trivial, como atribuição.
  37. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que não deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins? Linguagem/Framework.
  38. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que não deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins? Código que você não pode corrigir.
  39. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que não deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins? Código gerado automaticamente.
  40. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais são ruins?
  41. •Como testar métodos sem retorno (void)? •Como testar métodos privados?

    •Como saber que o teste está certo? •O que deve ser testado? •Quem deve escrever os testes? •Testes manuais devem ser abolidos?