$30 off During Our Annual Pro Sale. View Details »

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

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. A real importância de testes unitários e como
    fazê-los em elixir

    View Slide

  2. Sobre mim

    View Slide

  3. 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.

    View Slide

  4. 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.

    View Slide

  5. Tipos de testes automatizados

    View Slide

  6. 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.

    View Slide

  7. 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.

    View Slide

  8. 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.

    View Slide

  9. 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

    View Slide

  10. Estrutura de um teste unitário
    1. Configuração (setup)
    2. Exercício (exercise)
    3. Verificação (verify)
    4. Desconstrução (teardown)

    View Slide

  11. 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…

    View Slide

  12. 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…

    View Slide

  13. Referências

    https://engsoftmoderna.info/cap8.html

    https://pragprog.com/titles/lmelixir/testing-elixir/

    https://elixir-lang.org/docs.html

    https://hexdocs.pm/ex_unit/1.12/ExUnit.html

    https://elixirschool.com/en/

    View Slide

  14. Let’s code…

    View Slide