Slide 1

Slide 1 text

Testes unitários com ExUnit …

Slide 2

Slide 2 text

Sobre mim…

Slide 3

Slide 3 text

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. ❏ Sempre utilizamos testes; sejam manuais (pelo cliente, testadores ou mesmo pelo próprio desenvolvedor) ou automatizados (códigos testando códigos). ❏ No caso do elixir, com a automatização de testes, temos módulos que testam módulos.

Slide 4

Slide 4 text

Cadeia de testes automatizados

Slide 5

Slide 5 text

Testes automatizados… ❏ Testes unitários / de unidade ❏ Testes de unidade verificam automaticamente pequenas partes de um código, normalmente uma classe um módulo, aferindo sempre a qualidade do código. ❏ Testes de integrações / serviços ❏ São testes que usam diversas classes, de pacotes distintos, e podem ainda testar componentes externos, como bancos de dados. ❏ 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.

Slide 6

Slide 6 text

Testes unitários

Slide 7

Slide 7 text

Por que testamos? ❏ 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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

ExUnit ❏ Framework para testes unitários em elixir ❏ Bastante simples de configurar.

Slide 10

Slide 10 text

Vamos pro código…

Slide 11

Slide 11 text

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/