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

A real importância de testes unitários e como f...

A real importância de testes unitários e como fazê-los em elixir

Talk online apresentada no dia 29/03/2022 na Unigrande.
Nesta, o tive o intuito de compartilhar um pouco sobre testes unitários e como utilizar em elixir.
Abordei um pouco da linguagem e do conceito de testes automatizados com foco nos testes unitários.

Allef Gomes

March 29, 2022
Tweet

More Decks by Allef Gomes

Other Decks in Programming

Transcript

  1. Sobre testes… • Os sistemas, funções e trechos de código,

    todos eles têm uma entrada e uma saída prevista/desejada. Para garantir que o sistema funciona corretamente são necessário testes, manuais ou automatizados, que verificam a entrada e saída, garantindo sua previsibilidade.
  2. Sempre testamos? • Sim… Sempre utilizamos testes sejam manuais (pelo

    cliente, testers ou mesmo pelo próprio desenvolvedor) ou automatizados (códigos testando códigos). • Com a automatização dos testes, não temos mais somente uma ferramenta para detecção de bugs, temos um sistema com classes de teste que testam as classes do sistema.
  3. Teste de unidades (teste unitário) • Testes de unidade verificam

    automaticamente pequenas partes de um código, normalmente uma classe, apenas. Eles formam a base da pirâmide, ou seja, a maior parte dos testes estão nessa categoria. Testes de unidade são simples, mais fáceis de implementar e executam rapidamente.
  4. Testes de integrações / serviços • Testes de integrações ou

    testes de serviços, que verificam uma funcionalidade ou transação completa de um sistema. Logo, são testes que usam diversas classes, de pacotes distintos, e podem ainda testar componentes externos, como bancos de dados. Testes de integração demandam mais esforço para serem implementados e executam de forma mais lenta.
  5. Testes de sistema / interface com o usuário • Simulam,

    da forma mais fiel possível, uma sessão de uso do sistema por um usuário real. Como são testes de ponta a ponta (end-to-end), eles são mais caros, mais lentos e menos numerosos. Testes de interface costumam ser também frágeis, isto é, mínimas alterações nos componentes da interface podem demandar modificações nesses testes.
  6. Por que testamos (sua real importância)? • Provar que nosso

    código faz o que deve fazer (serve de documentação) • Prevenir breaking changes • Encontrar de maneira fácil onde nosso código quebra • Escrever a menor quantidade de código de teste possível, sem comprometer com a qualidade dos testes
  7. Estrutura de um teste unitário 1. Configuração (setup) 2. Exercício

    (exercise) 3. Verificação (verify) 4. Desconstrução (teardown)
  8. Por que elixir para esta talk? • Linguagem Funcional •

    Linguagem brasileira (criada por José Valim) • Já temos as configurações de testes pré-definidas • Para conhecermos uma linguagem bacana de escrever e apta para sistemas de grande porte pois utiliza a VM do erlang, o que trás consigo uma série de vantagens como concorrência, paralelismo, tolerante a falhas, entre outras…
  9. Por que elixir para esta talk? • Linguagem Funcional •

    Linguagem brasileira (criada por José Valim) • Já temos as configurações de testes pré-definidas • Para conhecermos uma linguagem bacana de escrever e apta para sistemas de grande porte pois utiliza a VM do erlang, o que trás consigo uma série de vantagens como concorrência, paralelismo, tolerante a falhas, entre outras…